--------------------------------------------------------------其它一些收集
VPS上lnmp探针发送邮件不能成功的解决方法
在VPS上安装了lnmp0.7,用探针页面里的发送邮件功能检测是否能正确发送邮件,提示发送失败。
在另一个VPS上测试,则发送成功,邮箱立即收到测试邮件。
怀疑与操作系统有关,邮件发送成功的VPS是装的是CentOS 5,失败的VPS装的是Debian6。
换另一台装Debian6的VPS,发送邮件却同样成功。
又怀疑发送成功与否与VPS类型有关,因为成功的是OpenVZ的,失败的是Xen的。
网上搜了一下资料,参考http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux,测试发现发送邮件失败的Xen VPS上都没有安装Sendmail。
apt-get install sendmail
/etc/init.d/sendmail status
sendmail安装后,探针里发送测试邮件成功。
此前不能正确发送的原因不在于Xen或OpenVZ,也与OS无关,而是VPS部署或做集成OS时或安装某些软件时是否关联安装了sendmail。
http://1024.me/resolving-sending-mail-in-phpcheck-error/
解决服务器无法通过sendmail发送邮件问题
从2009年开始写博客,洛奇亚也算是在博客界里面算活跃的一位草根,在这个过程里面,也认识了不少的博客朋友。有的经常互访,有的时而经过留下一双足印,不管怎么样,每一位来访的朋友我都心存感激。 这样子的一个开头,可能大家会觉得我要离开或者什么,哈哈,不是,我只是想说,在这个过程中,我也看到了很多博主/站长和我一起成长。不单单我们在网站管理方面的经验日积月累,我们因为站的增长也需要升级服务器质量。而很多朋友就从免费空间升级到收费虚拟空间,有的就从虚拟空间到和朋友合租VPS,有的甚至自己独享主机。看到增长是好事情,不过可能也意味着我们需要准备迎接更多的难题。而今天,我就要跟大家分享一下我从虚拟空间搬迁到Linode VPS后一直遇到的一个问题究竟怎么样终于被解决了。
问题: 自从开博客以来,一个叫做“Comment Reply Notification”(评论回复通知)的插件我都有保留着,因为方便通知我的读者有人对他/她们的评论作出回应――通常是我的回复。但是当我用军哥的LNMP一键安装包在CentOS上面设置了Nginx + MySQL + PHP的网页服务器后,将博客放到Linode上面,竟然发觉博客再也无法发送邮件出去了。 探索过程: - LNMP安装成功的时候,在/home/wwwroot/这个根目录有一个叫做p.php的探针文件,里面在最后那里有一个测试邮件发送的表格,我输入我自己的邮件,然后点击测试,登了大概10分钟也没有收到邮件。
我连续尝试了不同的电子邮箱,都不行,甚至连spam也查看了还是没有结果。 - 然后我就怀疑是否服务器没有安装sendmail的组件,因为听说不是所有的Linux都默认安装这个组件。我用的是CentOS,而且因为软件兼容的安全起见,我选择了32位的版本,所以我输入一下的命令:
yum install sendmail
得到的回复是“Nothing to do”,也就是说,sendmail组件已经成功安装,不需要再安装了,我用下面的命令来检查是否真的:
/etc/init.d/sendmail status
如果sendmail的确是安装了,会跟我得到的结果一样,服务器会返回sendmail现在占用的进程ID,和告诉你sendmail是在running(运行中) - 然后我就考虑,是否sendmail启动不正常,所以我就尝试重启sendmail组件的服务:
/etc/init.d/sendmail restart
发现sendmail关闭和重启都没有问题,但是测试邮件发送还是失败。 - 最后,我在某国外论坛看到有人说可能需要安装postfix,于是我将它安装上去:
yum install postfix
当然,直到这一步,还是失败了。不过在我接下来提供解决办法的过程,直到问题解决,我其实都没有删除postfix,所以我也不知道是否究竟有帮助,既然没有什么影响,我就先留着。 解决方法:
说了这么多惨痛的失败经历,我终于找到问题的源头了,下面是解决方法,到最后竟然是DNS的问题而已。
首先,你要查看一下/etc/nsswitch.conf这个文件包含有下面一行设置,如果你用命令行,就直接可以vi /etc/nsswitch.conf 或者nano /etc/nsswitch.conf,具体就要看你自己喜欢那个文字编辑器了,当然你也可以用FTP下载回来本地,用更多的文字编辑软件编写好了在覆盖原来的文件,这个就不多说了。 hosts: files dns
然后,要查看/etc/resolv.conf这个文件,要保证有下面一行,同样,编辑方法跟上面一样,不重复了: domain myserver.mydomain.com
最后,要编辑/etc/hosts这个文件,要有下面两行: 127.0.0.1 localhost localhost.localdomain loopback me127.0.0.1 MyServer myserver.mydomain.com
这样子,正确的DNS已经设置好,重启服务器,应该就可以看到sendmail这个组件可以用了。
希望上面的解决方法可以帮助大家。^-^,另外,我非常感谢军哥的付出,没有他的一键安装包,可能很多人都还在纠结在服务器的配置上面。
http://www.rockia.net/2011/06/solve-send-mail-problem-with-linux
----------------------------------------------- 其它相关收集
注意的问题:
log记录将不会再存放与mail下,他使用自己的log,tail -f /var/log/exim4/mainlog
php中配置sendmail选项的时候需要注意的问题
sendmail_path = sendmail -t
原因:sendmail_path预设的参数会带有 -t -i
-i会造成Exim持续等待输入,而無法侦测到文件是否传输完毕,必须手动去掉这个参数。
配置结束后,我们需要执行update-exim4.conf使配置生效,并重启一下exim ,执行/etc/init.d/exim4 restart |