Jakiego programu pocztowego używa cron do wysyłania poczty?

11

Próbuję debugować problem polegający na tym, że cron nie wysyła poczty na skrzynce Centos 6, której nie skonfigurowałem. Jak mogę ustalić, którego crona używa do wysyłania poczty? Strona podręcznika crontab ma po części do powiedzenia:

Oprócz LOGNAME, HOME i SHELL, cron (8) będzie patrzył na MAILTO, jeśli ma jakiś powód, aby wysyłać pocztę w wyniku uruchomienia poleceń w „tym” crontabie. Jeśli MAILTO jest zdefiniowane (i niepuste), poczta jest wysyłana do użytkownika o takiej nazwie. Jeśli MAILTO jest zdefiniowane, ale puste (MAILTO = ""), poczta nie zostanie wysłana. W przeciwnym razie poczta jest wysyłana do właściciela crontab. Ta opcja jest przydatna, jeśli zdecydujesz się na / bin / mail zamiast / usr / lib / sendmail jako twój mailer podczas instalacji crona - / bin / mail nie wykonuje aliasingu, a UUCP zwykle nie czyta swojej poczty.

Część z gwiazdkami to część, w której zastanawiam się „Cóż, czy to sendmail czy mail?”

cbmanica
źródło

Odpowiedzi:

3

Szybki Google pokazuje mi, że /etc/sysconfig/crondjest to plik, który określa, z jakiego programu pocztowego korzysta cron.

mfinni
źródło
Moje Google-fu jest najwyraźniej okropne, ponieważ spędziłem sporo czasu na szukaniu tego. Dzięki.
cbmanica
23

Według strony man dla cron (8) (demon, który faktycznie wysyła wiadomość):

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

To prowadzi mnie do przekonania, że ​​domyślnie używa sendmaila. Sprawdźmy za pomocą strace:

Skonfiguruj zadanie crona, które wygeneruje wiadomość e-mail:

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

Teraz znajdź identyfikator procesu dla 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

Dołącz do procesu crond za pomocą strace, szukając aktywności związanej z procesem. Kiedy strace pisze do stderr, przekierowałem go na stdout i szukałem '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

Tak, to sendmail.

yoonix
źródło
4
W testowanym systemie.
mfinni
3
Racja, czyli CentOS jak oznaczono w tym pytaniu, w domyślnej konfiguracji.
yoonix
2
Wiem, że walę w zmęczony bęben, ale jest to parametr konfigurowalny, a pytanie dotyczyło systemu, którego pytający nie skonfigurował. Program pocztowy mógł wcześniej zostać zmieniony z domyślnego dla danego systemu. Pytający zna wartość domyślną.
mfinni
6
Zgadza się, ale w domyślnej konfiguracji w pliku konfiguracyjnym nie ma nic odnoszącego się do poczty (bez komentarzy, cała treść CRONDARGS=). Fakt, że jest konfigurowalny, dlatego podałem kroki, aby zweryfikować swoją tożsamość.
yoonix