Quel expéditeur cron utilise-t-il pour envoyer du courrier?

11

J'essaie de déboguer un problème avec cron n'envoyant pas de courrier sur une boîte Centos 6 que je n'ai pas configurée. Comment puis-je déterminer quel expéditeur cron utilise pour envoyer du courrier? La page de manuel de crontab a ceci à dire, en partie:

En plus de LOGNAME, HOME et SHELL, cron (8) examinera MAILTO s'il a une raison d'envoyer du courrier suite à l'exécution de commandes dans "ce" crontab. Si MAILTO est défini (et non vide), le courrier est envoyé à l'utilisateur ainsi nommé. Si MAILTO est défini mais vide (MAILTO = ""), aucun mail ne sera envoyé. Sinon, le courrier est envoyé au propriétaire de la crontab. Cette option est utile si vous décidez de / bin / mail au lieu de / usr / lib / sendmail en tant que votre expéditeur lorsque vous installez cron - / bin / mail ne fait pas d'alias, et UUCP ne lit généralement pas son courrier.

La partie avec des astérisques est la partie qui me fait me demander "Eh bien, est-ce du sendmail ou du mail?"

cbmanica
la source

Réponses:

3

Un rapide Google me montre que /etc/sysconfig/crondc'est le fichier qui définit quel mailer est utilisé par cron.

mfinni
la source
Mon Google-fu est apparemment terrible parce que j'ai passé beaucoup de temps à chercher cela. Merci.
cbmanica
23

Selon la page de manuel de cron (8) (le démon qui envoie réellement le message):

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

Cela m'amène à croire qu'il utilise sendmail par défaut. Vérifions avec strace:

Configurez un travail cron qui générera des e-mails:

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

Trouvez maintenant l'ID de processus pour 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

Attachez-vous au processus crond avec strace, à la recherche d'une activité liée au processus. Comme strace écrit à stderr, je l'ai redirigé vers stdout et j'ai sollicité '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

Oui, c'est sendmail.

yoonix
la source
4
Sur le système que vous avez testé.
mfinni
3
À droite, qui est CentOS tel que balisé sur cette question, dans sa configuration par défaut.
yoonix
2
Je sais que je frappe un tambour fatigué ici, mais c'est un paramètre configurable, et la question impliquait un système que le demandeur n'a pas mis en place. L'expéditeur aurait pu être modifié par rapport à la valeur par défaut, pour le système en question. Le demandeur connaît la valeur par défaut.
mfinni
6
Bien, mais dans sa configuration par défaut, il n'y a rien qui fait référence au courrier dans le fichier de configuration (moins les commentaires, tout le contenu l'est CRONDARGS=). Le fait qu'il soit configurable est la raison pour laquelle j'ai inclus les étapes pour vérifier par soi-même.
yoonix