uCheckeruChecker

SMTP-протокол: что это, команды и порты

SMTP (Simple Mail Transfer Protocol) - протокол, который отвечает за отправку и пересылку электронной почты. Каждое email-сообщение, которое вы отправляете, проходит через SMTP. Протокол описан в RFC 5321 и используется с 1982 года, когда вышла его первая спецификация (RFC 821).

Как работает отправка письма

Когда вы нажимаете «Отправить» в почтовом клиенте, происходит следующее:

  1. Клиент (MUA) подключается к исходящему SMTP-серверу (MTA) вашего провайдера.
  2. MTA вашего провайдера определяет MX-запись домена получателя через DNS.
  3. Ваш MTA устанавливает SMTP-соединение с MTA получателя и передаёт письмо.
  4. MTA получателя передаёт письмо в MDA (Mail Delivery Agent), который кладёт его в почтовый ящик.

SMTP отвечает только за передачу. Для чтения почты используются другие протоколы: IMAP и POP3.

Основные команды SMTP

SMTP - текстовый протокол. Клиент отправляет команды, сервер отвечает трёхзначными кодами. Основные команды:

  • EHLO (или HELO) - приветствие. Клиент представляется серверу и запрашивает список поддерживаемых расширений.
  • MAIL FROM - указывает адрес отправителя (envelope sender).
  • RCPT TO - указывает адрес получателя. Можно вызвать несколько раз для нескольких получателей.
  • DATA - начинает передачу тела письма (заголовки + содержимое). Завершается строкой с одной точкой.
  • QUIT - завершает сессию.

Расширенный SMTP (ESMTP, RFC 5321) добавляет команду EHLO вместо HELO и поддержку расширений: аутентификация (AUTH), шифрование (STARTTLS), указание размера сообщения (SIZE).

Порты SMTP

SMTP использует несколько портов, каждый для своей задачи:

  • Порт 25 - стандартный порт для межсерверной пересылки (MTA-to-MTA). Большинство ISP блокируют порт 25 для домашних пользователей, чтобы ограничить спам.
  • Порт 587 - порт для отправки почты клиентом (submission). Требует аутентификации и поддерживает STARTTLS. Это рекомендуемый порт для отправки через почтовый клиент.
  • Порт 465 - SMTP over SSL (SMTPS). Долгое время считался устаревшим, но в 2018 году RFC 8314 вернул его как порт для implicit TLS.

Коды ответов

Каждый ответ сервера начинается с трёхзначного кода. Первая цифра определяет класс ответа:

  • 2xx - успех. Код 250 означает, что команда выполнена.
  • 3xx - промежуточный ответ. Код 354 - сервер ждёт данные после команды DATA.
  • 4xx - временная ошибка. Код 421 - сервер временно недоступен, код 450 - ящик занят. Стоит повторить попытку позже.
  • 5xx - постоянная ошибка. Код 550 - ящик не существует, код 553 - недопустимый адрес. Повторять бессмысленно.

Ограничения протокола

SMTP создавался в эпоху доверенных сетей. Отсюда ряд проблем, которые решаются внешними надстройками:

  • Нет проверки отправителя. Любой сервер может указать любой адрес в MAIL FROM. Решение: SPF, DKIM, DMARC.
  • Нет шифрования по умолчанию. Базовый SMTP передаёт данные открытым текстом. Решение: STARTTLS или implicit TLS на порту 465.
  • Ограничение на размер. Многие серверы ограничивают размер сообщения (обычно 10-25 MB). Для больших вложений нужны другие механизмы.

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

SMTP-проверка (SMTP verification) использует протокол для валидации email-адресов. Валидатор подключается к серверу, выполняет EHLO и RCPT TO, но не отправляет само письмо. По ответу сервера (250 или 550) определяется, существует ли ящик. Это один из этапов многоуровневой верификации email.

uChecker использует SMTP-протокол как один из уровней валидации. Сервис подключается к MTA получателя, проверяет ответ сервера и комбинирует его с DNS-проверками, анализом домена и другими сигналами для точного результата.

SMTPпротоколотправка emailпорт 25MTA
← Глоссарий