大多数Linux系统都默认自带了sendmail,最近想通过sendmail将一些服务器信息直接发送到自己的邮箱里面,结果发送之后一直没什么反应,最后发现是因为我的服务器上没有合法的域名和MX解析记录,而sendmail默认会进行反向解析,所以就一直堆在队列里面发布出去。
解决办法很简单,直接关掉sendmail的反向解析就可以了,具体配置如下:
我发送邮件的命令为:
# mail -s "Daily report" guosuiyu@gmail.com < /var/log/report.txt
查看电子邮件队列信息:
# sendmail -bp
----------------------------
/var/spool/mqueue (1 requests)
-----Q-ID----- --Size-- -----Q-Time----- ------------Sender/Recipient-----------
p6C71EPC020359 10 Tue Mar 19 14:02
(host map: lookup (gmail.com): deferred)
Total requests: 1
----------------------------
出现了"host map: lookup (domain): deferred"错误,意思就是说邮件的发送被延迟了。
解决办法很简单:
# vim /etc/mail/sendmail.cf
找到 #O ResolverOptions=+AAONLY 这一行信息,并把它的注释去掉。
# /etc/init.d/sendmail restart
重启sendmail以后即可成功发送邮件。
不过,即使邮件能够发送出去了,由于没有合法的域名和MX解析记录,稍微好点的邮箱都会把它丢到垃圾邮件中去,所以建议如果有自己的域名的话,可以考虑分配一个子域名和MX解析。