Como alterar o campo "De:" para e-mails do Cron?

Respostas:

13

Eu não acho que você possa alterar o endereço FROM (alguém deve adicionar uma opção MAILFROM).

Você pode fazer algo assim para obter um resultado semelhante:

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

Toda a saída é canalizada para o comando mail, para que a variável MAILTO não seja usada.

O endereço para precisa ser definido, mas você poderá usar a variável $ MAILTO. O - define o restante das opções como opções do sendmail, para que você possa usar as opções -r e -F.

-s é o assunto

-r é o endereço de resposta

-F é o nome completo do remetente (faz com que pareça agradável em clientes de email)

Richard Holloway
fonte
serverfault.com/a/437319/30697 provavelmente deve ser a resposta Aceita.
lkraav
34

As versões modernas do cron aceitam "MAILFROM = ..." no formato crontab. Eu sugiro que você tente "man 5 crontab". Se ele mencionar MAILFROM, sua versão deverá suportá-lo. A frase a procurar é no final do parágrafo discutindo MAILTO, e deve ser algo como isto:

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

Jon Green
fonte
6
Onde "moderno" significa o que? Isso não é suportado pela versão mais recente do cron no Debian unstable (3.0pl1-124), pelo que posso ver no changelog ou na documentação.
Flimzy
thx, isso funcionou para mim no Archlinux. Existem muitos sabores diferentes de cron. O ISC do Debian é de 2004, ampliando a definição de "moderno", mas sem informações sobre em que sistema ele está sendo usado - é difícil fornecer esses detalhes!
precisa saber é o seguinte
11
Infelizmente, o cron do Ubuntu (pelo menos a partir de 14.04 LTS) não faz menção a MAILFROMin man 5 crontab.
Arto Bendiken
4
Você pode instalar croniepara substituir cronno Debian / Ubuntu. Nota: MAILFROMexiste:
Andreas Klöckner
11
cronie não existe no Ubuntu 16.04
alex k
7

/ etc / mailname contém a parte do nome de domínio do endereço FROM. Se / etc / mailname contiver 'somecompany.com', o cron em execução no root terá remetente como [email protected]

user171601
fonte
2
Algumas informações aqui: wiki.debian.org/EtcMailName - não informa se o nullmailer o usa. Eu uso o sendmail e ele não parece funcionar para isso.
Zitrax 30/01
5

Você pode definir o nullmailer do endereço por meio de variáveis ​​de ambiente ou linha de comando. Os argumentos da linha de comando são -fe -Fpara o endereço do remetente e o nome completo, respectivamente.

Geralmente você pode definir variáveis ​​de ambiente no crontab.

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

5 0 * * * /usr/local/bin/daily.sh
Lachlan Roche
fonte
Ele está perguntando sobre FROM: não:
Kimvais
Hum, isso não funciona por motivo desconhecido.
Alexander Artemenko
3

Para mim, a maneira mais fácil de alterar o endereço de origem em um sistema é criar um ~/.mailrcarquivo com conteúdo como este:

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

Qualquer um dos mailcomandos que são executados como meu usuário, agora use essas configurações.

Niels de Vos
fonte
0

Veja esta pergunta se estiver usando o Exim:

exim: reescreva o cabeçalho "De" para o envelope "FROM"

Ele deve definir o endereço "De" como o proprietário do cronjob. Você pode substituir $header_from:por seu endereço personalizado se desejar codificá-lo para outra coisa.

Vladimir Panteleev
fonte
0

Outra alternativa simples é usar o mutt,

  • crie um .muttrc no diretório inicial do usuário que executa o cron com o seguinte

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

  • Execute um script com o comando mutt nele ou envie o comando cron para fazer o mutt para enviar email.

Antes que o mutt envie e envie por email, ele definirá o cabeçalho From no arquivo .muttrc.

Chida
fonte
0

Eu tive que mudar /etc/mail/sendmail.cfe /etc/mail/sendmail.mc, porque /etc/mailnamenão foi usado. No entanto, apenas altera o domínio from, não o usuário.

Rudie
fonte
0

Aqui estão algumas coisas que você pode aplicar para alterar o domínio do remetente:

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

é enviado pelo usuário @ domínio - o usuário é o nome de login sob o qual o cron está sendo executado - portanto, você deve criar um usuário 'eu' - e executar o trabalho do cron como esse usuário.

Então, para mudar o domínio, existem diferentes possibilidades - pode ser que você precise alterar a entrada do arquivo hosts (ou, como na minha máquina, quando eu estava configurando isso - uma caixa do ubuntu) - altere / etc / mailname - para ser o domínio do qual você deseja que ele venha.

Kem Mason
fonte
11
Isso não é verdade - pelo menos não em muitos casos. No meu sistema, por exemplo, ele é enviado apenas de 'usuário', não 'usuário @ domínio'. É de responsabilidade do MTA adicionar o nome de domínio local. Isso é significativo em alguns casos (como o meu) em que meu MTA (por motivos muito complicados e chatos de descrever) não está adicionando o nome de domínio.
Flimzy