SPF, DKIM и DMARC: проверка почтового домена
Понятная схема трёх механизмов почтовой аутентификации: что именно проверяет каждый, как работает выравнивание доменов и где возникают ошибки.
Содержание
SPF, DKIM и DMARC решают связанные, но разные задачи. SPF перечисляет системы, которым разрешено отправлять почту для технического домена конверта. DKIM добавляет криптографическую подпись к выбранным заголовкам и содержимому. DMARC связывает результаты этих проверок с доменом, который человек видит в поле From, и публикует политику обработки сообщений, не прошедших аутентификацию.
Ни один из механизмов в одиночку не доказывает, что письмо полезно или желанно. Успешная аутентификация означает, что принимающая система смогла проверить заявленную связь сообщения с доменом. Решение о папке «Входящие», «Спам» или отказе остаётся за получателем и учитывает репутацию, жалобы, объём, содержание и локальные правила.
SPF проверяет путь отправки
SPF публикуется TXT-записью в DNS. Она описывает, какие IP-адреса или внешние сервисы могут отправлять сообщения с определённым доменом в SMTP-команде MAIL FROM. Этот адрес ещё называют envelope-from или обратным путём. Он может отличаться от видимого адреса From в почтовом клиенте — отсюда возникает много неверных интерпретаций результата SPF.
Упрощённый пример:
example.uz. IN TXT "v=spf1 ip4:192.0.2.10 -all"
Такая запись разрешает указанный IPv4-адрес, а для остальных источников даёт результат SPF fail. Что делать с этим результатом, решает принимающая система. Это только пример синтаксиса, не шаблон для копирования: реальная запись должна учитывать все законные отправители домена — основной SMTP-сервер, CRM, сервис уведомлений, рассылки и другие системы.
Для одного имени домена должна существовать одна SPF-политика. Две отдельные TXT-записи, начинающиеся с v=spf1, не складываются и приводят к ошибке проверки. Если источников несколько, их объединяют в одну политику. При этом стандарт ограничивает число DNS-запросов, возникающих при оценке механизмов вроде include, a, mx, exists и redirect. Слишком длинная цепочка внешних включений может завершиться permerror, даже если каждый сервис по отдельности указан правильно.
SPF чувствителен к обычной пересылке. Пересылающий сервер может сохранить исходный envelope-from, но отправить сообщение уже со своего IP, которого нет в политике первоначального домена. Поэтому SPF не заменяет DKIM, а инфраструктуре пересылки иногда требуется Sender Rewriting Scheme. Главное — оценивать итоговый заголовок Authentication-Results, а не предполагать результат по одному адресу From.
DKIM подтверждает подпись сообщения
При DKIM исходящий сервер вычисляет хэш выбранных заголовков и тела письма, подписывает его закрытым ключом и добавляет заголовок DKIM-Signature. Принимающая сторона находит в нём домен d= и селектор s=, затем запрашивает публичный ключ по имени вида:
selector1._domainkey.example.uz
Закрытый ключ остаётся у отправляющей системы. В DNS публикуется только открытая часть. Если проверка сходится, получатель понимает, что подписанные фрагменты не были незаметно изменены после подписания и что отправитель обладал соответствующим закрытым ключом.
Селекторы позволяют менять ключи без одновременной остановки всей отправки. Новый ключ публикуют под новым селектором, переключают подпись на него, проверяют реальный поток и только после переходного периода удаляют старую запись. Это безопаснее, чем бессрочно использовать один ключ или заменять значение под тем же именем без учёта DNS-кэшей.
DKIM тоже не является печатью «не спам». Подпись может успешно проверяться у законной массовой рассылки, нежелательного письма или скомпрометированной учётной записи. Кроме того, системы пересылки и почтовые шлюзы иногда изменяют тему, тело или вложения. Если изменена подписанная часть, проверка может не пройти. Именно поэтому в DMARC достаточно согласованного успеха хотя бы одного из двух путей — SPF или DKIM.
DMARC связывает проверку с видимым From
Пользователь обычно доверяет домену в поле From. DMARC проверяет, согласован ли этот домен с доменом, успешно прошедшим SPF, либо с доменом действительной DKIM-подписи. Это называется alignment, или выравнивание доменов.
При relaxed-режиме допустимы организационно связанные поддомены. При strict-режиме домены должны совпадать точнее. DMARC считается пройденным, когда проходит и выравнивается хотя бы один механизм: SPF или DKIM. Значит, сообщение может пройти DMARC при неудаче SPF, если сохранилась согласованная DKIM-подпись, и наоборот.
Политика публикуется в TXT-записи _dmarc.example.uz:
_dmarc.example.uz. IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.uz"
p=none не запрашивает карантин или отказ из-за одной только DMARC-политики. Адрес агрегированных отчётов задаёт отдельный параметр rua. p=quarantine просит относиться к провалившим проверку сообщениям как к подозрительным, а p=reject — отклонять их. Формулировка «просит» важна: конечное решение принимает принимающая почтовая система в рамках своей локальной политики.
Адрес rua используется для агрегированных отчётов. Они помогают увидеть источники, которые отправляют от имени домена, результаты SPF/DKIM и причины несогласованности. Для отчётного адреса нужно подготовить ящик или специализированный обработчик: XML-файлы неудобны для ручного чтения, их объём бывает заметным, а сами отчёты содержат технические метаданные о потоке почты.
Почему нужны все три механизма
SPF без DMARC проверяет технический адрес конверта, который пользователь может не видеть. DKIM без DMARC подтверждает домен подписи, но он не обязан совпадать с видимым From. DMARC устанавливает эту связь, однако опирается на результаты SPF и DKIM и не создаёт их сам.
Практическую модель удобно представить так:
| Механизм | Что проверяется | Где опубликованы данные | Основное ограничение |
|---|---|---|---|
| SPF | Разрешён ли IP для envelope-from | TXT у домена отправки | Может ломаться при пересылке; есть лимит DNS-запросов |
| DKIM | Верна ли криптографическая подпись | TXT у селектора _domainkey | Изменение подписанного содержимого может нарушить проверку |
| DMARC | Совпадает ли успешная проверка с видимым From | TXT у _dmarc | Зависит от корректных SPF/DKIM и полного учёта отправителей |
Эти записи относятся к исходящей аутентификации. MX решает другую задачу — указывает сервер для входящей доставки. Если вы как раз меняете маршрут приёма, начните со статьи MX-запись для почты: как направить письма на нужный сервер.
Безопасный порядок внедрения
Сначала составьте карту отправителей. В неё входят не только сотрудники, но и сайт, система восстановления паролей, счета, CRM, поддержка, мониторинг и сервис рассылок. Для каждого источника выясните, какой envelope-from он использует, каким доменом подписывает DKIM и можно ли настроить собственный домен вместо общего домена провайдера.
Затем полезно идти по этапам:
- Соберите одну SPF-политику для всех подтверждённых источников и проверьте число DNS-запросов.
- Включите DKIM у каждого сервиса, сохраняя закрытые ключи вне DNS и публичного репозитория.
- Проверьте несколько реальных сообщений в разных внешних почтовых системах по Authentication-Results.
- Опубликуйте DMARC с наблюдательной политикой и рабочим адресом агрегированных отчётов.
- Найдите забытые легитимные источники, исправьте выравнивание и прекратите несанкционированную отправку.
- Только после достаточного периода наблюдения обсуждайте переход к
quarantineилиreject. - После каждого изменения снова проверяйте реальные письма, а не только наличие TXT в DNS.
Переход сразу к строгой политике может заблокировать законные уведомления, если инвентаризация неполна. Обратная крайность — годами оставлять p=none и считать домен защищённым. Наблюдательная политика даёт данные; защита от подделки усиливается после исправления источников и осознанного включения более строгого режима.
Специалист Mailcore готовит и проверяет MX, SPF, DKIM и DMARC под фактическую схему отправки. Клиент сообщает сайт, CRM и другие источники, а Mailcore учитывает их до переключения и ужесточения политики. Пошаговый контекст подключения есть в статье Как Mailcore подключает домен: от заявки до первого письма.
Что смотреть в заголовках письма
Отправьте тестовое сообщение на внешний ящик и откройте оригинал или технические заголовки. Найдите Authentication-Results и отдельно проверьте:
- результат SPF и домен, к которому он относится;
- результат DKIM, домен
d=и использованный селектор; - результат DMARC и домен заголовка From;
- совпадает ли фактический исходящий сервер с ожидаемым;
- нет ли промежуточного шлюза, изменившего письмо.
Результат pass у всех трёх механизмов создаёт важную техническую основу для доставляемости. Если письмо отклоняется или дополнительно фильтруется получателем, для диагностики нужны SMTP‑код ответа, репутация источника, характер потока и содержание. Разбор последовательности дан в статье Почему письма попадают в спам и что проверять.
Частые ошибки конфигурации
Самая заметная ошибка SPF — несколько политик для одного имени. Следом идут устаревшие IP, забытые include и превышение лимита DNS-проверок. У DKIM часто путают селектор, обрезают длинное TXT-значение при переносе между панелями или публикуют ключ в одном домене, а подписывают другим. В DMARC типичны неработающий адрес отчётов, преждевременный reject и отсутствие выравнивания у сторонних сервисов.
Также опасно копировать записи из чужой инструкции без понимания своей схемы. SPF должен описывать именно ваши источники, DKIM-ключ выдаёт именно ваша отправляющая система, а DMARC-политику выбирают после наблюдения за вашим потоком. Проверяйте авторитетный DNS, учитывайте TTL и документируйте каждое изменение — тогда причина сбоя будет восстанавливаемой, а не загадочной.
Источники
DNS без магии
Разбираем почтовые DNS‑записи, аутентификацию домена и причины проблем с доставкой. Показываем, как проверить конфигурацию и реальный маршрут письма.
Получите план подключения и точный расчёт
Пришлите домен, число ящиков и примерный объём архива. Проверим текущую схему и согласуем безопасный переход до любых изменений DNS.