PHP Zend — Подключение к таймауту SMTP

#php #zend-framework #email #smtp #send

#php #zend-framework #Адрес электронной почты #smtp #Отправить

Вопрос:

Всем доброго дня.

У меня следующая проблема:

У меня есть cron, который отправляет запрос скрипту, который отправляет некоторые письма с помощью zend mailer.

На тестовой машине это сработало без каких-либо проблем. Проблема в том, что на рабочей машине я получаю следующую ошибку:

 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 1https://www.site.ro/newsletter/process —нет проверки сертификата

или аналогичный,

wget -O — -t 1http://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}
  

Я предложил проверить user / pass… в 7-й раз… они все еще говорят, что все в порядке.

Комментарии:

1. И вы уже проверили, что можете подключиться к SMTP-серверу со своего рабочего сервера? Потому что именно это вызывает тайм-аут, когда вы просматриваете трассировку стека…

2. Это то, что я сказал, но у меня нет прямого доступа, а ребята, которые есть, продолжают говорить (и, поверьте мне, я спрашивал их примерно 99999 раз), что все в порядке.

3. Вы могли бы попросить их проверить журналы, и если они не видят попытки подключения с вашего сервера, то это может быть проблема, связанная с брандмауэром на вашей стороне (т. Е. сервер настроен так, чтобы не разрешать исходящие соединения для определенных — привилегированных — портов). Хотя это и должно быть сбросом и не вызывать тайм-аутов, но вы никогда не знаете:p.

4. Кстати, вы также можете проверить, связана ли проблема с их стороны, используя другой SMTP-сервер… Потому что, если это сработает, это обязательно будет проблемой с их стороны.

5. Я отправил их по почте … также я попросил логи, но … это займет некоторое время.

Ответ №1:

Я хотел бы убедиться, что с вашего рабочего сервера можно связаться с SMTP, выполнив следующее из командной строки на сервере:

 $ telnet 1.2.3.4 25
  

Где 1.2.3.4 — это IP-адрес или имя хоста SMTP-сервера, к которому вы пытаетесь подключиться. Из исключения похоже, что этот адрес начинается 182.19.13...

Когда вы запустите команду, вы должны увидеть что-то вроде:

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

Если вы не видите ничего подобного, пожалуйста, опубликуйте вывод / ошибку

Комментарии:

1. Сервер smtp настроен на том же компьютере.

2. В этом случае вы могли бы попробовать изменить имя хоста, к которому вы подключаетесь — посмотрите, есть ли у вас другие результаты с внешним именем хоста (например mail.example.com или что бы это ни было), localhost, внешний ip-адрес или 127.0.0.1.