Ошибка подключения к smtp yandex

Всегда после установки виртуальной машины Битрикс, настраиваю отправку почты через Яндекс. Это один из самых удобных и бесплатных вариантов настройки отправки писем с сайта + без попадания в спам и тд.

И вот недавно у клиента возникла проблема с отправкой писем. Все работало и внезапноперестали отправляться письма. Занялся поиском решения. 

Первым делом смотрю по инструкции из стать «Проблема с отправкой писем битрикс»

Вижу что письма не уходят
SUCCESS_EXEC — F

Смотрим логи отправки почты и там видим:
Apr 20 20:54:24 host=smtp.yandex.ru tls=on auth=on user=noreply@***.by from=noreply@***.by

С виду ясно что нам не дают авторизоваться пользователю. Вопрос: почему?

Заходим на эту почту с указанным паролем в настройках сервера, все ок. Авторизоваться удалось. Значит проблема не с паролем, хотя если была бы проблема с паролем, именно такое сообщение в логах бы и было.

Но спустя недолгое время разбирательств, выяснилось что нужно установить вот эти параметры в почте пользователя (а конкретно, портальный пароль для IMAP):

Отправка писем через SMTP

Техподдержка решила вопрос в 2 подхода. Вот вкратце.

При анализе проблемы обнаружили, что на сервере устаревшие корневые сертификаты, в результате чего SSL соединение к почтовым серверам Яндекса завершалось ошибкой, пример:

[root@name /]# echo | openssl s_client -servername smtp.yandex.ru -connect smtp.yandex.ru:465 2>&1 | grep 'Verify return code'
Verify return code: 20 (unable to get local issuer certificate)
[root@name /]#

Добавили корневой сертификат Яндекса в список доверенных на сервере. Сейчас проблем с защищённым соединением к их почтовым серверам не наблюдаем:

[root@name /]# echo | openssl s_client -servername smtp.yandex.ru -connect smtp.yandex.ru:465 2>&1 | grep 'Verify return code'
Verify return code: 0 (ok)
[root@name /]#

У меня
Немного изменилась ошибка.
Было
2020-05-25 19:59:25 SMTP ERROR: Failed to connect to server: (0)
Стало
2020-05-26 20:52:58 SMTP ERROR: Failed to connect to server: Connection refused (111)

2 этап ТП:

Произвели дополнительные настройки корневых сертификатов и указали в скрипте SMTP хост для подключения.

Вот что вываливает тестовый скрипт при удачной отправке письма
5ece0e271aa20037306272.jpeg

Как это работает у меня.

$mail->SMTPDebug = SMTP::DEBUG_SERVER;
$mail->isSMTP();
$mail->Host       = 'smtp.yandex.ru';
$mail->SMTPAuth   = true;
$mail->Username   = 'noreply@mydomain.ru';	
$mail->Password   = 'пароль от ящика noreply@mydomain.ru';
    
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port       = 465;

Да ёщё полезный сервис чтоб проверить свои настройки https://www.smtper.net/ и понять что дело в хостинге а не в твоей голове ))

PS вот еще можно на PHP проверить подключение

var_dump(fsockopen("ssl://smtp.yandex.ru",465));

результат 
resource(2) of type (stream)

если подключения нет пишет
bool(false)

Благодарю Всех кто откликнулся!!!

Пробовал все три протокола, SMTP, SMTPS, SMTPTLS, безуспешно. Приложу логи, может по ним что то понятно. Повторюсь, сбор почты идет штатно, а вот отправка не происходит.

OTRS-otrs.Console.pl-Maint::Email::MailQueue-10 There was an error executing Execute() in Kernel::System::Console::Command::Maint::Email::MailQueue: [Mon Oct 15 11:05:07 2018] otrs.Daemon.pl: using SSL support of Net::SMTP 3.10 instead of SSLGlue at /opt/otrs/Kernel/cpan-lib/Net/SSLGlue/SMTP.pm line 12.

OTRS-otrs.Console.pl-Maint::Email::MailQueue-10 CommunicationLog(ID:9114,AccountType:-,AccountID:-,Direction:Outgoing,Transport:Email,ObjectLogType:Message,ObjectLogID:16082)::Kernel::System::MailQueue => Permanent sending problem or we reached the sending attempt limit. Message will be removed

OTRS-otrs.Console.pl-Maint::Email::MailQueue-10 CommunicationLog(ID:9114,AccountType:-,AccountID:-,Direction:Outgoing,Transport:Email,ObjectLogType:Message,ObjectLogID:16082)::Kernel::System::MailQueue => Message could not be sent! Error message: SMTP authentication failed: 535, 5.7.8 Error: authentication failed: Invalid user or password!

OTRS-otrs.Console.pl-Maint::Email::MailQueue-10 CommunicationLog(ID:9114,AccountType:-,AccountID:-,Direction:Outgoing,Transport:Email,ObjectLogType:Message,ObjectLogID:16082)::Kernel::System::Email => Error sending message using backend ‘Kernel::System::Email::SMTPS’.

OTRS-otrs.Console.pl-Maint::Email::MailQueue-10 CommunicationLog(ID:9114,AccountType:-,AccountID:-,Direction:Outgoing,Transport:Email,ObjectLogType:Connection,ObjectLogID:16083)::Kernel::System::Email::SMTP => SMTP authentication failed (SMTP code: 535, ErrorMessage: 535, 5.7.8 Error: authentication failed: Invalid user or password!

Использую пароль приложений, который генерируется в настройках почты.

22 минуты назад, Sever сказал:

Т.е. обязательно должен быть домен сайта в почте?

А то недавно поменяли почту на обычный ящик @yandex.ru , и очень интересно выходит — с формы обратной связи письма приходят на ура, а вот если Задать вопрос о товаре — вообще ничего.

Может быть из-за этого? Отправка через SMTP

На некоторых хостингах бывает такое, что если ящик отправителя указан не в такой же как домен, то и отправка не работает.

Не знаю, может как раз похожий случай.

Хотя конечно странно, раз обратная связь работает.

Код ведь одинаковый.

Попробуйте в /ask_question.php поменять:

	vam_php_mail(filter_var(EMAIL_SUPPORT_ADDRESS, FILTER_VALIDATE_EMAIL), EMAIL_SUPPORT_NAME, EMAIL_SUPPORT_ADDRESS, STORE_NAME, EMAIL_SUPPORT_FORWARDING_STRING, filter_var($to_email_address, FILTER_VALIDATE_EMAIL), $to_name, '', '', NAVBAR_TITLE_ASK, $html_mail, $txt_mail);
			vam_php_mail(CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_EMAIL_ADDRESS, CONTACT_US_NAME, CONTACT_US_FORWARDING_STRING, $to_email_address, $to_name, '', '', CONTACT_US_EMAIL_SUBJECT, $html_mail, $txt_mail);

на:

Организация пользуется почтовым сервером Яндекса и требуется отправлять письма через него. Если создать аккаунт на почтовом сервере и попытаться отправить письма, возникают ошибки:

phpmailerException: Ошибка SMTP: нельзя соединиться с хостом SMTP. в функции PHPMailer->SmtpConnect() (строка 825 в файле /var/www/repo/drupal7/modules/smtp/smtp.phpmailer.inc).

Error sending e-mail from robot@example.com to usermail@example.com : Ошибка SMTP: нельзя соединиться с хостом SMTP.

Причина банальна: Яндекс детектирует отправку письма роботом, а не человеком, и потому блокирует её.

Чтобы письма отправлялись, надо зайти на почту в Яндексе и сгенерировать «пароль приложений» и вместо пароля пользователя в настройках модуля SMTP указать именно пароль приложений.

У Gmail не проверял, но видимо там аналогичная ситуация.

Рабочие настройки:

настройки для почты яндекса

  • Предлагаю решение
  • Решение проблем

Понравилась статья? Поделить с друзьями:
  • Ошибка подключения к openid провайдеру
  • Ошибка подключения к net в телефоне
  • Ошибка подключения к mysql что это
  • Ошибка подключения к mysql connection refused brainycp
  • Ошибка подключения к kalkancryptcom dll класс не зарегистрирован