техническое · ответ с источниками

SMTP-аутентификация: что это и как она реализуется

SMTP-аутентификация — механизм безопасности, который требует от почтового клиента или приложения подтвердить свою личность SMTP-серверу, прежде чем ему будет разрешено отправлять почту. Он исключает открытые релеи, гарантируя, что маршрутизировать сообщения через сервер могут только авторизованные пользователи, — обычно по имени пользователя и паролю через расширение AUTH.

Как устроен процесс

Процесс начинается с того, что клиент подключается к серверу и отправляет команду EHLO. Сервер отвечает списком поддерживаемых расширений, включая AUTH. Затем клиент выбирает механизм аутентификации, например PLAIN или LOGIN, и передаёт учётные данные. Если сервер подтверждает их по своей базе пользователей, он разрешает клиенту отправлять команды MAIL FROM и RCPT TO.

Почему это важно для отправителей

Без аутентификации сервер работает как открытый релей и позволяет отправлять почту кому угодно. Спамеры быстро начинают использовать открытый порт, и IP-адрес попадает в чёрные списки. SMTP-аутентификация гарантирует, что отправлять почту могут только легитимные приложения, — это базовое требование для поддержания чистой репутации отправителя и того, чтобы принимающие почтовые серверы не отклоняли сообщения.

Заметки и типичные ошибки

Частая ошибка — передавать учётные данные по незашифрованным соединениям. Чтобы предотвратить кражу учётных данных, аутентификацию всегда следует сочетать со STARTTLS или неявным TLS. Другая распространённая проблема — использование устаревших методов аутентификации, которые не поддерживаются современными провайдерами. Разработчики могут проверить настройки DNS и аутентификации с помощью бесплатных инструментов SendHQ (https://sendhq.cc/tools).

Конкретный пример реализации

В типичной реализации на Python с smtplib разработчик подключается к порту 587, вызывает starttls() для защиты соединения, а затем login(user, password). Такая последовательность гарантирует, что личность проверяется по зашифрованному каналу до того, как сервер примет сообщение для доставки конечному адресату.

Методы аутентификации

Самые распространённые методы — PLAIN, при котором пароль передаётся в формате, близком к открытому тексту (Base64), и LOGIN — устаревший метод, используемый старыми клиентами. Современные системы часто предпочитают OAuth2 для SMTP-аутентификации: приложения используют токены вместо статических паролей, что снижает риск утечки учётных данных из конфигурационных файлов.

Что спрашивают команды

SMTP-аутентификация — это то же самое, что SPF или DKIM?

Нет. SMTP-аутентификация подтверждает личность клиента перед сервером в процессе отправки. SPF и DKIM подтверждают отправителя перед принимающим сервером уже после отправки письма.

Какой порт обычно используется для SMTP с аутентификацией?

Стандартный порт для отправки почты с аутентификацией и STARTTLS — 587, а порт 465 используется для неявного TLS.

Что происходит, если SMTP-аутентификация не удалась?

Сервер возвращает код ошибки 535 Authentication Failed и отклоняет сообщение, так что оно не попадает в очередь и не доставляется.

Первоисточники