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

SMTP-AUTH

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

История

Протокол SMTP, разработанный в 1982 году (RFC 821), изначально не предусматривал механизмов аутентификации. Серверы принимали сообщения от любых клиентов, что позволяло злоумышленникам использовать открытые ретрансляторы для массовой рассылки спама. К середине 1990-х годов проблема стала критической: по оценкам, до 80% всего спама проходило через открытые SMTP-серверы.

В 1999 году была опубликована спецификация RFC 2554, вводившая расширение SMTP-AUTH. Оно базировалось на стандарте SASL (Simple Authentication and Security Layer, RFC 2222), который определял общую структуру для различных методов аутентификации. Первоначально поддержка SMTP-AUTH была необязательной, но к началу 2000-х годов большинство почтовых серверов начали требовать аутентификацию для отправки писем через внешние сети.

В 2004 году вышла обновлённая спецификация RFC 3848, уточнившая взаимодействие SMTP-AUTH с механизмами шифрования (STARTTLS). Современная версия протокола определена в RFC 5321 (2008 год), где SMTP-AUTH является стандартным компонентом.

Механизм работы

SMTP-AUTH работает на уровне команд протокола SMTP. После установления соединения и приветствия сервера (команда EHLO или HELO) клиент может запросить аутентификацию с помощью команды AUTH. Сервер отвечает списком поддерживаемых механизмов аутентификации, из которых клиент выбирает подходящий.

Процесс аутентификации включает обмен несколькими сообщениями между клиентом и сервером, формат которых зависит от выбранного механизма. После успешной аутентификации сервер присваивает соединению статус «аутентифицированное», и клиент получает право отправлять письма (команда MAIL FROM) от имени учётной записи, указанной при аутентификации.

Команды и ответы

Основные команды, используемые в SMTP-AUTH:

  • EHLO <domain> — расширенное приветствие, после которого сервер сообщает о поддержке SMTP-AUTH (строка 250-AUTH <механизмы>).
  • AUTH <механизм> [<initial-response>] — запрос на аутентификацию. Если сервер принимает, он отвечает 334 <challenge>, иначе выдаёт ошибку.
  • * — команда отмены аутентификации (обычно вводится при ошибочном вводе).
  • QUIT — завершение соединения.

Ответы сервера:

  • 235 Authentication successfulаутентификация пройдена.
  • 334 <challenge> — сервер ожидает ответа на вызов.
  • 535 Authentication failed — неверные учётные данные или метод.
  • 504 Unrecognized authentication type — указанный механизм не поддерживается.

Механизмы аутентификации

SMTP-AUTH использует механизмы SASL, которые различаются по степени безопасности и сложности реализации. Наиболее распространённые:

PLAIN

Самый простой механизм: учётные данные (имя пользователя и пароль) передаются в открытом виде в кодировке Base64. Не обеспечивает защиту от перехвата, поэтому рекомендуется использовать только в сочетании с шифрованием (TLS/SSL). Описан в RFC 4616.

LOGIN

Устаревший механизм, аналогичный PLAIN, но с раздельной передачей имени пользователя и пароля. Также не шифрует данные. Поддержка LOGIN постепенно прекращается в современных серверах.

CRAM-MD5

Основан на хешировании: сервер отправляет случайную строку (challenge), клиент вычисляет MD5-хеш от комбинации пароля и этой строки и отправляет результат. Пароль не передаётся в открытом виде, но сам алгоритм MD5 считается криптографически слабым (уязвим к атакам по словарю). Описан в RFC 2195.

DIGEST-MD5

Более надёжный механизм, использующий хеширование MD5 с добавлением nonce (одноразового числа) и других параметров. Обеспечивает защиту от повторного воспроизведения (replay attacks), но также страдает от уязвимостей MD5. Описан в RFC 2831.

NTLM

Проприетарный механизм от Microsoft, используемый в средах Windows. Основан на протоколе NTLM, который, в свою очередь, базируется на хешах паролей. Считается устаревшим из-за слабой криптостойкости.

GSSAPI (Kerberos)

Использует протокол Kerberos для аутентификации через единую систему билетов. Обеспечивает высокую безопасность, но требует настройки инфраструктуры Kerberos (KDC). Широко применяется в корпоративных сетях (например, Active Directory). Описан в RFC 4752.

SCRAM (Salted Challenge Response Authentication Mechanism)

Современный механизм, основанный на солевом хешировании пароля (обычно SHA-256 или SHA-512). Устойчив к атакам по словарю и перехвату. Включает версии SCRAM-SHA-1, SCRAM-SHA-256 и SCRAM-SHA-512. Описан в RFC 5802.

Безопасность

SMTP-AUTH сам по себе не обеспечивает шифрование передаваемых данных. Если соединение не защищено протоколом TLS (команда STARTTLS), учётные данные могут быть перехвачены злоумышленником. Поэтому рекомендуется:

  • Всегда использовать STARTTLS или прямое SSL-соединение (порт 465) в сочетании с SMTP-AUTH.
  • Выбирать механизмы, не передающие пароль в открытом виде (CRAM-MD5, DIGEST-MD5, SCRAM).
  • Отключать устаревшие и небезопасные механизмы (PLAIN, LOGIN) на сервере.
  • Использовать длинные и сложные пароли, а также двухфакторную аутентификацию, если она поддерживается почтовым провайдером.

SMTP-AUTH не защищает от фишинга или компрометации учётных записей через другие каналы. Для дополнительной безопасности применяются SPF, DKIM и DMARC.

Применение

SMTP-AUTH используется в следующих сценариях:

  • Отправка писем с почтовых клиентов (MUA) через сервер провайдера (например, Outlook, Thunderbird, Apple Mail).
  • Отправка писем с веб-приложений, использующих SMTP-релеи (например, WordPress, PHP-скрипты).
  • Настройка почтовых серверов для приёма писем от доверенных клиентов (MTA-to-MSA).
  • Использование сторонних SMTP-сервисов (SendGrid, Mailgun, Amazon SES) для массовых рассылок.

В корпоративных средах SMTP-AUTH часто интегрируется с единой системой аутентификации (LDAP, Active Directory).

Ограничения

  • SMTP-AUTH не решает проблему подделки обратного адреса (spoofing) — аутентифицированный пользователь может указать любой адрес в поле From, если сервер не проверяет соответствие.
  • Механизмы, основанные на паролях, уязвимы к атакам перебора (brute force), если не настроены ограничения на количество попыток.
  • Некоторые почтовые провайдеры блокируют SMTP-AUTH для обычных пользователей из-за риска компрометации и требуют использования OAuth 2.0 (например, Gmail, Microsoft 365).
  • SMTP-AUTH не является обязательным для всех почтовых серверов — некоторые принимают письма только от IP-адресов из белого списка (без аутентификации).

Альтернативы

  • POP3/IMAP AUTH — аутентификация при получении почты, но не при отправке.
  • OAuth 2.0 — современный протокол авторизации, используемый в Gmail, Outlook и других сервисах. Позволяет не передавать пароль, а использовать токены.
  • SMTP-after-POP3/IMAP — метод, при котором аутентификация выполняется сначала на POP3/IMAP-сервере, а затем SMTP-соединение считается доверенным на основе IP-адреса. Устарел.
  • SPF/DKIM/DMARC — методы аутентификации отправителя на уровне домена, а не пользователя. Не заменяют SMTP-AUTH, но дополняют его.

Интересные факты

  • Первая версия SMTP-AUTH (RFC 2554) была написана Джоном Майерсом (John Myers), который также участвовал в разработке SASL.
  • В 2020 году компания Google объявила о прекращении поддержки SMTP-AUTH с паролями для новых аккаунтов, перейдя на OAuth 2.0.
  • Механизм CRAM-MD5 был взломан в 2005 году группой исследователей, которые показали, что его можно обойти с помощью атаки по словарю за несколько минут.

Источники

  • RFC 2554: SMTP Service Extension for Authentication (1999)
  • RFC 4954: SMTP Service Extension for Authentication (2007)
  • RFC 5321: Simple Mail Transfer Protocol (2008)
  • RFC 4422: Simple Authentication and Security Layer (SASL) (2006)
  • RFC 4616: The PLAIN Simple Authentication and Security Layer (SASL) Mechanism (2006)
  • RFC 2195: IMAP/POP AUTHorize Extension for Simple Challenge/Response (1997)
  • RFC 2831: Using Digest Authentication as a SASL Mechanism (2000)
  • RFC 5802: Salted Challenge Response Authentication Mechanism (SCRAM) SASL and GSS-API Mechanisms (2010)
  • «SMTP Authentication: A Survey» — IEEE Communications Surveys & Tutorials, 2012
  • Документация Postfix, Exim, Sendmail по настройке SMTP-AUTH

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

На главную BFOmetr →