PHP电子邮件的问题

我目前有一个与Slicehost的VPS,我无法使用PHP函数邮件从我的服务器发送电子邮件。 我的服务器运行Centos 5.2,Apache 2,PHP 5.2和MySQL 5.我不知道很多关于服务器/电子邮件,但我认为这个问题将是我缺less一些明显的软件包,例如后缀,鸽舍…

我有我的MXlogging目前指向Rackspace电子邮件。 另外我不希望我的电子邮件被标记为垃圾邮件,不知道需要做什么,以避免这种情况。

谢谢,

我对CentOS并不完全熟悉,但对于Ubuntu,默认情况下,它并不带有SMTP服务器。 一个简单的安装和使用sSMTP,我相信是在CentOS的存储库。 sSMTP是严格使用发送邮件,我不相信支持用户身份validation或邮箱内部像一个更全面的SMTP服务器,如Postfix或QMail。

使用PHP发送邮件是好的。 我也相信你可以在/ etc中configurationsSMTP来把电子邮件转发到另一个MX Mail服务器。

更多信息:

http://www.linux.com/archive/feature/132006

请原谅我的回答啰嗦,只是想彻底。 :)按照你的问题的顺序:

发送电子邮件

PHP mail()函数调用本地的sendmail命令,大多数MTA用它们自己的二进制文件replace为包装器。 大多数发行版也干净地安装他们的默认设置MTA的select,以开箱即用。

MTA运行

看来默认的CentOS 5 MTA是sendmail。 第一个问题是为什么 sendmail似乎没有在你的机器上运行 – 你是否特意select不安装它,还是不是你的select? 假设Slicehost 没有删除它,你仍然需要确认为什么/如果它没有运行:

 # rpm -qa | grep sendmail 

如果输出显示没有安装sendmail,则可以对postfix和exim执行相同的操作,CentOS上其他可能的MTA:

 # rpm -qa | grep 'postfix\|exim' 

如果没有安装,我build议从CentOS软件包安装postfix,虽然YMMV 。

如果安装了MTA,请检查它是否正在运行:

 # ps aux | grep 'post\|exim\|send' # netstat -nupt -l | grep 25 

如果没有进程正在运行,并且没有任何内容正在监听端口25,但是软件包似乎已经安装,请检查是否存在有问题的MTA的初始化脚本:

 # ls -alh /etc/init.d/{send,post,exim}* 

如果没有,您需要清除RPM并重新安装,因为如果这是自定义安装,则无法知道已经和未被破坏的内容。 如果是,请尝试启动它:

 # /etc/init.d/postfix start 

这个输出应该可以帮助你诊断是否有问题,否则就不会有问题,再次执行一个netstat或者telnet到端口25应该显示它正在监听。 如果有问题,那么我build议你在这个网站上寻求帮助或者与Slicehost交谈。 如果所有的都是有效的,最后一件事就是确保在启动时加载init脚本:

 # chkconfig --list postfix 

输出将列出指定init脚本的运行级别,虽然每个发行版都不同,但是您应该在运行级别数字旁边看到“on”,类似于:

 # postfix 0:off 1:off 2:on 3:on 4:on 5:on 6:off 

如果看到太多的“off”,请继续添加默认运行级别:

 # chkconfig postfix on 

MX,垃圾邮件等

MX是一个邮件交换DNSlogging – 在这个讨论中,它与发送邮件无关。 它被其他方试图发送邮件给你使用 。 关于垃圾邮件 – 这也不是你要控制的东西。 想象一下,任何有权访问* nix框的人都可以将其出站邮件标记为“不是垃圾邮件”。

更多信息

最后,我应该开始的部分是:假设问题不是MTA问题,您需要提供更多信息给任何人以帮助您。 是的,你无法发送邮件,但有什么症状? PHP给你一个错误响应? 如果是这样,那是什么? 如果没有,是否启用了完整的debugging输出? 你有没有在任何服务器日志中看到什么 ? 等等。

希望这可以帮助。