Welchen Mailer verwendet Cron, um E-Mails zu senden?

11

Ich versuche, ein Problem zu beheben, bei dem cron keine E-Mails auf einer Centos 6-Box sendet, die ich nicht konfiguriert habe. Wie kann ich feststellen, mit welchem ​​Mailer Cron E-Mails gesendet werden? Die Crontab-Manpage hat dies zum Teil zu sagen:

Zusätzlich zu LOGNAME, HOME und SHELL untersucht cron (8) MAILTO, wenn es einen Grund gibt, E-Mails zu senden, weil Befehle in "dieser" Crontab ausgeführt werden. Wenn MAILTO definiert (und nicht leer) ist, wird eine E-Mail an den so genannten Benutzer gesendet. Wenn MAILTO definiert, aber leer ist (MAILTO = ""), wird keine Mail gesendet. Andernfalls wird die E-Mail an den Eigentümer der Crontab gesendet. Diese Option ist nützlich, wenn Sie sich bei der Installation von cron für / bin / mail anstelle von / usr / lib / sendmail als Mailer entscheiden - / bin / mail führt kein Aliasing durch und UUCP liest seine Mail normalerweise nicht.

Der Teil mit Sternchen ist der Teil, bei dem ich mich frage: "Nun, ist es Sendmail oder Mail?"

cbmanica
quelle

Antworten:

3

Ein kurzes Google zeigt mir, dass dies /etc/sysconfig/cronddie Datei ist, die definiert, welcher Mailer von cron verwendet wird.

mfinni
quelle
Mein Google-Fu ist anscheinend schrecklich, weil ich viel Zeit damit verbracht habe, danach zu suchen. Vielen Dank.
cbmanica
22

Laut der Manpage für cron (8) (der Dämon, der die Nachricht tatsächlich sendet):

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

Das lässt mich glauben, dass standardmäßig sendmail verwendet wird. Lassen Sie uns mit strace überprüfen:

Richten Sie einen Cron-Job ein, der E-Mails generiert:

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

Suchen Sie nun die Prozess-ID für 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

Befestigen Sie sich mit Strace am Crond-Prozess und suchen Sie nach prozessbezogenen Aktivitäten. Während strace an stderr schreibt, habe ich es an stdout umgeleitet und nach 'mail' gesucht:

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

Ja, es ist sendmail.

yoonix
quelle
4
Auf dem System, das Sie getestet haben.
Mfinni
3
Richtig, das ist CentOS, wie in dieser Frage markiert, in seiner Standardkonfiguration.
Yoonix
2
Ich weiß, dass ich hier eine müde Trommel knalle, aber es ist ein konfigurierbarer Parameter, und die Frage betraf ein System, das der Fragesteller nicht eingerichtet hat. Der Mailer könnte zuvor von der Standardeinstellung für das betreffende System geändert worden sein. Der Fragesteller kennt die Standardeinstellung.
Mfinni
6
Richtig, aber in der Standardkonfiguration enthält die Konfigurationsdatei nichts, was auf E-Mails verweist (abzüglich Kommentare ist der gesamte Inhalt CRONDARGS=). Die Tatsache, dass es konfigurierbar ist, ist der Grund, warum ich die Schritte zur Überprüfung für mich selbst aufgenommen habe.
Yoonix