¿Cómo cambiar el campo "De:" para los correos electrónicos de Cron?

Respuestas:

13

No creo que pueda cambiar la dirección DE (alguien debería agregar una opción MAILFROM).

Sin embargo, puede hacer algo como esto para lograr un resultado similar:

* * * * * /path/to/script 2>&1 | mail -s "Output of /path/to/script" [email protected] -- -r "[email protected]" -F"Full Name of sender"

Toda la salida se canaliza al comando de correo, por lo que la variable MAILTO no se usa en absoluto.

Debería establecerse la dirección a, pero es posible que pueda usar la variable $ MAILTO. El - configura el resto de las opciones como opciones de envío de correo para que pueda usar las opciones -r y -F.

-s es el tema

-r es la dirección de respuesta

-F es el nombre completo del remitente (hace que se vea bien en los clientes de correo electrónico)

Richard Holloway
fuente
serverfault.com/a/437319/30697 probablemente debería ser la respuesta aceptada.
lkraav
34

Las versiones modernas de cron aceptan "MAILFROM = ..." en el formato crontab. Te sugiero que pruebes "man 5 crontab". Si menciona MAILFROM, su versión debería ser compatible. La frase a buscar está hacia el final del párrafo que trata sobre MAILTO, y debería ser algo como esto:

If MAILFROM is defined (and non-empty), it will be used as the envelope sender address, otherwise, ''root'' will be used.

Jon Green
fuente
66
¿Dónde "moderno" significa qué? Esto no es compatible con la versión más reciente de cron en Debian inestable (3.0pl1-124) por lo que puedo ver en el registro de cambios o la documentación.
Flimzy
Gracias, esto funcionó para mí en Archlinux. Hay muchos sabores diferentes de cron. El ISC de Debian es de 2004, por lo que ampliar la definición de "moderno", pero sin información sobre en qué sistema se está utilizando, ¡es difícil proporcionar ese detalle!
RuiDC
1
Desafortunadamente, el cron de Ubuntu (al menos a partir de 14.04 LTS) no tiene mención MAILFROMen man 5 crontab.
Arto Bendiken
44
Puede instalar croniepara reemplazar cronen Debian / Ubuntu. Ta-daa: MAILFROMexiste:
Andreas Klöckner
1
cronie no existe en Ubuntu 16.04
alex k
7

/ etc / mailname contiene la parte del nombre de dominio de la dirección FROM. Si / etc / mailname contiene 'somecompany.com', el cron que se ejecuta para root tendría un remitente como [email protected]

usuario171601
fuente
2
Alguna información aquí: wiki.debian.org/EtcMailName - no dice si nullmailer lo usa. Yo uso sendmail y no parecía funcionar para ello.
Zitrax
5

Puede establecer el nullmailer desde la dirección a través de variables de entorno o línea de comandos. Los argumentos de la línea de comando son -fy -Fpara la dirección del remitente y el nombre completo, respectivamente.

Por lo general, puede establecer variables de entorno en el crontab.

NULLMAILER_USER=webmaster
NULLMAILER_HOST=host.example.com
NULLMAILER_NAME="Mr Cron"

5 0 * * * /usr/local/bin/daily.sh
Lachlan Roche
fuente
Él pregunta sobre DE: no PARA:
Kimvais
Hm, esto no funciona por razones desconocidas.
Alexander Artemenko
3

Para mí, la forma más fácil de cambiar la dirección de origen en un sistema es crear un ~/.mailrcarchivo con contenido como este:

set name="My Full Name"
set from="[email protected]"

Cualquiera de los mailcomandos que se ejecutan como mi usuario ahora usa esta configuración.

Niels de Vos
fuente
0

Otra alternativa simple es usar mutt,

  • cree un .muttrc en el directorio de inicio del usuario que ejecuta cron con lo siguiente

    set realname = "Joe User" set from = "user @ host" set use_from = yes

  • Ejecute una secuencia de comandos con el comando mutt o canalice el comando cron para mutt y enviar correo electrónico.

Antes de que mutt envíe y envíe un correo electrónico, establecerá el encabezado From del archivo .muttrc.

Chida
fuente
0

Tuve que cambiar /etc/mail/sendmail.cfy /etc/mail/sendmail.mc, porque /etc/mailnameno se usó. Sin embargo, solo cambia el dominio del dominio, no el usuario.

Rudie
fuente
0

Aquí hay algunas cosas que puede aplicar para cambiar su dominio de remitente:

Edit this file: /etc/mailname and change to:
    example.org
sudo postconf -e 'myhostname= example.org'
sudo systemctl restart postfix
Tarik
fuente
-2

se envía por correo desde el usuario @ dominio: el usuario es el nombre de inicio de sesión con el que se ejecuta el cron, por lo que tendría que crear un usuario 'yo' y ejecutar el trabajo cron como ese usuario.

Luego, para cambiar el dominio, hay diferentes posibilidades: podría ser que necesite cambiar la entrada del archivo de hosts (o, como en mi máquina, cuando estaba configurando esto, un cuadro de ubuntu), cambiar / etc / mailname - para ser el dominio del que quieres que provenga.

Kem Mason
fuente
1
Esto no es realmente cierto, al menos no en muchos casos. En mi sistema, por ejemplo, solo se envía desde 'usuario', no 'usuario @ dominio'. Es responsabilidad del MTA agregar el nombre de dominio local. Esto es significativo en algunos casos (como el mío) donde mi MTA (por razones demasiado complicadas y aburridas para describir) no agrega el nombre de dominio.
Flimzy