Eu tive alguns problemas com o cron para enviar e-mails. Meu ISP exige que o campo "De:" corresponda ao endereço de e-mail do qual o e-mail está sendo enviado, caso contrário, o e-mail será rejeitado. Como o cron codifica o campo "De:" para "root (Cron Daemon)", esses e-mails não estão sendo enviados.
Configurei o msmtp e posso enviar e-mails sem problemas na linha de comando. Na verdade, envolvi alguns dos meus trabalhos do cron em um script que envia o email em si. Isso funciona bem, mas eu gostaria de uma solução mais elegante.
Eu usei originalmente o pacote msmtp-mta
, que apenas vincula /usr/lib/sendmail
a /usr/bin/msmtp
para que o cron envie emails usando o msmtp. Como isso não funcionou, eu removi o pacote e coloquei um script bash em /usr/lib/sendmail
, em vez disso, basta ler a entrada padrão e enviar um email com os cabeçalhos certos:
#!/bin/bash
HEADERS="To: <myemail>
From: Cron <myotheremail>
Subject: Vixie-cron snooper ($@)
"
INPUT=$( cat /dev/stdin )
echo -e "$HEADERS""Stdin:\n$INPUT\n" | msmtp <myemail>
echo "$HEADERS""Stdin:\n$INPUT\n" > /tmp/vixielog
No entanto, isso não tem o efeito desejado. Acabei de receber um email quase vazio e /tmp/vixielog
contém o mesmo:
To: <myemail>
From: Cron <myotheremail>
Subject: Vixie-cron snooper (-i -FCronDaemon -oem <myemail>)
Stdin:
Os e-mails chegam na hora certa, então sei que a tarefa do cron está sendo executada corretamente, mas não estou obtendo a saída. Como eu poderia ajustar essa abordagem para obter a saída do comando no email?