Ich habe Cron-Jobs so eingerichtet, dass sie je nach Benutzer/Gruppe in einer Chroot-Umgebung ausgeführt werden.
Mir ist aufgefallen, dass diese Cron-Jobs, die in der Chroot-Umgebung ausgeführt werden, keine E-Mails senden können.
Protokolldateien melden, dass kein Programm zum Senden von E-Mails gefunden werden kann.
Wo sucht der Cron-Prozess nach der Standard-Mail-Binärdatei? Kann man diesen Pfad festlegen oder konfigurieren?
und nebenbei bemerkt: wenn die Variable MAILTO= nicht gesetzt ist, woher weiß Cron dann, wohin die E-Mails gesendet werden sollen? Werden die E-Mails einfach an den Benutzer gesendet, der den Job auf dem lokalen Host ausführt?
Danke!
Antwort1
Wo sucht der Cron-Prozess nach der Standard-Mail-Binärdatei?
Sofern nicht anders angegeben, bin ich ziemlich sicher, dass es einfach das Mailprogramm verwendet, das es im Pfad findet (/bin:/usr/bin). Sie können jedoch das -m
Befehlszeilenargument für einige Versionen von cron angeben
-m Mit dieser Option können Sie eine Shell-Befehlszeichenfolge angeben, die zum Senden von Cron-Mail-Ausgaben anstelle von sendmail(8) verwendet werden soll. Dieser Befehl muss eine vollständig formatierte Mail-Nachricht (mit Headern) auf stdin akzeptieren und als Mail-Nachricht an die in den Mail-Headern angegebenen Empfänger senden.
Das oben genannte funktioniert unter CentOS/RHEL, bei Ubuntu sieht es anders aus.
Können Sie diesen Pfad festlegen oder konfigurieren?
Siehe oben.
wenn die Variable MAILTO= nicht gesetzt ist...
Wenn MAILTO nicht festgelegt ist, wird die E-Mail vermutlich an den lokalen Benutzer zugestellt, der den Job ausführt.
Unter CentOS/RHEL können Sie zusätzliche Befehlszeilenargumente in /etc/sysconfig/crond angeben, sodass Sie Ihre Init-Skripte nicht bearbeiten müssen. Andere Betriebssysteme/Distributionen bieten möglicherweise ähnliche Funktionen.