Que mailer o cron usa para enviar mensagens?

8

Eu estou tentando depurar um problema com o cron não enviando mensagens em uma caixa do Centos 6 que eu não configurei. Como posso determinar qual cron do mailer está usando para enviar email? A página man do crontab tem isto a dizer, em parte:

In addition to LOGNAME, HOME, and SHELL, cron(8) will look at MAILTO if it has any reason to send mail as a result of running commands in "this" crontab. If MAILTO is defined (and non-empty), mail is sent to the user so named. If MAILTO is defined but empty (MAILTO=""), no mail will be sent. Otherwise mail is sent to the owner of the crontab. This option is useful if you decide on /bin/mail instead of /usr/lib/sendmail as your mailer when you install cron -- /bin/mail doesn´t do aliasing, and UUCP usually doesn´t read its mail.

A parte com asteriscos é a parte que me faz pensar "Bem, é sendmail ou mail?"

    
por cbmanica 29.09.2014 / 23:58

2 respostas

3

Um rápido Google me mostra que /etc/sysconfig/crond é o arquivo que define qual mala direta é usada pelo cron.

    
por 30.09.2014 / 00:52
16

De acordo com a página man do cron (8) (o daemon que realmente envia a mensagem):

   -m     This  option  allows you to specify a shell command string to use for 
          sending cron mail output instead of sendmail(8).  This command must 
          accept a fully formatted mail message (with headers) on stdin and send
          it as a mail message to the recipients specified in the mail headers.

Isso me leva a acreditar que ele está usando o sendmail por padrão. Vamos verificar com strace:

Configure um cron job que gere e-mail:

user@host1 ~:
$ crontab -e
crontab: installing new crontab
user@host1 ~:
$ crontab -l
[email protected]
*/5 * * * * echo "testing"

Agora, encontre o ID do processo para o crond:

user@host1 ~:
$ ps auxww | grep crond
root      9684  0.0  0.0 117280  1296 ?        Ss   Jul22   0:17 crond
user     36344  0.0  0.0 103240   884 pts/2    S+   23:01   0:00 grep crond

Anexar ao processo de crond com strace, procurando por atividade relacionada ao processo. Como strace escreve para stderr Eu redirecionei para stdout e grepped para 'mail':

root@host1 ~:
# strace -fp 9684 -s 1024 -e trace=process 2>&1 | grep mail
[pid 36204] execve("/usr/sbin/sendmail", ["/usr/sbin/sendmail", "-FCronDaemon", "-i", "-odi", "-oem", "-oi", "-t", "-f", "root"], [/* 16 vars */]) = 0
^C

Sim, é o sendmail.

    
por 30.09.2014 / 01:04