DSN (Delivery Status Notification) — стандартное уведомление о статусе доставки письма. Его формирует почтовый сервер (MTA), когда нужно сообщить отправителю: письмо доставлено, задержано или не дошло.
В рассылках DSN чаще всего встречают как «баунс» или «отлуп»: ответ сервера с причиной недоставки. Но DSN — не любое письмо «Mail Delivery Failed…», а структурированный отчёт по RFC 3464: его удобно читать и человеку, и системе (платформе, SMTP-сервису, вашему обработчику вебхуков).
Коротко: отправили письмо → принимающий или промежуточный сервер не смог (или смог) доставить → обратно уходит DSN с полями Action, Status, Final-Recipient и часто с сырым SMTP-ответом в Diagnostic-Code.
Отлуп / bounce — бытовой язык. «Пришёл отлуп» значит: письмо не доставлено, в ответе есть причина. Часто это как раз DSN, но иногда — простое текстовое письмо без машинночитаемого блока message/delivery-status.
DSN — формат уведомления о статусе доставки (RFC 3464) плюс расширенные коды статуса (RFC 3463). Внутри есть стабильные поля и код вида 5.1.1, а не только фраза «User unknown».
FBL (Feedback Loop) — другое уведомление: получатель нажал «Это спам». FBL не про «ящик не существует», а про жалобу.
О чём
Статус доставки (успех / задержка / отказ)
Обычно «письмо не дошло»
Жалоба на спам
Формат
multipart/report; report-type=delivery-status
Может быть чем угодно
Часто ARF
Почему
Сервер не принял / отложил доставку
То же + любой «возврат»
Кнопка «Спам» у человека
Final-Recipient
Адрес, на который не дошло (или дошло)
Original-Recipient
Адрес из исходного RCPT TO, если он отличался
Action
Что произошло: failed, delayed, delivered, relayed, expanded
Status
Код X.Y.Z по RFC 3463 (транспортно-независимый)
Diagnostic-Code
Сырой ответ SMTP, например smtp; 550 5.1.1 User unknown
Remote-MTA
Какой сервер ответил
Last-Attempt-Date
Когда была последняя попытка
Will-Retry-Until
До какого момента будут ретраи (для delayed)
Final-Recipient: rfc822; user@example.com Action: failed Status: 5.1.1 Diagnostic-Code: smtp; 550 5.1.1 User unknown |
Код (status) — фиксирует и расшифровывает ошибку.
Пишется как класс.тема.деталь, например 5.1.1 или 4.2.2.
2.X.X
Успех
Доставка состоялась (если Action: delivered)
4.X.X
Временная проблема
Soft bounce — сделать ретрай
5.X.X
Постоянная ошибка
Hard bounce — на адрес больше не слать
Помогает перевести клиентские запросы на язык, понятный команде разработки. Отслеживает баги и тестирует новые фичи. Собирает идеи по улучшению продукта — и следит, чтобы они доехали до прода.
Стать автором блога Mailganer ›
Технический специалист поддержки Mailganer