Sendmail 发送电子邮件出现异常超时

Sendmail 发送电子邮件出现异常超时

我有一台装有 Sendmail 的 Ubuntu 机器。

每当我发出 PHP mail() 函数时,电子邮件就会立即送达(在其他域的收件箱中收到),但 PHP 进程会等待很长时间(大约 1 分钟)才返回 true。

这非常烦人,因为会导致浏览器挂起。

可能出了什么问题?

答案1

执行网络请求时,首先要检查是否存在长时间延迟,即 DNS 问题。例如,在您的机器上尝试进行一些 DNS 查找nslookup otherserver.foo.com。在远程机器上,尝试对本地机器进行相同的查找。尝试对 IP 地址进行 DNS 查找,看看反向查找是否有问题。

如果您直接在机器上发送邮件,是否会发生这种延迟,即:

mail -s "test message" [email protected] </dev/null

我不知道 php mail() 函数是如何工作的。您需要弄清楚它究竟是如何在机器上调用 sendmail 的 - 它执行该操作的方式是否会导致 sendmail 进程发送邮件,但之后很长时间没有执行任何操作?

检查您的机器/var/log/sendmail/var/log/messages查看日志中是否有任何有趣的 sendmail 消息。

答案2

你真的sendmail安装了它吗?我以为 Ubuntu 是postfix默认安装的?无论如何,sendmail它本身很难配置,调试问题就更难了。所以我建议切换到另一个 MTA。尝试发送邮件的程序不会注意到差异。

其次,PHP 的mail()函数非常挑剔,会尝试为您做一些事情。如果您没有提供足够的标头参数,情况尤其如此,因为这会将一些猜测留给 MTA。我建议您使用 findPHPMailer或类似工具。它具有更好的 API,可让您更好地控制正在发生的事情,并且设置了比它更合理的默认值mail()

相关内容