Открыть сервис

RFC 5321

RFC 5321 — это спецификация протокола, определяющего порядок передачи электронной почты в сети Интернет, известного как SMTP (Simple Mail Transfer Protocol). Документ, опубликованный в 2008 году, заменил собой предыдущую версию стандарта RFC 2821 и является частью серии запросов на комментарии (Request for Comments, RFC), поддерживаемой Инженерным советом Интернета (IETF). RFC 5321 описывает архитектуру, команды, коды ответов и процедуры, необходимые для надёжной и стандартизированной доставки почтовых сообщений между почтовыми серверами.

История и предшественники

Развитие SMTP началось в начале 1980-х годов. Первый стандарт протокола, RFC 821, был опубликован в августе 1982 года и описывал базовые команды для передачи почты. Этот документ был разработан Джонатаном Постелом (Jonathan Postel) и определял простую текстовую модель взаимодействия между отправителем и получателем.

С развитием Интернета и появлением новых требований (поддержка расширенных кодировок, аутентификация, защита от спама) возникла необходимость в обновлении стандарта. В апреле 2001 года был опубликован RFC 2821, который заменил RFC 821 и внёс ряд уточнений, включая расширенную обработку ошибок и поддержку 8-битных данных (8BITMIME).

RFC 5321, выпущенный в октябре 2008 года, стал следующей итерацией. Он сохранил обратную совместимость с RFC 2821, но уточнил многие аспекты, особенно касающиеся маршрутизации, обработки адресов и взаимодействия с расширениями SMTP (ESMTP). На момент написания статьи RFC 5321 является действующим стандартом для SMTP, хотя его отдельные положения могут быть дополнены более новыми RFC (например, RFC 5322, описывающим формат сообщения, или RFC 7504, уточняющим коды ответов).

Архитектура и основные принципы

RFC 5321 определяет SMTP как протокол прикладного уровня, работающий поверх TCP (как правило, порт 25). Взаимодействие происходит по схеме «клиент-сервер», где клиент (MTA, Mail Transfer Agent) инициирует соединение, а сервер (также MTA) принимает и обрабатывает запросы. Протокол является текстовым: все команды и ответы передаются в виде строк ASCII, заканчивающихся символами CRLF (возврат каретки и перевод строки).

Модель передачи

Стандарт описывает два основных сценария:

  • Прямая передача — сообщение передаётся непосредственно от почтового сервера отправителя к почтовому серверу получателя.
  • Передача через ретрансляторы — сообщение проходит через один или несколько промежуточных серверов (relay), которые последовательно передают его к конечному получателю. RFC 5321 определяет правила маршрутизации, включая использование записей MX (Mail Exchange) в DNS.

Команды SMTP

Протокол включает набор команд, отправляемых клиентом. Ключевые команды по RFC 5321:

  • HELO/EHLO — приветствие и идентификация клиента. EHLO используется для ESMTP и позволяет серверу объявить о поддерживаемых расширениях.
  • MAIL FROM — указание обратного адреса (отправителя).
  • RCPT TO — указание адреса получателя (может повторяться для нескольких получателей).
  • DATA — начало передачи тела сообщения.
  • QUIT — завершение сессии.
  • RSET — сброс текущей транзакции.
  • VRFY — проверка существования почтового ящика (часто отключается по соображениям безопасности).
  • EXPN — раскрытие списка рассылки.

Коды ответов

Сервер отвечает на каждую команду трёхзначным числовым кодом, за которым следует текстовая строка. Коды группируются по первому знаку:

  • 2xx — успешное выполнение (например, 250 — запрошенное действие выполнено).
  • 3xx — временный успех, требуется продолжение (например, 354 — начало ввода данных).
  • 4xx — временная ошибка (например, 450 — почтовый ящик недоступен).
  • 5xx — постоянная ошибка (например, 550 — почтовый ящик не найден).

Формат адресов и маршрутизация

RFC 5321 определяет формат почтового адреса, используемый в командах MAIL FROM и RCPT TO. Адрес состоит из локальной части (до символа @) и доменной части (после @). Допускается использование обратной маршрутизации (source routing) в виде @домен1,@домен2:пользователь@домен3, но на практике этот механизм устарел и не рекомендуется к применению.

Для определения сервера получателя используется DNS-запись MX. RFC 5321 уточняет, что при отсутствии MX-записей может использоваться A-запись домена. Приоритет (preference) MX-записей определяет порядок попыток соединения: сервер пробует сначала запись с наименьшим числовым значением приоритета.

Расширения SMTP (ESMTP)

RFC 5321 является основой для ESMTP, позволяющего серверам объявлять о поддержке дополнительных возможностей через команду EHLO. Список расширений публикуется в реестре IANA. Наиболее распространённые расширения, используемые совместно с RFC 5321:

  • STARTTLS — шифрование сессии с помощью TLS.
  • AUTH — аутентификация клиента (например, по логину и паролю).
  • 8BITMIME — поддержка 8-битных символов в теле сообщения.
  • SIZE — объявление максимального размера сообщения.
  • PIPELINING — возможность отправки нескольких команд без ожидания ответа на каждую.

Обработка ошибок и надёжность

Стандарт предписывает определённое поведение при сбоях. Если сервер получает временную ошибку (4xx), он должен повторять попытку отправки в течение определённого времени (обычно от нескольких минут до нескольких дней). Постоянные ошибки (5xx) приводят к возврату сообщения отправителю в виде уведомления о недоставке (bounce).

RFC 5321 также определяет правила для обработки пустых обратных адресов (MAIL FROM:<>), используемых для уведомлений о недоставке и других автоматических сообщений.

Критика и ограничения

Несмотря на широкое распространение, RFC 5321 имеет ряд недостатков, признанных разработчиками:

  • Отсутствие встроенной аутентификации — протокол изначально не требует проверки личности отправителя, что способствует распространению спама и подделки адресов. Для решения этой проблемы используются расширения (AUTH, SPF, DKIM, DMARC).
  • Текстовый формат — команды передаются в открытом виде, что делает протокол уязвимым для перехвата. Шифрование добавляется через STARTTLS, но не является обязательным.
  • Сложность обработки ошибок — некоторые реализации некорректно обрабатывают коды ответов, что приводит к потере сообщений.
  • Устаревшие механизмы маршрутизации — использование source routing (команда @) практически не поддерживается современными серверами и может вызывать проблемы.

Влияние и применение

RFC 5321 является фундаментальным стандартом для электронной почты. Все современные почтовые серверы (Postfix, Exim, Sendmail, Microsoft Exchange, Dovecot и другие) реализуют его положения. Протокол используется не только для передачи сообщений между серверами, но и для отправки почты от клиентских программ (MUA) через сервер исходящей почты (MTA), хотя для этого часто применяется порт 587 с обязательной аутентификацией.

Документ также важен для разработчиков систем, работающих с почтовыми потоками: антиспам-фильтров, систем мониторинга, почтовых шлюзов и сервисов массовых рассылок.

Источники

  1. RFC 5321 — Simple Mail Transfer Protocol (октябрь 2008).
  2. RFC 821 — Simple Mail Transfer Protocol (август 1982).
  3. RFC 2821 — Simple Mail Transfer Protocol (апрель 2001).
  4. RFC 5322 — Internet Message Format (октябрь 2008).
  5. RFC 7504 — SMTP 521 and 556 Reply Codes (июнь 2015).
  6. «SMTP: Simple Mail Transfer Protocol» — техническая документация IETF.
  7. «Postfix SMTP Server» — руководство администратора.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →