Де перевірити журнал sendmail?


103

Я не можу надсилати електронні листи,

потрібно заглянути в колоди,

але де журнал?


4
Хочете повідомити, яку ОС ви використовуєте? Як зазначали інші нижче, у більшості систем це / var / log / maillog. Для Solaris це / var / adm / maillog. У Debian / Ubuntu це /var/log/mail.log (зверніть увагу на крапку).
Джеральд Гребінь

1
хвост -f / var / log / maillog
Thomas Denton

Відповіді:


72

Де колоди?

Місце за замовчуванням залежить від вашої системи linux / unix, але найпоширеніші місця є

  • / var / log / maillog
  • /var/log/mail.log
  • / var / adm / maillog
  • /var/adm/syslog/mail.log

Якщо його там немає, дивіться вгору /etc/syslog.conf. Ви повинні побачити щось подібне

mail.*         -/var/log/maillog

sendmail записує журнали до mailоб'єкту syslog. Отже, для якого файлу він записується, залежить від того, як налаштовано 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", відновіть конф-файл і ви готові йти!

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
хвост -f / var / log / maillog
Thomas Denton

1
Я думаю, ключовим тут є: "DaemonPortOptions = Порт = smtp, Addr = 127.0.0.1, Ім'я = MTA" в /etc/mail/sendmail.mc Дуже хороша порада. Врятував мій день, спасибі
serfer2

1
Але навіщо видаляти 127.0.0.1? Надання демону для прослуховування в публічному інтерфейсі не видається найбезпечнішим способом зробити. (Я б запропонував видалити всю частину "Неможливо надсилати електронні листи", оскільки це не стосується ОП.)
Алоїс Магдал

23

check / var / log / maillog або / var / log / messages, якщо ви перебуваєте на * nix

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

[root @ web01 ~] # iptables -L
Ланцюговий Вхід (політика ACCEPT)
цільовий прот вибір джерела призначення         
ACCEPT tcp - де завгодно, де завгодно tcp dpt: ms-v-worlds 
ACCEPT tcp - будь-де та будь-де tcp dpt: imaps 
ACCEPT tcp - будь-де і будь-де tcp dpt: imap 
ACCEPT tcp - де завгодно tcp dpt: pop3 
ACCEPT tcp - де завгодно, де завгодно tcp dpt: smtp 
           tcp - будь-де та будь-де tcp dpt: ssh state НОВЕ нещодавно: ім'я SET: SSH сторона: джерело 
DROP tcp - де завгодно, де tcp dpt: ssh state НОВІ останні: ОНОВЛЕННЯ секунд: 60 hit_count: 8 TTL Назва матчу: SSH сторона: джерело 

Ланцюг Вперед (політика ACCEPT)
цільовий прот вибір джерела призначення         

Ланцюговий вихід (політика ACCEPT)
цільовий прот вибір джерела призначення         

Ланцюг 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.