Какой почтовик использует cron для отправки почты?

11

Я пытаюсь отладить проблему, когда cron не отправляет почту на ящик Centos 6, который я не настроил. Как я могу определить, какой почтовый cron использует для отправки почты? В справочной странице crontab есть, что сказать, частично:

В дополнение к LOGNAME, HOME и SHELL, cron (8) будет проверять MAILTO, если у него есть какая-либо причина для отправки почты в результате выполнения команд в "this" crontab. Если MAILTO определено (и не пусто), почта отправляется пользователю с таким именем. Если MAILTO определено, но пусто (MAILTO = ""), письмо не будет отправлено. В противном случае почта отправляется владельцу crontab. Эта опция полезна, если вы выбрали / bin / mail вместо / usr / lib / sendmail в качестве почтовой программы при установке cron - / bin / mail не выполняет псевдонимы, а UUCP обычно не читает почту.

Часть со звездочками - это та часть, которая заставляет меня задуматься: «Ну, это sendmail или mail?»

cbmanica
источник

Ответы:

3

Быстрый Google показывает мне, что /etc/sysconfig/crondэто файл, который определяет, какой почтовик используется cron.

mfinni
источник
Мой Google-фу, очевидно, ужасен, потому что я потратил много времени на поиски этого. Спасибо.
cbmanica
23

Согласно справочной странице для cron (8) (демон, который фактически отправляет сообщение):

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

Это наводит меня на мысль, что по умолчанию используется sendmail. Давайте проверим с помощью strace:

Настройте работу cron, которая будет генерировать электронную почту:

user@host1 ~:
$ crontab -e
crontab: installing new crontab
user@host1 ~:
$ crontab -l
MAILTO=example@example.com
*/5 * * * * echo "testing"

Теперь найдите идентификатор процесса для 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

Присоедините к процессу crond с помощью strace, ища действия, связанные с процессом. Когда strace пишет в stderr, я перенаправил его в stdout и добавил «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

Да, это sendmail.

yoonix
источник
4
На системе, которую вы тестировали.
mfinni
3
Правильно, это CentOS, как отмечено по этому вопросу, в его конфигурации по умолчанию.
yoonix
2
Я знаю, что я бью усталый барабан здесь, но это настраиваемый параметр, и вопрос касался системы, которую автор не настроил. Почтовик мог быть ранее изменен по умолчанию для рассматриваемой системы. Аскер знает по умолчанию.
mfinni
6
Правильно, но в конфигурации по умолчанию ничего не ссылается на почту в файле конфигурации (кроме комментариев, весь контент есть CRONDARGS=). Тот факт, что это настраивается, - вот почему я включил шаги, чтобы проверить себя.
yoonix