SMTP: как работает протокол отправки email
Как работает SMTP
Обычно письмо проходит такой путь:
Приложение или почтовый клиент → сервер отправителя → сервер получателя → почтовый ящик- Устанавливается соединение. SMTP-клиент подключается к серверу по TCP. Сервер отвечает кодом
220, подтверждая готовность к обмену. - Клиент представляется серверу. Команда
EHLOпередаёт имя клиента, а сервер возвращает список поддерживаемых расширений. Старые реализации могут использовать командуHELO. - Настраиваются защита и доступ. Если сервер поддерживает
STARTTLS, соединение переводят в зашифрованный режим. При отправке через сервер провайдера или компании клиент обычно проходит аутентификацию. - Указывается отправитель. Команда
MAIL FROMзадаёт обратный адрес SMTP-конверта, который используют для сообщений о недоставке. Этот адрес может отличаться от видимого получателю поляFrom. - Указываются получатели. Команда
RCPT TOпередаётся отдельно для каждого адреса. Сервер может принять одних получателей и отклонить других. - Передаётся письмо. После команды
DATAклиент отправляет служебные заголовки и содержимое сообщения. Передача завершается строкой с одной точкой. - Сервер сообщает результат. Ответ
250после передачи данных означает, что сервер принял сообщение и взял на себя его дальнейшую обработку. КомандаQUITзавершает SMTP-сессию.
Ответы SMTP-сервера делятся на три основные группы:
| Первая цифра кода | Что означает |
|---|---|
| 2xx | Команда выполнена, сообщение или получатель приняты |
| 4xx | Временная ошибка: отправку обычно повторяют позже |
| 5xx | Постоянная ошибка: для новой попытки нужно изменить адрес, сообщение или настройки |
250 подтверждает приём сообщения SMTP-сервером, но не гарантирует его появления во «Входящих». После приёма почтовый провайдер проверяет письмо по своим правилам.
- SMTP подходит для систем, которые работают со стандартным почтовым подключением.
- API используют, когда приложение напрямую взаимодействует с конкретным сервисом отправки через его программный интерфейс. После приёма запроса сервис передаёт сформированное письмо в почтовую инфраструктуру.
Как письмо передаётся по SMTP
Чем SMTP отличается от IMAP и POP3
| Протокол | Основная задача | Как работает с письмами |
|---|---|---|
| SMTP | Отправка и пересылка | Передаёт сообщение от клиента серверу и между серверами |
| IMAP | Работа с почтой на сервере | Синхронизирует письма, папки и статусы между устройствами |
| POP3 | Загрузка почты | Скачивает сообщения с сервера на устройство |
Порты SMTP
SMTP-порт указывает администратор, разработчик или другой специалист при подключении почтового клиента, платформы или SMTP-релея. Назначение портов пригодится при настройке канала и диагностике ошибок.
| Порт | Где используют |
|---|---|
| 25 | Для передачи почты между SMTP-серверами. Для отправки из пользовательских приложений и некоторых облачных сред порт может быть недоступен |
| 587 | Для передачи письма от приложения или почтового клиента на сервер отправителя. Соединение обычно защищают с помощью STARTTLS. Назначение порта описано в RFC 6409 |
| 465 | Для передачи письма с TLS-шифрованием, которое устанавливается сразу при подключении. Такой способ описан в RFC 8314 |
Некоторые сервисы также предлагают порт 2525 как запасной. Он не стандартизирован для SMTP, поэтому его используют только тогда, когда он указан в документации выбранного сервиса.
Шифрование и аутентификация
Без шифрования SMTP-трафик можно перехватить — в том числе передаваемые при авторизации учётные данные. Для защиты соединения используют один из двух способов установки TLS-соединения (Transport Layer Security) — в зависимости от настроек SMTP-сервера.
- STARTTLS начинает обмен как обычное SMTP-соединение, после чего клиент и сервер переходят в зашифрованный режим. Обычно этот способ используют при подключении через порт 587.
- Неявный TLS устанавливает защищённое соединение сразу при подключении, обычно через порт 465.
EHLO сервер сообщает о доступных расширениях, например STARTTLS и AUTH. ESMTP не заменяет SMTP, а дополняет его новыми возможностями.Роль SMTP в доставляемости
В цепочке доставки SMTP отвечает за передачу письма между серверами и получение технического результата отправки. Принимающий сервер может принять сообщение, временно отложить его обработку или отклонить. Эти результаты отражаются в кодах ответа и сообщениях о возвратах.
Причины недоставки писем в отчёте Altcraft
Отправка email через AKMTA
AKMTA может передавать письма непосредственно почтовым провайдерам или через внешний SMTP-релей. Для релея указывают адрес и порт сервера, способ аутентификации и режим шифрования.
Выбор зависит от инфраструктуры компании. При прямой отправке она управляет собственными серверами и правилами их работы, а релей передаёт сообщения через выбранный внешний сервис или корпоративный шлюз.
Подключение SMTP-релея в Altcraft
Заключение
SMTP передаёт email-сообщения от приложения к серверу отправителя и между почтовыми серверами. Команды протокола выполняются автоматически, но их последовательность объясняет, как серверы принимают и передают письмо и на каком этапе может возникнуть ошибка. Для безопасной отправки используют подходящий порт, TLS и аутентификацию, а причины недоставок определяют по ответам серверов и сообщениям о возвратах.


