我无法发送电子邮件,

需要查看日志,

,但是日志在哪里?

评论

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

tail -f / var / log / maillog

+1精彩的句

@armadadrive只需要删除第一行中的“ I”。但是,是的,great句:-D

注意:如果这些路径都不起作用,或者您使用的是cPanel,则可能使用的是Exim(Sendmail的替代品)。如果是这样,您的日志可能位于/var/log/exim/main.log。

#1 楼

日志在哪里?

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


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

如果不存在,请查找/etc/syslog.conf 。您应该看到类似以下内容的内容:sendmail将日志写入syslog的mail工具中。因此,写入哪个文件取决于syslog的配置方式。

如果您的系统使用syslog-ng(而不是更“传统的” syslog),则必须查找syslog-ng.conf文件。您应该是这样的:

mail.*         -/var/log/maillog


无法发送电子邮件?

我见过的最常见原因之一新安装的sendmail无法发送电子邮件是DAEMON_OPTIONS设置为仅在127.0.0.1上侦听。

请参见/etc/mail/sendmail.mc

# 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"); };


如果是这种情况,请删除“ Addr = 127.0.0.1”部分,重新​​生成您的conf文件,您就可以开始使用了! />如果到目前为止您一直在手动更改/etc/sendmail.cf(而不是* .m4文件),则可以在/etc/sendmail.cf中进行类似的更改。令人讨厌的行如下所示:

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


将其更改为:

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

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


评论


尾-f / var / log / maillog

–托马斯·丹顿(Thomas Denton)
09年8月28日在14:49

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

– serfer2
17年6月30日在7:17

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

–阿洛瓦·马哈德
17年8月24日在16:23

#2 楼

如果在* nix上,请检查/ var / log / maillog或/ var / log / messages。以此为根):

[root@web01 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ms-v-worlds 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imaps 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:imap 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:pop3 
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:smtp 
           tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: SET name: SSH side: source 
DROP       tcp  --  anywhere             anywhere            tcp dpt:ssh state NEW recent: UPDATE seconds: 60 hit_count: 8 TTL-Match name: SSH side: source 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain RH-Firewall-1-INPUT (0 references)
target     prot opt source               destination         
[root@xxxx ~]# 


评论


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

– Liudvikas Bukys
09年8月27日在16:34

我看不到iptables中的smtp条目

– Umair Ayub
19年2月13日在7:49

#3 楼

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

#4 楼

还要检查/ var / spool / mqueue以获取当前缓存的传出邮件

#5 楼

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

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

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

#6 楼

/var/log/maillog


#7 楼

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

[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