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.