Перейти к содержанию

Проверка защиты почты от подделки

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

Защиту задают три записи в DNS домена.

SPF, DKIM, DMARC

SPF (RFC 7208) перечисляет серверы, которым разрешено отправлять почту от имени домена. Пример: v=spf1 include:_spf.yandex.net -all. Окончание -all запрещает отправку остальным серверам, ~all помечает их письма как подозрительные.

DKIM (RFC 6376) подписывает письма. Открытый ключ публикуется в DNS под именем селектор._domainkey.домен. Минимальная длина ключа RSA 1024 бита, рекомендуемая 2048 (RFC 8301).

DMARC (RFC 7489) определяет, что делать с письмом, не прошедшим SPF и DKIM:

Политика Поддельное письмо
записи нет доставляется
p=none доставляется, владелец домена получает отчёт
p=quarantine помещается в спам
p=reject отклоняется

В выборке из 284 сайтов крупных российских компаний запись DMARC удалось прочитать у 275 доменов. У 22 записи не было, у 44 была политика p=none.

Ручная проверка

nslookup -type=TXT _dmarc.example.ru
nslookup -type=TXT example.ru

Первая команда показывает DMARC, вторая среди прочего SPF. Защищённым считается домен с p=quarantine или p=reject и SPF, оканчивающимся на -all или ~all.

Проверка с помощью Suveren

pip install suveren
suveren scan example.ru --checks mail

Проверяются SPF (синтаксис, политика all, лимит в 10 DNS-запросов), DMARC (политика, pct, адреса отчётов), DKIM (ключи и их длина), MTA-STS и TLS-RPT. Итоговая проверка SUV-MAIL-001 отвечает, можно ли отправить письмо от имени домена: да, частично или нет.

Проверки почты читают публичные записи DNS. MTA-STS дополнительно загружает файл политики с поддомена mta-sts, как это делает почтовый сервер.

Список DKIM-ключей домена нельзя получить из DNS, поэтому Suveren перебирает распространённые селекторы. Собственный селектор указывается параметром --dkim-selector; его значение есть в заголовке DKIM-Signature любого исходящего письма, поле s=.

suveren scan example.ru --checks mail --dkim-selector mail2024

Порядок включения защиты

  1. SPF: перечислить все сервисы, отправляющие почту от имени домена (почтовый сервис, сервис рассылок, CRM, сайт).
  2. DKIM: включить подпись в каждом из этих сервисов и опубликовать ключи.
  3. DMARC: опубликовать p=none с адресом отчётов rua=mailto:… и в течение двух-четырёх недель проверять отчёты на неучтённые источники.
  4. Перевести политику на p=quarantine, затем на p=reject.

Включение p=reject без этапа наблюдения может привести к потере писем из сервисов, не указанных в SPF и не подписывающих почту DKIM.

Перечень проверок SUV-MAIL-*: Проверки, раздел «Защита почты».