2012年6月16日 星期六

php mail 一直寄不出去的問題。


php mail 一直寄不出去的問題。

透過 php mail寄信時,發現信都卡在QUEUE裡面。
檢查了一下,出現 “host map: lookup (domain): deferred”

爬文了之後,找到這個解決方案...
(雖然是簡體字/匪體字/殘體字, 但是基於智慧財產權的遵重,全文照貼)

-------------------------------------------------------------------------------------------------------
http://xfalcons.blogspot.tw/2011/05/host-map-lookup-domain-deferred.html

解决sendmail的“host map: lookup (domain): deferred”问题

大多数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解析。