Chamando mailx de crond

2

Eu tive um problema que o Gmail estava bloqueando e-mails enviados usando mailx. Eu resolvi isso configurando um ~ / .mailrc apropriado, que se parece com:

set smtp-use-starttls
set nss-config-dir=/home/theuser/.certs
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=xxx
set smtp-auth-password=yyy
set from="[email protected](Rabbit Server)"

Agora, quando eu corro:

echo "hi" | mailx [email protected]

meus e-mails são enviados com sucesso como usuário e como root.

Agora quero que o cron funcione também. Eu mudei "/ etc / sysconfig / crond" para forçá-lo a usar mailx, com:

CRONDARGS="-m /usr/bin/mailx"

Eu tenho a configuração ~ / .mailrc em:

  • /root/.mailrc
  • /home/theuser/.mailrc
  • /etc/.mailrc

Mas não importa o que eu faça, a saída de eco não é enviada com sucesso por e-mail.

O crontab parece (e eu verifiquei, os scripts estão rodando e fazendo seu trabalho, e ecoando, apenas o cron não está enviando e-mails):

MAILTO="[email protected]"

# Every minute check processes are running, restart if necessary and send an email.
* * * * * source /home/theuser/.bashrc; global audit_regular

# Every day, send an email describing the state of the host and its jobs.
0 5 * * * source /home/theuser/.bashrc; global audit_daily

# Every Monday at 7am, archive the logs.
0 7 * * 1 source /home/theuser/.bashrc; global archive_logs

Além disso, este crontab está configurado em outro host e enviando e-mails bem.

    
por watfordxp 18.06.2016 / 13:11

1 resposta

2

mailx só envia e-mails se você passar o endereço de destino na linha de comando. Quando você o executa sem argumentos, ele lê comandos interativos de sua entrada padrão. Tenha em atenção que os seus testes alimentaram o lixo que foi interpretado como comandos; alguns desses comandos podem ter corrompido suas caixas de correio, enviado e-mails, etc.

Diga ao mailx para executar o mailx -t , que espera um e-mail completo com cabeçalhos na entrada padrão.

A partir de um exame superficial, não parece que você pode passar um comando com parâmetros através do script de inicialização do crond. Então escreva um wrapper de shell /usr/local/sbin/mailx-t

#!/bin/sh
exec mailx -t

e coloque CRONDARGS="-m /usr/local/sbin/mailx-t" em /etc/sysconfig/crond .

    
por 19.06.2016 / 02:08

Tags