SMTP Mail.ru не работает: почему письма с сайта не уходят
Если сайт перестал отправлять письма через smtp.mail.ru, причина почти всегда одна из четырёх: вместо пароля для внешнего приложения указан обычный пароль от ящика, адрес отправителя не совпадает с ящиком, под которым идёт вход, перепутаны порт и тип шифрования или хостинг закрыл исходящие почтовые порты. Быстрее всего место поломки показывает текст ошибки в журнале. Ниже — таблица ошибок, проверка по шагам и что делать с заявками, которые уже потерялись.
Сначала найдите текст ошибки
Форма на сайте обычно пишет «Заявка отправлена», даже если письмо не ушло. Поэтому смотреть нужно в журнал: лог почтового плагина в WordPress, журнал ошибок PHP или вывод библиотеки отправки (PHPMailer, Nodemailer, Symfony Mailer) в режиме отладки. Нужна строка с ответом сервера — трёхзначный код и текст после него.
| Что в журнале | Где проблема | Что делать |
|---|---|---|
| 535 5.7.0 ... Application password is REQUIRED | Обычный пароль вместо пароля для приложения | Создать пароль для внешнего приложения и указать его в настройках сайта |
| 535 Authentication failed | Логин или пароль | Логин — полный адрес ящика; пароль приложения скопирован без пробелов и не отозван |
| 550 not local sender over smtp | Отправитель не совпадает с ящиком | В поле From указать тот же адрес, под которым идёт вход |
| Connection timed out, Network is unreachable | Сеть до сервера | Хостинг закрыл исходящие порты 465/587 или неверно указан сервер |
| SSL routines ... wrong version number | Перепутано шифрование | 465 — SSL/TLS сразу, 587 — STARTTLS |
Если кода нет, а форма просто «молчит», скорее всего сайт вообще не использует SMTP и отправляет через встроенную функцию mail() сервера. Такие письма Mail.ru и другие почтовые сервисы часто отклоняют или кладут в спам. Решение — настроить отправку через SMTP с авторизацией.
Правильные настройки SMTP Mail.ru
- сервер: smtp.mail.ru;
- порт 465 с шифрованием SSL/TLS или порт 587 с STARTTLS;
- логин — полный адрес ящика, например zayavki@mail.ru или адрес на вашем домене, подключённом к почте Mail.ru;
- пароль — пароль для внешнего приложения, а не пароль от ящика;
- адрес отправителя (From) — тот же ящик, что и логин.
Пароль для внешнего приложения создаётся в настройках безопасности аккаунта Mail.ru: даёте ему понятное название вроде «сайт, формы» и выбираете доступ к отправке почты. Пароль показывается один раз — сразу вставьте его в настройки сайта. Если отозвать такой пароль, отправка с сайта остановится, а ящик продолжит работать как обычно. Порядок действий описан в справке Mail.ru о почтовых программах.
Проверка по шагам
- Отправьте тестовую заявку и сразу откройте журнал. Запишите точный текст ответа сервера.
- Если ошибка 535 — создайте новый пароль для внешнего приложения и вставьте его вместо старого. Проверьте, что логин указан полным адресом.
- Если 550 not local sender — приведите поле From к адресу ящика. Имя отправителя можно оставить любым, адрес — нет. В WordPress включите в почтовом плагине принудительное использование этого адреса, чтобы формы не подставляли свой.
- Если таймаут — проверьте с сервера сайта, открывается ли соединение: команда openssl s_client -connect smtp.mail.ru:465 должна показать сертификат. Если соединение висит, порт закрыт на стороне хостинга.
- Если хостинг закрыл порты, спросите у поддержки, как у них разрешена отправка. Многие хостинги блокируют исходящие 25, 465 и 587 против спама и открывают их по заявке или предлагают свой почтовый шлюз.
- После исправления отправьте несколько тестовых писем на разные адреса — Mail.ru, Яндекс и Gmail — и проверьте папку «Спам».
В коде параметры те же для любого стека: host smtp.mail.ru, port 465 и secure: true либо port 587 с STARTTLS, user — адрес ящика, pass — пароль приложения. Храните пароль в переменных окружения, а не в коде, который попадает в репозиторий.
Почему «вчера работало, а сегодня нет»
- Сайт много лет отправлял с обычным паролем. Mail.ru требует пароль для внешнего приложения для доступа по SMTP — старая настройка перестаёт работать, и в журнале появляется «Application password is REQUIRED».
- Сменили пароль от ящика или включили двухфакторную защиту. Пароли приложений могли отозвать — создайте новый.
- Переехали на новый хостинг или VPS. На новом месте исходящие почтовые порты часто закрыты по умолчанию.
- Обновили CMS или почтовый плагин. Настройки SMTP сбросились, и сайт вернулся к функции mail().
Письма уходят, но попадают в спам
Если письма отправляются с адреса на вашем домене, проверьте DNS-записи: SPF должен разрешать отправку через Mail.ru, DKIM — быть включён, DMARC — существовать хотя бы в режиме мониторинга. Сгенерировать записи можно в генераторе SPF, DKIM и DMARC, подробности — в статье о защите почты компании.
Обычный почтовый ящик рассчитан на переписку, а не на поток уведомлений. Если сайт отправляет сотни писем в день — заказы, регистрации, рассылки, — почтовый сервис может ограничить отправку. Для такого объёма нужен транзакционный почтовый сервис или собственный почтовый сервер.
Как не терять заявки, пока почта не работает
Многие плагины форм сохраняют заявки в базе сайта, даже если письмо не ушло. Выгрузите их за весь период поломки и свяжитесь с клиентами в тот же день.
Чтобы следующий сбой почты не прошёл незамеченным, дублируйте каждую заявку в Telegram или сразу в CRM. Если письма снова перестанут уходить, менеджер всё равно получит обращение. Если сайт отправляет через Яндекс, ошибки и настройки разобраны в статье про SMTP Яндекса, а через Google — в статье про SMTP Gmail.
Если разбираться с журналами некогда, поможем срочно: диагностика за 1–2 часа от 4 900 ₽, перенастройка отправки через SMTP — 4 900 ₽, выгрузка потерянных заявок — 3 900 ₽. Подробнее на странице «Не приходят заявки с сайта».
Материалы для проверки
Если нужна реализация
Состав работ зависит от текущего проекта и подтверждённой причины. Можно обсудить диагностику или разработку подходящего решения.
Вопросы и ответы
Какой порт использовать для smtp.mail.ru — 465 или 587?
Оба рабочие. На 465 шифрование SSL/TLS включается сразу при подключении, на 587 соединение начинается открытым и переключается командой STARTTLS. Ошибка «wrong version number» почти всегда значит, что порт и тип шифрования перепутаны.
Что значит «Application password is REQUIRED»?
Mail.ru не принимает обычный пароль от ящика для отправки через SMTP. Нужно создать пароль для внешнего приложения в настройках безопасности аккаунта и указать его в настройках сайта вместо обычного пароля.
Почему Mail.ru пишет «550 not local sender over smtp»?
Адрес отправителя в письме не совпадает с ящиком, под которым сайт входит на сервер. Укажите в поле From тот же адрес, что и в логине.
Можно ли отправлять рассылки с сайта через ящик Mail.ru?
Для уведомлений о заявках — да. Для массовых рассылок и сотен писем в день — нет: почтовый сервис может ограничить ящик. Для такого потока нужен транзакционный почтовый сервис или свой почтовый сервер.