Quale mailer utilizza cron per inviare la posta?


11

Sto provando a eseguire il debug di un problema con cron che non invia posta su una scatola di Centos 6 che non ho configurato. Come posso determinare quale cron mailer sta usando per inviare la posta? La pagina man di crontab ha questo da dire, in parte:

Oltre a LOGNAME, HOME e SHELL, cron (8) esaminerà MAILTO se ha qualche motivo per inviare posta come risultato dell'esecuzione di comandi in "questo" crontab. Se MAILTO è definito (e non vuoto), la posta viene inviata all'utente così chiamato. Se MAILTO è definito ma vuoto (MAILTO = ""), la posta non verrà inviata. In caso contrario, la posta viene inviata al proprietario del crontab. Questa opzione è utile se decidi su / bin / mail invece di / usr / lib / sendmail come tuo mailer quando installi cron - / bin / mail non fa aliasing e UUCP di solito non legge la sua posta.

La parte con gli asterischi è la parte che mi fa chiedere "Beh, è ​​sendmail o posta?"

Risposte:


3

Un rapido Google mi mostra che /etc/sysconfig/crondè il file che definisce quale mailer viene utilizzato da cron.


Il mio Google-fu è apparentemente terribile perché ho trascorso molto tempo a cercarlo. Grazie.
cbmanica,

23

Secondo la pagina man di cron (8) (il demone che effettivamente invia il messaggio):

   -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.

Questo mi porta a credere che sta usando sendmail per impostazione predefinita. Verifichiamo con strace:

Imposta un cron job che genererà email:

user@host1 ~:
$ crontab -e
crontab: installing new crontab
user@host1 ~:
$ crontab -l
MAILTO=example@example.com
*/5 * * * * echo "testing"

Ora trova l'ID processo per 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

Attaccare al processo di crond con strace, cercando attività relative al processo. Mentre strace scrive su stderr, l'ho reindirizzato su stdout e ho cercato "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

Sì, è sendmail.


4
Sul sistema che hai testato.
mfinni,

3
Giusto, che è CentOS come taggato su questa domanda, nella sua configurazione predefinita.
Yoonix,

2
So che sto suonando un tamburo stanco qui, ma è un parametro configurabile e la domanda riguardava un sistema che il richiedente non ha impostato. Il mailer avrebbe potuto essere precedentemente modificato rispetto all'impostazione predefinita, per il sistema in questione. Il richiedente conosce l'impostazione predefinita.
mfinni,

6
Giusto ma nella sua configurazione predefinita, non c'è nulla che faccia riferimento alla posta nel file di configurazione (meno i commenti, l'intero contenuto è CRONDARGS=). Il fatto che sia configurabile è il motivo per cui ho incluso i passaggi per verificare se stesso.
Yoonix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.