uCheckeruChecker

DSN (Delivery Status Notification): формат и коды уведомлений о доставке email

A Delivery Status Notification (DSN) is the standardized way mail servers communicate delivery outcomes. When a message cannot be delivered - or when the sender explicitly requests delivery confirmation - the receiving or intermediate MTA generates a DSN and sends it to the Envelope From (Return-Path) address. The format is defined in RFC 3464, and the practice of generating these messages is as old as SMTP itself.

Structure of a DSN message

A DSN is a multipart MIME message with a specific content type: multipart/report; report-type=delivery-status. It contains three parts:

  1. Human-readable explanation. Plain text describing what happened. This is what a person sees when they open a bounce message: "Your message could not be delivered to user@example.com."
  2. Machine-readable status. A structured block with fields like Status, Reporting-MTA, Remote-MTA, Action, and Diagnostic-Code. This is what automated bounce processors parse.
  3. Original message headers (or the full original message). This lets the sender identify which message bounced.

Status codes

The Status field uses the enhanced status code format from RFC 3463: three digits separated by dots (class.subject.detail). The first digit indicates the severity:

  • 2.x.x - success. The message was delivered. DSNs with this class are delivery confirmations, rarely seen in practice because most servers do not generate positive DSNs by default.
  • 4.x.x - temporary failure. The server could not deliver the message now but may succeed later. Examples: 4.2.2 (mailbox full), 4.7.1 (greylisting in effect).
  • 5.x.x - permanent failure. The message will never be delivered to this address. Examples: 5.1.1 (user unknown), 5.2.1 (mailbox disabled), 5.7.1 (rejected by policy).

Что такое DSN

DSN (Delivery Status Notification) - это стандартный формат уведомлений о статусе доставки email. Когда письмо не может быть доставлено, принимающий (или промежуточный) сервер формирует DSN-сообщение и отправляет его на адрес Envelope From. Формат описан в RFC 3464.

DSN - это и есть тот «bounce», о котором говорят маркетологи. Но в техническом смысле bounce - это не просто факт отказа, а конкретное сообщение с машиночитаемым кодом статуса, диагностической информацией и заголовками исходного письма.

Коды статуса DSN

Код статуса в DSN имеет формат класс.тема.деталь (RFC 3463). Первая цифра определяет тип:

  • 2.x.x - успех. Письмо доставлено. На практике положительные DSN генерируются редко.
  • 4.x.x - временная ошибка. Сервер не смог доставить сейчас, но может позже. Пример: 4.2.2 (ящик переполнен).
  • 5.x.x - постоянная ошибка. Письмо не будет доставлено. Пример: 5.1.1 (пользователь не найден), 5.2.1 (ящик отключён).

Как ESP обрабатывают DSN

Email-сервисы (ESP и SMTP relay) парсят входящие DSN автоматически. Система извлекает код статуса, адрес получателя и тип ошибки. На основе этого:

  • 5.1.x (hard bounce) - адрес немедленно добавляется в suppression list. Повторная отправка на него блокируется.
  • 4.x.x (soft bounce) - система ставит сообщение в очередь на повторную попытку. После N неудачных попыток (обычно 3-5) адрес также подавляется.
  • Данные агрегируются в статистику bounce rate, которую видно в дашборде.

Проблемы с DSN на практике

Не все серверы генерируют корректные DSN. Некоторые отклоняют письма на этапе SMTP-транзакции (до генерации DSN) - тогда bounce фиксируется не через DSN, а через SMTP-ответ. Другие серверы молча отбрасывают сообщения без уведомления, чтобы не помогать спамерам определять валидные адреса.

Кроме того, bounce-адрес (Envelope From) может быть подделан спамером. В результате DSN уходит человеку, который не отправлял письмо. Этот эффект называется backscatter и сам по себе является формой спама.

DSN и валидация email

DSN сообщает о проблеме после попытки доставки. Валидация email решает задачу до отправки. SMTP-проверка (RCPT TO без DATA) по сути запрашивает у сервера получателя тот же ответ, который он выдал бы при реальной доставке, но без передачи тела письма. Это позволяет обнаружить 5.1.1 (user unknown) заранее, не генерируя bounce и не тратя репутацию IP.

uChecker выявляет невалидные адреса до отправки, чтобы вам не приходилось разбирать DSN-уведомления постфактум. Меньше bounces - чище статистика и стабильнее репутация отправителя.

DSNDelivery Status NotificationbounceRFC 3464hard bouncesoft bounceинфраструктура
← Глоссарий