【问题标题】:PHP Zend - Connect to SMTP timeoutPHP Zend - 连接到 SMTP 超时
【发布时间】:2011-08-17 15:45:25
【问题描述】:

祝大家今天好。

我有以下问题:

我有一个 cron 向使用 zend 邮件程序发送一些邮件的脚本发送请求。

在测试机器上它没有任何问题。问题是在生产机器上出现以下错误:

xception 'Zend_Mail_Protocol_Exception' with message 'Connection timed out' in /var/www/html/site/include/Zend/Mail/Protocol/Abstract.php:254
Stack trace:
#0 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp.php(167): Zend_Mail_Protocol_Abstract->_connect('tcp://182.19.13...')
#1 /var/www/html/bca/include/Zend/Mail/Transport/Smtp.php(199): Zend_Mail_Protocol_Smtp->connect()
#2 /var/www/html/bca/include/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail()
#3 /var/www/html/bca/include/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail))
#4 /var/www/html/bca/include/DatabaseObject/Newsletter.php(249): Zend_Mail->send()
#5 /var/www/html/bca/include/Controllers/NewsletterController.php(551): DatabaseObject_Newsletter->sendEmail('', 'f04e3ae3586c39f...')
#6 /var/www/html/bca/include/Zend/Controller/Action.php(513): NewsletterController->processAction()
#7 /var/www/html/bca/include/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('processAction')
#8 /var/www/html/bca/include/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 /var/www/html/bca/public_html/index.php(660): Zend_Controller_Front->dispatch()

我运行的 cron 是:

wget -O - -t 1 https://www.site.ro/newsletter/process --no-check-certificate

或者,类似的,

wget -O - -t 1 http://www.site.ro/newsletter/process

当我第一次收到问题时,我告诉他们检查 SMTP 配置,但 ppl.那个配置坚持认为配置没问题。所以……我不知道。似乎缺乏连接,但他们仍然坚持认为没问题。有什么帮助吗?

嗯……我不知道他们做了什么……但现在他们明白了:

exception 'Zend_Mail_Protocol_Exception' with message '5.3.3 AUTH mechanism LOGIN not     available ' in /var/www/html/bca/include/Zend/Mail/Protocol/Abstract.php:408 Stack     trace:
#0 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp/Auth/Login.php(91): Zend_Mail_Protocol_Abstract->_expect(334) 
#1 /var/www/html/bca/include/Zend/Mail/Protocol/Smtp.php(217): Zend_Mail_Protocol_Smtp_Auth_Login->auth() 
#2 /var/www/html/bca/include/Zend/Mail/Transport/Smtp.php(200): Zend_Mail_Protocol_Smtp->helo('localhost') 
#3 /var/www/html/bca/include/Zend/Mail/Transport/Abstract.php(348): Zend_Mail_Transport_Smtp->_sendMail() 
#4 /var/www/html/bca/include/Zend/Mail.php(1178): Zend_Mail_Transport_Abstract->send(Object(Zend_Mail)) 
#5 /var/www/html/bca/include/DatabaseObject/Newsletter.php(249): Zend_Mail->send() 
#6 /var/www/html/bca/include/Controllers/NewsletterController.php(551): DatabaseObject_Newsletter->sendEmail('', 'f04e3ae3586c39f...') 
#7 /var/www/html/bca/include/Zend/Controller/Action.php(513): NewsletterController->processAction() 
#8 /var/www/html/bca/include/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('processAction') 
#9 /var/www/html/bca/include/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) 
#10 /var/www/html/bca/public_html/index.php(660): Zend_Controller_Front->dispatch() 
#11 {main}

我建议第七次检查用户/通行证...他们仍然说没问题。

【问题讨论】:

  • 您是否已经检查过是否可以从生产服务器连接到 SMTP 服务器?因为当您查看堆栈跟踪时,这就是导致超时的原因...
  • 我就是这么说的,但我没有直接访问权限,而且那些有权限的人一直在说(相信我,我问了他们大约 99999 次)一切都很好。
  • 您可以要求他们检查日志,如果他们没有看到来自您的服务器的连接尝试,则可能是您端的防火墙相关问题(即服务器未配置允许特定 - 特权 - 端口的出站连接)。即使这应该是一个下降并且不会导致超时,但你永远不知道:p。
  • 顺便说一句,您还可以通过使用另一个 SMTP 服务器来测试问题是否出在他们身上......因为如果这样有效,那肯定是他们身上的问题。
  • 我邮寄给他们了...我也要求提供日志但是...这需要一段时间。

标签: php zend-framework email smtp send


【解决方案1】:

我将通过在服务器上的命令提示符下运行以下命令来验证是否可以从您的生产服务器联系 SMTP:

$ telnet 1.2.3.4 25

其中 1.2.3.4 是您尝试连接的 SMTP 服务器的 IP 地址或主机名。从异常看来,这个地址开始于182.19.13...

当您运行命令时,您应该会看到如下内容:

Connected to foo.
Escape character is '^]'.
220 foo ESMTP Postfix (Ubuntu)

如果您没有看到类似的内容,请发布输出/错误

【讨论】:

  • smtp服务器配置在同一台机器上。
  • 在这种情况下,您可以尝试更改要连接的主机名 - 看看您是否与外部主机名(例如 mail.example.com 或其他任何名称)、本地主机名、外部主机名有不同的结果ip地址或127.0.0.1。
猜你喜欢
  • 1970-01-01
  • 2014-11-29
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 2018-07-08
相关资源
最近更新 更多