我有一个Sendmail的Ubuntu机器。
每当我发出一个PHP邮件()函数,电子邮件即时交付(收到我的收件箱在其他域),但PHP进程等待,等待很长时间约1分钟才返回true。
这是非常烦人的,因为浏览器似乎挂起。
什么可能是错的?
做networking请求时首先检查长时间延迟是dns问题。 在你的机器上尝试一些dns查找,例如nslookup otherserver.foo.com 。 在远程机器上,尝试查找本地计算机。 尝试做DNS查询的IP地址,看看反向查找是否有问题。
如果您直接在机器上发送邮件,这种延迟是否会发生,即:
mail -s "test message" [email protected] </dev/null
我不知道PHP邮件()函数如何工作。 你需要弄清楚它是如何在机器上调用sendmail的 – 是否有这样的事情发生,导致sendmail进程发送邮件,但随后坐在那里很长一段时间什么也不干。
在你的机器上检查/var/log/sendmail和/var/log/messages以查看/var/log/messages是否有任何有趣的sendmail消息。
它是否真的安装了sendmail ? 我以为Ubuntu默认安装了postfix ? 在任何情况下, sendmail本身都很难configuration,甚至更难debugging的问题。 所以我build议切换到另一个MTA。 试图发送邮件的程序不会注意到区别。
其次,PHP的mail()函数是非常挑剔的,并试图为你做一些事情。 如果你没有提供足够的头部参数,尤其如此,因为它将一些猜测留给了MTA。 我build议你findPHPMailer或类似的。 这有一个更好的API,让你更多地控制发生的事情,并build立比mail()更多的合理的默认值。