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 →