Где проверить журнал sendmail?


103

Я не могу отправлять электронные письма,

надо заглядывать в логи,

а где журнал?


4
Хотите сообщить нам, какую ОС вы используете? Как уже отмечалось ниже, на большинстве систем это / var / log / maillog. На Солярисе это / var / adm / maillog. В Debian / Ubuntu это /var/log/mail.log (обратите внимание на точку).
Джеральд Комбс

1
tail -f / var / log / maillog
Томас Дентон

Ответы:


72

Где журналы?

Расположение по умолчанию зависит от вашей системы Linux / Unix, но наиболее распространенные места

  • / Вар / Журнал / MAILLOG
  • /var/log/mail.log
  • / Var / ADM / MAILLOG
  • /var/adm/syslog/mail.log

Если его там нет, посмотрите вверх /etc/syslog.conf. Вы должны увидеть что-то вроде этого

mail.*         -/var/log/maillog

sendmail записывает логи в mailсредство syslog. Следовательно, какой файл будет записан, зависит от того, как был настроен системный журнал .

Если ваша система использует syslog-ng (вместо более «традиционного» syslog ), вам придется искать свой syslog-ng.confфайл. Вы должны что-то вроде этого:

# This files are the log come from the mail subsystem.
#
destination mail     { file("/var/log/mail.log"); };
destination maillog  { file("/var/log/maillog"); };
destination mailinfo { file("/var/log/mail.info"); };
destination mailwarn { file("/var/log/mail.warn"); };
destination mailerr  { file("/var/log/mail.err"); };

Невозможно отправить письма?

Одна из наиболее распространенных причин, по которым недавно установленный sendmail не может отправлять электронные письма, - DAEMON_OPTIONS, настроенный на прослушивание только 127.0.0.1

Смотрите /etc/mail/sendmail.mc

dnl #
dnl # The following causes sendmail to only listen on the IPv4 loopback address
dnl # 127.0.0.1 and not on any other network devices. Remove the loopback
dnl # address restriction to accept email from the internet or intranet.
dnl #
DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl

Если это ваш случай, удалите часть "Addr = 127.0.0.1", перестройте свой файл conf и все готово!

DAEMON_OPTIONS(`Port=smtp, Name=MTA')dnl

[root@server]$ m4 sendmail.mc > /etc/sendmail.cf
[root@server]$/etc/init.d/sendmail restart

Если вы до сих пор вносили изменения в /etc/sendmail.cf вручную (вместо файла * .m4), вы можете внести аналогичные изменения в /etc/sendmail.cf. Оскорбительная строка будет выглядеть так:

O DaemonPortOptions=Port=smtp,Addr=127.0.0.1, Name=MTA

Измените это на:

O DaemonPortOptions=Port=smtp, Name=MTA

1
tail -f / var / log / maillog
Томас Дентон

1
Я думаю, что ключ здесь: «DaemonPortOptions = Port = smtp, Addr = 127.0.0.1, Name = MTA» в /etc/mail/sendmail.mc Очень хороший совет. Спас мой день, спасибо
serfer2

1
Но зачем удалять 127.0.0.1? Демон для прослушивания в общедоступном интерфейсе выглядит не самым безопасным способом. (Я бы предложил удалить всю часть «Невозможно отправить электронное письмо», так как она не имеет отношения к OP.)
Алоис

23

проверьте / var / log / maillog или / var / log / messages, если вы используете * nix

Кроме того, если ничего не выходит, вы можете проверить свой брандмауэр следующим образом (не забудьте сделать это как root):

[root @ web01 ~] # iptables -L
Цепной ВХОД (политика ПРИНЯТЬ)
целевой источник назначения         
ПРИНЯТЬ tcp - где угодно и где угодно tcp dpt: ms-v-worlds 
ПРИНЯТЬ tcp - где угодно и где угодно tcp dpt: imaps 
ПРИНЯТЬ tcp - где угодно и где угодно tcp dpt: imap 
ПРИНЯТЬ tcp - где угодно и где угодно tcp dpt: pop3 
ПРИНЯТЬ tcp - где угодно и где угодно tcp dpt: smtp 
           tcp - где угодно и где угодно tcp dpt: состояние ssh НОВОЕ недавнее: имя SET: сторона SSH: источник 
DROP tcp - где угодно и где угодно tcp dpt: состояние ssh НОВЫЕ последние: ОБНОВЛЕНИЕ секунд: 60 Количество совпадений: 8 Имя совпадения TTL: Сторона SSH: источник 

Сеть FORWARD (политика ПРИНЯТЬ)
целевой источник назначения         

Цепной ВЫХОД (политика ПРИНЯТЬ)
целевой источник назначения         

Цепь RH-Firewall-1-INPUT (0 ссылок)
целевой источник назначения         
[root @ xxxx ~] # 

1
Или, на * nix, загляните в /etc/syslog.conf, чтобы узнать, куда еще могут отправляться эти сообщения журнала.
Людвикас Букис

я не вижу записи SMTP в iptables
Umair


2

также проверьте / var / spool / mqueue для текущей кэшированной исходящей почты


2

Для Fedora и соавт. journalctl _COMM = sendmail будет показывать сообщения от sendmail.

Я был направлен на этот ответ через поиск. / var / log / mail содержит только файл статистики в Fedora. И все остальные упомянутые каталоги не существуют.

journalctl недостаточно интуитивен, если вы не знаете, какой параметр использовать, ymmv. поэтому я разместил это решение.



-1

Вы можете создать свой собственный файл журнала

[admin@local ~]# killall sendmail
[admin@local ~]# touch /var/log/sendmail.log
[admin@local ~]# sendmail -bd -q15m >> /var/log/sendmail.log

а потом

[admin@local ~]# tail -f /var/log/sendmail.log

451 4.0.0 /fake/path/sendmail.cf: line 0: cannot open: No such file or directory
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.