A solução foi adicionar à configuração do cron para o meu usuário (invocando crontab -e) isso:
CRONARGS=-m/usr/bin/msmtp
Eu estou tentando configurar uma máquina para que ela me envie um e-mail se um dos cronjobs enviar algo em caso de erro.
Eu posso enviar e-mail usando:
echo "test" | mail -s "subject" [email protected]
ou executando:
echo "test" | /usr/sbin/sendmail
Sem o link simbólico (/ usr / sbin / sendmail), o cron irá me dizer que:
(CRON) info (No MTA installed, discarding output)
Com os links simbólicos, obtenho:
(root) MAIL (mailed 1 byte of output; but got status 0x004e, #012)
Você pode sugerir como configurar o par cron / msmtp?
Obrigado!
EDITAR:
Nota: Eu escrevi "msmtpd" por engano. Não é um daemon, mas sim um cliente SMTP chamado apenas "msmtp" (sem o final "d"). Ele é executado sob demanda e não está sendo executado em segundo plano o tempo todo.
Quando tento enviar um email usando o msmtp assim:
echo "test" | msmtp [email protected]
Do outro lado, nos logs do servidor SMTP, eu leio:
Nov 2 09:26:10 S01 postfix/smtpd[12728]: connect from unknown[CLIENT_IP]
Nov 2 09:26:12 S01 postfix/smtpd[12728]: 532301C318: client=unknown[CLIENT_IP], sasl_method=CRAM-MD5, [email protected]
Nov 2 09:26:12 S01 postfix/cleanup[12733]: 532301C318: message-id=<>
Nov 2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: from=<[email protected]>, size=191, nrcpt=1 (queue active)
Nov 2 09:26:12 S01 postfix/local[12734]: 532301C318: to=<[email protected]>, orig_to=<[email protected]>, relay=local, delay=0.62, delays=0.59/0.01/0/0.03, dsn=2.0.0, status=sent (delivered to command: IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #1001)
Nov 2 09:26:12 S01 postfix/qmgr[2404]: 532301C318: removed
Nov 2 09:26:13 S01 postfix/smtpd[12728]: disconnect from unknown[CLIENT_IP]
E o email é entregue ao usuário de destino. Então parece que o cliente msmtp está funcionando corretamente.
Tem que ser algo na integração cron / msmtp, mas não tenho ideia do que essa coisa possa ser. Você pode me ajudar?
A solução foi adicionar à configuração do cron para o meu usuário (invocando crontab -e) isso:
CRONARGS=-m/usr/bin/msmtp
Eu tive exatamente o mesmo cenário descrito na pergunta, mas a resposta atual não resolveu o problema para mim.
No meu caso, a explicação do problema era que toda vez que o comando cron
execution sendmail
estava configurando $HOME
to /
, em vez de /home/<user>
. Assim, mesmo se msmtp
substituiu sendmail
através de um link simbólico, ele não foi capaz de encontrar seu arquivo de configuração específico do usuário localizado em $HOME/.msmtprc
.
Minha SOLUÇÃO era usar /etc/msmtprc
em vez de $HOME/.msmtprc
.
Esta pode não ser a melhor solução para o seu sistema, pois pode forçar alguns dados confidenciais do seu /etc/msmtprc
a serem lidos por outros usuários.
Leia mais aqui: link