今天我发现我的网站联系表格大约需要20秒,在我的Godaddy Centos VPS服务器上发送邮件。20秒通过邮件发送邮件时的延迟()Apache + PHP5.3 + sendmail?
我调查了这个问题,发现源是PHP mail()
函数引起的。当我在我的网站的联系页面上输入消息并点击发送按钮时,页面加载完成前大约需要20秒。
创建具有以下PHP代码test.php的文件来测试邮件:
<?php
mail("[email protected]", "Test", "Test");
?>
我跑的命令:在服务器上php test.php
。
我检查了/var/log/maillog
,看起来电子邮件已经立即发送了,没有任何延迟。
20秒延迟只发生在我通过我的网站执行我的代码时。我认为这与Apache用户有关,因为使用root用户的命令行可以毫不拖延地发送电子邮件。
这里的邮件日志,当我通过控制台发送电子邮件与用户root:
Apr 10 14:57:04 ip-103-1-173-250 sendmail[27681]: r3ALv4i3027681: from=root, size=174, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]
Apr 10 14:57:05 ip-103-1-173-250 sendmail[27681]: r3ALv4i3027681: [email protected], ctladdr=root (0/0), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=30174, relay=myserver, dsn=2.0.0, stat=Sent (Accepted message qp 20459 bytes 684)
我在这个岗位出于安全原因更换了relay=
值与myserver
。
从上面的maillog,很明显,电子邮件是立即发送,我确实收到电子邮件。
这里的邮件日志,当我通过我的网站联系形式发送:
Apr 10 14:54:22 myhostname sendmail[27655]: r3ALsMjV027655: [email protected], size=940, class=0, nrcpts=1, msgid=<[email protected]>, [email protected]
Apr 10 14:57:56 myhostname sendmail[27655]: r3ALsMjV027655: [email protected], [email protected] (48/48), delay=00:03:34, xdelay=00:03:34, mailer=relay, pri=30940, relay=myserver, dsn=2.0.0, stat=Sent (Accepted message qp 21186 bytes 1297)
以上的maillog显示3分钟半的时间延迟。
我不知道什么是通过Apache发送时造成的延迟。
您的帮助将不胜感激。
感谢
大多是这样的延迟引起的通过网络问题 – hek2mgl 2013-04-10 22:12:30
您可以以详细模式以apache用户身份发送测试消息吗? '(echo subject:test; echo to:[email protected]; echo from:[email protected]; echo; echo test)|/usr/sbin/sendmail -i -t -v -fsupport @ mydomain.com'这可能有助于通过查找延迟交付阶段来缩小可能性。 – AnFi 2013-04-11 09:45:34