在哪里查看sendmail的日志?


103

我无法发送电子邮件,

需要查看日志,

但是日志在哪里?


4
希望让我们知道您使用的是什么操作系统?正如其他人在下面指出的那样,在大多数系统上,它是/ var / log / maillog。在Solaris上,它是/ var / adm / maillog。在Debian / Ubuntu上是/var/log/mail.log(注意点)。
杰拉尔德·库姆斯

1
tail -f / var / log / maillog
Thomas Denton,2009年

Answers:


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将日志写入mailsyslog工具。因此,写入哪个文件取决于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
Thomas Denton,2009年

1
我认为,这里的关键是/etc/mail/sendmail.mc中的“ DaemonPortOptions = Port = smtp,Addr = 127.0.0.1,Name = MTA”很好的技巧。拯救了我的一天,谢谢
serfer2

1
但是为什么要删除127.0.0.1?让守护程序在公共接口上侦听似乎不是最安全的方法。(我建议删除整个“无法发送电子邮件”部分,因为它与OP无关。)
Alois Mahdal

23

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

另外,如果什么都没发生,您可能需要按以下步骤检查防火墙(请确保以root用户身份进行此操作):

[root @ web01〜]#iptables -L
链输入(接受政策)
目标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状态新近:SET名称:SSH端:源 
DROP tcp-任何地方tcp dpt:ssh状态新近:更新秒:60 hit_count:8 TTL匹配名称:SSH端:源 

连锁前进(接受政策)
目标prot opt源目的地         

链输出(接受政策)
目标prot opt源目的地         

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

1
或者,在* nix上,查看/etc/syslog.conf以查看那些日志消息可能还会发送到哪里。
Liudvikas Bukys,2009年

我看不到iptables中的smtp条目
Umair

5

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



2

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

通过搜索将我定向到此答案。/ var / log / mail在Fedora上仅包含一个“统计”文件。所有其他提到的目录都不存在。

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



-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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.