техническое · ответ с источниками
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 и отклоняет сообщение, так что оно не попадает в очередь и не доставляется.