题 在哪里检查sendmail的日志?


我无法发送电子邮件,

需要查看日志,

但是日志在哪里?


90
2017-08-27 15:46




小心告诉我们您正在使用的操作系统?正如其他人在下面提到的,在大多数系统上它是/ var / log / maillog。在Solaris上它是/ var / adm / maillog。在Debian / Ubuntu上它是/var/log/mail.log(注意点)。 - Gerald Combs
tail -f / var / log / maillog - Thomas Denton


答案:


原木在哪里?

默认位置取决于您的linux / unix系统,但最常见的地方是

  • 在/ var /日志/ maillog的
  • /var/log/mail.log
  • 在/ var / ADM / maillog的
  • /var/adm/syslog/mail.log

如果它不存在,请查阅 /etc/syslog.conf。你应该看到这样的东西

mail.*         -/var/log/maillog

发邮件 将日志写入 mail 系统日志的设施。因此,它写入的文件取决于方式 系统日志 已配置。

如果您使用系统 syslog-ng的 (而不是更“传统” 系统日志),那么你将不得不查找你的 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

60
2017-08-27 15:57



tail -f / var / log / maillog - Thomas Denton
我想,这里的关键是:/etc/mail/sendmail.mc中的“DaemonPortOptions = Port = smtp,Addr = 127.0.0.1,Name = MTA”非常好的提示。救了我的一天,谢谢 - serfer2
但为什么删除127.0.0.1?让守护进程监听公共接口似乎不是最安全的方法。 (我建议删除整个“无法发送电子邮件”部分,因为它与OP无关。) - Alois Mahdal


如果您使用* nix,请检查/ var / log / maillog或/ var / log / messages

此外,如果没有任何结果,您可能需要按如下方式检查防火墙(确保以root身份执行此操作):

[root @ web01~] #iptables -L
Chain INPUT(政策接受)
目标prot opt源目的地
接受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 state NEW recent:SET name:SSH side:source
DROP tcp  - 任何地方tcp dpt:ssh state NEW recent:UPDATE seconds:60 hit_count:8 TTL-Match name:SSH side:source

Chain FORWARD(政策接受)
目标prot opt源目的地

Chain OUTPUT(政策接受)
目标prot opt源目的地

链RH-Firewall-1-INPUT(0参考)
目标prot opt源目的地
[root @ xxxx~]#

21
2017-08-27 15:52



或者,在* nix上,查看/etc/syslog.conf以查看这些日志消息可能被发送到的其他位置。 - Liudvikas Bukys


尝试查看/var/log/mail.info或/var/log/mail.err


3
2017-08-28 08:51





还检查/ var / spool / mqueue当前缓存的外发邮件


1
2017-08-27 16:24





/var/log/maillog

0
2017-08-27 15:53





对于fedora等人。 journalctl _COMM = sendmail将显示来自sendmail的消息。

通过搜索我被引导到这个答案。 / var / log / mail只包含Fedora上的'statistics'文件。所有其他提到的目录都不存在。

如果你不知道使用什么参数,ymmv,journalctl不够直观。所以我发布了这个解决方案。


0
2017-07-01 11:49





您可以创建自己的日志文件

[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

-1
2017-09-04 10:17