centos6.2。sendmail安装好以后,可以给自己或主机用户发邮件,例如:
mail yangchao
但是发送到外网,失败
用命令测试
echo "Subject: test" | /usr/lib/sendmail -v wolfshouting@sina.com
报错:
sina.com: Name server timeout
wolfshouting@sina.com... Transient parse error -- message queued for future delivery
wolfshouting@sina.com... queued
有篇文章,说是在/etc/mail下添加service.switch可以解决问题,我照做了。
sendmail -q -v
仍然报错
Connecting to sina.com via esmtp
Deferred: Name server: sina.com: host name lookup failure
有篇文章说是要删除/etc/resolv.conf以后再添加service.switch。
我打开/etc/resolv.conf,看到里面是系统添加的dns服务器202.98.192.67。将其注释掉,改成google的免费dns:8.8.8.8。
再次
sendmail -q -v
邮件发送成功。查看邮箱,发现邮箱名是root@localhost.localdomain,典型的垃圾邮件。
这个问题说明,sendmail找邮件服务器,是通过/etc/resolv.conf中的dns服务器找的。而运营商的dns阻止了邮件服务器的搜寻,所以发送邮件出错。用google的就发送成功了。所以这个sendmail在国内的环境下不好使。
所以目前在程序里面,尽量不要使用系统的sendmail功能。最好采用电子邮局的smtp发送方式。
星期一, 02/13/2012 - 16:52 — 杨超