Como customizar os cabeçalhos de email do Vixie-cron (debian) e msmtp?

1

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?

    
por robin 16.10.2012 / 11:17

2 respostas

0

Por fim, cheguei à seguinte solução. Em vez de usar mstmp-mta , escrevi meu próprio script simples que atua como meu MTA. Colocado em /usr/sbin/sendmail , ele substitui o cabeçalho De e envia o e-mail.

#!/bin/bash

sed -e "s/From: root (Cron Daemon)/From: WHATEVER YOU LIKE/" | msmtp $BASH_ARGV

Espero que isso ajude qualquer outra pessoa que queira uma solução leve para o problema.

    
por 23.10.2012 / 17:50
0

Eu fiz um pequeno wrapper para emails do sistema, ele analisa / etc / aliases e envia mensagens no formato correto (através de / usr / sbin / sendmail):

#!/bin/bash
stdin=$(cat)

mail=$(echo "$stdin" | sed "s/From: root (Cron Daemon)/From: ${4} ${4}@domain.com/g")

if [ -f /etc/aliases ]; then
        if [ "grep ${1} /etc/aliases" != "" ]; then
                exec < /etc/aliases
                while read line
                do
                        if [[ $line =~ ^${1}:\ (.*)$ ]] ; then
                        addr=${BASH_REMATCH[1]}
                        else
                                if [[ $line =~ ^default:\ (.*)$ ]] ; then
                                        addr=${BASH_REMATCH[1]}
                                fi  
                        fi  
                done
                echo $addr
        fi 
else 
addr="[email protected]"
fi

mail=$(echo "$mail" | sed "s/To: ${4}/To: ${addr} /g")

echo -e "$mail" | msmtp --auto-from=on --read-envelope-from --maildomain=domain.com -t 

Basta alterar o e-mail padrão e o domínio de e-mail

    
por 27.08.2013 / 18:12

Tags