«Mail delivery failed: returning message to sender» — что значит и что делать

«Mail delivery failed: returning message to sender» переводится как «Сбой доставки почты: письмо возвращается отправителю». Это автоматическое уведомление о недоставке: почтовый сервер не смог доставить ваше письмо одному или нескольким адресатам и вернул его вам. Причина записана внутри уведомления в строке с кодом ответа, например 550 5.1.1 User unknown, и именно её нужно найти первой.
Такую тему ставит почтовый сервер Exim, который работает, например, на хостингах с панелью cPanel. Другие серверы называют это письмо иначе: Postfix пишет «Undelivered Mail Returned to Sender», Gmail — «Delivery Status Notification (Failure)», Mail.ru — «Ваше сообщение не доставлено». Ниже разберём, из чего состоит уведомление, как читать код ошибки и что делать: отдельно тому, кто получил его в личный ящик, и тому, чей сайт или сервис отправляет письма клиентам.
Как называется уведомление у разных серверов
Уведомление о недоставке по-английски называют bounce или NDR (non-delivery report). Отправитель у него обычно служебный: Mailer-Daemon, Mail Delivery System или postmaster.
| Тема письма | Кто отправил | Перевод |
|---|---|---|
| Mail delivery failed: returning message to sender | Exim (хостинги, cPanel) | Сбой доставки: письмо возвращается отправителю |
| Undelivered Mail Returned to Sender | Postfix | Недоставленное письмо возвращено отправителю |
| Delivery Status Notification (Failure) | Gmail | Уведомление о статусе доставки: сбой |
| Ваше сообщение не доставлено. Mail failure. | Mail.ru | — |
| Недоставленное сообщение | Яндекс Почта | — |
| Undeliverable: «тема письма» | Microsoft Exchange, Outlook.com | Не может быть доставлено |
Если в теме стоит «Delayed», «Warning: message delayed» или «Delivery Status Notification (Delay)», письмо ещё не потеряно: сервер получил временный отказ и продолжает попытки. Это предупреждение, а не возврат.
Из чего состоит уведомление о недоставке
Типичный возврат от Exim выглядит так:
This message was created automatically by mail delivery software.
A message that you sent could not be delivered to one or more of its
recipients. This is a permanent error. The following address(es) failed:
ivan.petrov@example.com
host mx.example.com [203.0.113.25]
SMTP error from remote mail server after RCPT TO:<ivan.petrov@example.com>:
550 5.1.1 <ivan.petrov@example.com>: Recipient address rejected: User unknown
Читать его нужно снизу вверх, от технической строки к общим словам.
- «This is a permanent error» — ошибка постоянная: повторная отправка того же письма на тот же адрес не поможет. Если ошибка временная, Exim пишет, что продолжит попытки.
- Адрес под «The following address(es) failed» — кому именно письмо не доставлено. Остальные адресаты из того же письма его получили.
host mx.example.com [203.0.113.25]— какой сервер отказал. Обычно это сервер получателя, но иногда ваш собственный: например, если он не принял письмо на отправку.after RCPT TO— на каком шаге SMTP-диалога пришёл отказ. ПослеRCPT TOотказывают в адресе получателя, послеDATAили «end of data» — в самом письме: по содержанию, размеру или репутации.- Строка с кодом — сам диагноз. Её разбираем в следующем разделе.
У Postfix то же самое разложено иначе: вступление «This is the mail system at host…», затем строка вида <ivan.petrov@example.com>: host mx.example.com[203.0.113.25] said: 550 5.1.1 … (in reply to RCPT TO command).
Машиночитаемая часть
Кроме текста для человека, уведомление обычно содержит часть message/delivery-status по RFC 3464. Почтовый клиент показывает её как вложение или прячет совсем, но по ней удобнее всего разбирать отказы программно.
Reporting-MTA: dns; mail.hosting.ru
Action: failed
Final-Recipient: rfc822; ivan.petrov@example.com
Status: 5.1.1
Remote-MTA: dns; mx.example.com
Diagnostic-Code: smtp; 550 5.1.1 <ivan.petrov@example.com>: Recipient address rejected: User unknown
| Поле | Что в нём |
|---|---|
Action |
failed — не доставлено, delayed — доставка откладывается |
Final-Recipient |
адрес, на котором доставка остановилась |
Status |
расширенный код ошибки |
Remote-MTA |
сервер, который отказал |
Diagnostic-Code |
дословный ответ этого сервера |
Последней частью уведомления обычно идёт ваше исходное письмо или его заголовки, чтобы было видно, какое именно письмо вернулось.
Как прочитать код ошибки
В строке 550 5.1.1 User unknown три части.
Базовый код 550 из трёх цифр определён в RFC 5321. Первая цифра важнее остальных: 4 — временная ошибка, сервер просит попробовать позже; 5 — постоянная, повтор не поможет. Возврат с темой «Mail delivery failed» почти всегда означает 5xx или временную ошибку, которая так и не прошла за несколько дней попыток.
Расширенный код 5.1.1 определён в RFC 3463 и уточняет причину. Вторая цифра обозначает класс проблемы: 1 адрес, 2 почтовый ящик, 3 почтовая система, 4 сеть и маршрутизация, 5 протокол, 6 содержимое, 7 безопасность и политика. Так, 5.1.x почти всегда означает проблему с адресом, а 5.7.x — отказ по политике: спам, аутентификация, чёрный список.
Текст после кода пишет администратор принимающего сервера, и он бывает информативнее кода. Mail.ru, например, часто объясняет причину словами, а Gmail даёт ссылку на свою справку.
Полный справочник кодов с примерами ответов разных серверов собран в разделе об ошибках доставки.
Почему письмо не доставлено: частые причины
| Ответ сервера | Что случилось | Что делать |
|---|---|---|
550 5.1.1 User unknown, No such user |
такого ящика нет | проверить адрес на опечатки; разбор для Gmail |
550 … user is terminated |
ящик на Mail.ru удалён | писать на адрес больше не нужно |
552 5.2.2 Mailbox full, over quota |
у получателя закончилось место | связаться другим способом и повторить позже |
552 5.3.4 Message size exceeds fixed limit |
письмо слишком большое | уменьшить вложения или отправить ссылку на файл |
550 5.7.1 … SPAM |
письмо сочли спамом | проверить аутентификацию и репутацию домена; разбор для Яндекса |
550 5.7.26 … DMARC |
письмо не прошло DMARC | настроить SPF и DKIM для домена отправителя; разбор |
554 5.7.1 Relay access denied |
сервер не согласился пересылать письмо | отправлять через сервер с авторизацией; разбор |
Host or domain name not found, нет MX |
у домена получателя нет почтового сервера | проверить домен после @; разбор |
retry timeout exceeded |
несколько дней временных отказов | разобраться с исходной временной ошибкой в тексте |
Если вы получили уведомление в личный ящик
Чаще всего причина простая и решается за минуту.
- Проверьте адрес. Опечатки вроде
gmial.com,yandex.ry,mail.ri, лишняя точка или пробел дают ответ «User unknown» или «domain not found». Сравните адрес с тем, что прислал сам адресат. - Посмотрите на размер письма. У каждого сервера свой предел размера, и письмо с вложениями в десятки мегабайт часто возвращается с кодом
552. Отправьте ссылку на файл в облаке. - Если ящик переполнен, подождите или сообщите адресату другим способом. Сервер сейчас отказывает всем отправителям.
- Если в ответе есть слово «spam» или «policy», проблема на стороне вашего почтового ящика или домена. Для личного ящика на Яндексе или Mail.ru это бывает, когда с него недавно ушло много писем или его взломали. Проверьте папку «Отправленные» и смените пароль.
Пришёл возврат на письмо, которого вы не отправляли
Это отражённый спам (backscatter). Кто-то разослал письма от вашего имени, подставив ваш адрес в поле From или в обратный адрес, а серверы, которые не приняли эти письма, вернули уведомления вам. Поддержка Яндекса объясняет такие возвраты так же: ваш ящик в отправке не участвовал.
Если в «Отправленных» этих писем нет, ящик, скорее всего, не взломан, и отвечать на уведомления не нужно. Если у вас свой домен, опубликуйте для него DMARC с политикой quarantine или reject: тогда серверы, которые проверяют DMARC, перестанут принимать подделки. Составить запись поможет генератор DMARC.
Письмо не доставлено: Mail.ru
У Mail.ru возврат приходит с адреса mailer-daemon@corp.mail.ru и начинается словами «К сожалению, Ваше письмо не может быть доставлено одному или нескольким получателям». Ниже идёт английский блок с технической строкой. Частые ответы:
Local mailbox … is unavailable: user not foundилиuser is terminated— ящика нет или он удалён;Message rejected under suspicion of SPAM— письмо сочли спамом;Ratelimit exceeded for mailbox— вы отправили со своего ящика слишком много писем за час, и Mail.ru временно ограничил отправку.
Если письма вашего сайта или сервиса возвращаются
Владельцу сайта уведомления о недоставке полезны: по ним видно, какие адреса в базе мертвы и отклоняют ли почтовые сервисы ваш домен.
Куда приходят возвраты
Уведомление уходит не на адрес в поле From, а на адрес конверта, указанный в команде MAIL FROM (его видно в заголовке Return-Path у доставленного письма). Если сайт отправляет с noreply@, все возвраты падают в ящик, который никто не читает, и о мёртвых адресах вы не узнаете.
Что делать с возвратами
- Постоянный отказ (
5xx) на адрес получателя — исключите адрес из рассылок. Повторная отправка на несуществующие ящики портит репутацию домена. - Временный отказ (
4xx) — повторяйте с растущим интервалом. Если временные отказы от одного сервиса идут потоком, вы упёрлись в его ограничения темпа или репутации. - Отказ по политике (
5.7.x) — проблема в отправителе: аутентификация, репутация, содержание. Исключать адрес бессмысленно: разбираться нужно с доменом.
Не разбирайте возвраты по тексту ответа: у каждого сервера он свой. Опирайтесь на расширенный код из поля Status и на поле Action.
Как это устроено в FMailer
Когда сервер получателя отказывает прямо в SMTP-сессии, а так происходит с большинством отказов, FMailer не присылает уведомление письмом. Отказ записывается в журнал домена у конкретного письма с дословным ответом сервера и приходит в ваше приложение вебхуком: bounced для постоянного отказа, deferred для временного, после которого доставка будет повторена. Для частых ошибок в журнале есть ссылка на страницу с разбором.
Пометить адрес в вашей базе удобно прямо в обработчике вебхука bounced. Письмо на адрес из списка исключений домена (например, адрес отписавшегося получателя) не отправляется вовсе, и приходит событие dropped. Отложенные возвраты, которые сервер получателя присылает уже после приёма письма, уходят на адрес конверта. По умолчанию это адрес из поля From, но для домена можно задать return path — адрес, который кто-то действительно читает. Параметры отправки описаны в документации по SMTP.
Частые ошибки
Переотправлять письмо без изменений. Если ошибка постоянная, сервер ответит то же самое. Сначала прочитайте код.
Читать только тему. «Mail delivery failed» ничего не говорит о причине. Диагноз всегда в строке с кодом внизу.
Считать, что письмо не дошло никому. Возврат перечисляет только адреса, на которые доставка не удалась. Остальные получили письмо.
Отправлять с сайта от noreply@ без обработки возвратов. Мёртвые адреса копятся, доля отказов растёт, и домен постепенно теряет репутацию.
Отвечать на возврат. Письмо пришло со служебного адреса, который никто не читает.
Удалять адрес из базы при отказе 5.7.x. Это отказ вашему домену, а не проблема адреса. Удалив адрес, вы потеряете клиента и не решите проблему.
Частые вопросы
Как перевести «Mail delivery failed: returning message to sender»?
«Сбой доставки почты: письмо возвращается отправителю». Близкий по смыслу «Undelivered Mail Returned to Sender» переводится как «Недоставленное письмо возвращено отправителю».
Почему уведомление пришло через сутки или через несколько дней?
Сервер получал временные отказы и продолжал попытки. RFC 5321 рекомендует повторять не чаще раза в 30 минут и не сдаваться раньше чем через 4–5 дней, поэтому окончательный возврат с пометкой вроде «retry timeout exceeded» приходит не сразу. Пока идут попытки, многие серверы присылают предупреждение о задержке.
Если уведомления нет, значит, письмо дошло?
Это значит, что сервер получателя принял письмо. Попало ли оно во «Входящие» или в «Спам», уведомление о недоставке не скажет: папку выбирает фильтр уже после приёма.
Что делать, если адрес точно правильный, а письмо возвращается с «User unknown»?
Уточните адрес у получателя другим способом. Ящик могли удалить, переименовать или заблокировать за неактивность, а в корпоративной почте частая причина — увольнение сотрудника.
Почему письмо не доставлено, если раньше на этот адрес всё уходило?
Изменилось что-то на одной из сторон: ящик переполнен или удалён, у получателя поменялся почтовый сервер, или ваш домен попал под фильтр. Код в уведомлении покажет, какой из вариантов ваш.
Итог
В уведомлении «Mail delivery failed» есть всё, чтобы понять причину. Найдите в нём адрес, сервер и строку с кодом: первая цифра скажет, временная ошибка или постоянная, класс расширенного кода покажет, что сломалось, а текст ответа уточнит детали. Человеку обычно хватает проверки адреса и размера вложения. Владельцу сайта стоит обрабатывать возвраты системно: исключать мёртвые адреса, повторять временные отказы и разбираться с доменом, если отказы идут по политике.
Попробовать FMailer
Подключите домен на fmailer.ru, и каждый отказ будет виден в журнале у конкретного письма с дословным ответом сервера получателя, а ваше приложение узнает о нём вебхуком, без разбора писем от Mailer-Daemon.