DMARC p=reject: где ломается доставка почты
АйТи Фреш
Информационная безопасность

Как включить DMARC reject и не потерять письма

Автор: , директор ООО «АйТи-Фреш» · · ~13 мин чтения
Бумажные письма проходят разные маршруты проверки перед сортировкой
Проверяйте маршрут каждого источника почты.

Не включайте DMARC p=reject, пока не проверили все исходящие каналы и не убедились, что хотя бы один результат — SPF или DKIM — проходит с выравниванием домена From. Сам по себе reject не чинит аутентификацию и не гарантирует одинаковое решение у всех получателей. Ниже — порядок проверки источников, субдоменов и отчётов.

Что на самом деле делает DMARC p=reject

DMARC проверяет домен в видимом поле From и сопоставляет его с результатами SPF и DKIM. Для pass достаточно одного успешного результата, если его домен выровнен с From по правилам политики. Значит, фраза «SPF сломался — письмо точно отклонят» неверна: выровненная DKIM-подпись всё ещё может дать DMARC pass. Работает и обратное. Не прошла DKIM-подпись, но SPF прошёл и выровнен — письмо может пройти DMARC. Проверять надо результат и alignment, а не галочки «SPF включён» и «DKIM настроен».

Политика p=reject просит принимающую сторону отклонять сообщения, которые не прошли DMARC. Это не команда, гарантирующая одинаковое действие каждого сервера: получатель учитывает свою локальную политику. Если письмо действительно отклонено на SMTP-этапе, отправляющая система обычно получает отказ, но конкретный код и текст задаёт принимающая сторона. Поэтому один код 550 5.7.1 нельзя объявить универсальным признаком DMARC. Читайте полный ответ сервера и журналы обеих сторон. (Значение в DNS — просьба с протокольным весом, но не пульт управления чужой почтой.)

Я начинаю с инвентаризации: кто формирует письма, какой домен стоит в From, какой домен использует envelope-from для SPF и какой указан в подписи DKIM. В условной компании из этой статьи — ООО «Дельта-Профиль-Мед» — это три разных поля проверки для каждого потока, а не список из двух «включённых технологий». В реальном аудите фиксирую отдельно пользовательскую почту, CRM, бухгалтерские уведомления, сайт, сканеры и внешние рассылки. Если нужна помощь с настройкой, я занимаюсь корпоративной почтой. Важно не число систем, а их фактические заголовки и результаты проверки у получателя.

После этого сравниваю записи с заголовками реально доставленных тестовых писем и агрегированными отчётами. Проверяю, что у каждого нужного потока хотя бы один способ аутентификации проходит и выровнен с доменом From. Если сервис подписывает письма своим доменом, его SPF тоже может пройти, но DMARC alignment при этом не состоится. Исправление обычно находится в настройке пользовательского домена у сервиса, в корректной подписи или в маршруте отправки. «Добавить IP в SPF» подходит не всегда и не заменяет проверку DKIM.

Не переводите SPF- или DKIM-fail в диагноз DMARC-fail, пока не проверили второй способ и alignment.
Схема DMARC p=reject: SPF или DKIM должны пройти с alignment
Одного выровненного прохода достаточно.

Ошибка №1: включить reject до аудита отправителей

Первый сбой — включить строгую политику, не зная всех источников писем. Основной сервер обычно заметен. Тихо забываются сайт с формой обратной связи, CRM, бухгалтерские уведомления, принтер-сканер и внешний сервис рассылок. Они могут отправлять с нужным From, но проходить через другой SMTP-сервер, подписываться чужим DKIM-доменом или вообще не иметь согласованной настройки. Если DMARC не проходит, p=reject может привести к отклонению сообщения теми получателями, которые применяют политику.

В условном примере с ООО «Дельта-Профиль-Мед» я бы начал с журнала потоков за полный рабочий цикл: обычные письма, рассылка, регулярные счета, уведомления и редкие автоматические задачи. Для каждого источника записываю владельца, назначение, From, механизм отправки и контакт того, кто способен поменять конфигурацию. Если сервис не использовался весь период наблюдения, это ещё не доказательство, что он мёртв: квартальный отчёт и годовое уведомление живут по собственному календарю. Я прошу ответственного подтвердить назначение потока, прежде чем отключать его или менять DNS.

Дальше делаю небольшой тест для каждого легитимного источника и проверяю Authentication-Results у контрольного получателя. Цель — увидеть dmarc=pass и понять, за счёт чего он получен: выровненного SPF или DKIM. Если оба результата нужны как резерв, настраиваю оба, но протокол не требует, чтобы оба одновременно прошли для DMARC pass. Это практический запас на случай пересылки или особенностей маршрута, а не условие, которое можно приписать самому DMARC.

Наконец, проверяю SPF отдельно. У SPF есть предел в 10 DNS-запросов механизмов, которые учитываются при оценке записи; превышение может дать permerror. Несколько TXT-записей SPF для одного имени тоже не решение. Убираю лишние включения и сверяю опубликованную запись с актуальными требованиями каждого отправителя. Не копирую в DNS все IP из отчёта на автомате: сначала устанавливаю, кому они принадлежат и зачем отправляют. Чужой поток в отчёте не становится вашим легитимным сервисом от одного факта, что он использовал ваш домен.

Ошибка №2: считать, что субдомены настраиваются сами

Политика для основного домена может применяться и к субдоменам. В DMARC для отдельной политики субдоменов предусмотрен тег sp; когда он не задан, используется p родительской записи. Поэтому утверждение «политика корня автоматически не касается субдоменов» неверно. Но и противоположная привычка опасна: наличие общей политики не подтверждает, что отправка с каждого субдомена настроена правильно. У news.example.com и example.com могут быть разные источники, DKIM-подписи и владельцы.

Я составляю перечень всех доменов и субдоменов, которые встречаются в поле From, а потом отдельно сверяю их с DNS и отчётами. Для действующего субдомена решаю, нужна ли ему собственная DMARC-запись и отдельная политика, или достаточно наследования. Тег sp задаёт политику для поддоменов на родительском уровне; запись на самом субдомене может содержать его собственную политику. Настраивать отдельные SPF и DKIM-записи «для галочки» на каждом имени не нужно: записи зависят от реального способа отправки и используемых доменов.

Старые сервисы проверяю по назначению и расписанию. Если отчётный сервер отправляет письмо раз в месяц, его легко пропустить при коротком наблюдении. Если поток подтверждён как ненужный, его отключают через владельца системы и проверку последствий. Если он нужен, восстанавливают согласованную аутентификацию у сервиса. Смена DKIM-ключа не лечит автоматически неправильный домен подписи: сначала проверьте d= в заголовке и alignment с From, затем уже ротацию и DNS-селектор.

В отчётах субдомены следует разбирать отдельно от основного домена, когда получатель предоставляет такую детализацию. Так обнаруживается не только забытая рассылка, но и разница между потоками, которая теряется в сводном проценте pass. Не публикуйте жёсткую политику для всего дерева, пока не понимаете, какие действующие приложения используют его имена. DNS умеет наследовать политику; ответственности за приложения он не наследует.

Если нужен второй взгляд, я проверю источники отправки, DNS и отчёты DMARC, затем составлю список точечных исправлений. Для почтовой инфраструктуры важны проверяемые результаты, а не просто запись reject. Обсудить задачу
Таблица проверки DMARC rua и источников отправки почты
Отчёт указывает направление проверки.

Ошибка №3: ждать от rua готового списка приложений

Тег rua указывает, куда отправлять агрегированные отчёты DMARC. Они помогают увидеть домены отправителей, IP-адреса, результаты SPF и DKIM, alignment и применённое решение в объёме, который даёт конкретный получатель. Это полезная телеметрия, а не каталог приложений. В отчёте может быть виден IP или домен сервиса, но отчёт не обязан назвать вашу CRM, сайт или ответственного сотрудника. По этой причине я сопоставляю данные с договорами, настройками сервисов, журналами и владельцами систем.

Перед публикацией rua проверяю, что адрес принимает отчёты, его обслуживают, а доступ к ним ограничен нужными сотрудниками. Для крупного объёма XML обычно нужен разборщик или специализированная система; обычный почтовый ящик быстро превращается в склад архивов. Учитываю, что получатели и периодичность формирования отчётов различаются. Отсутствие отчёта за один день не доказывает отсутствие отправок или проблем. Отдельные failure-отчёты — другой механизм, они не появляются автоматически от одного лишь rua и могут содержать чувствительные данные.

Затем группирую строки по источнику и результату: легитимный поток, неизвестный поток, SPF pass без alignment, DKIM pass без alignment, оба не прошли. Для неизвестного IP сначала выясняю происхождение. Не заношу его в SPF только потому, что в отчёте есть трафик с нашим From: это может быть подделка. Если поток свой, связываюсь с владельцем сервиса и настраиваю домен отправителя так, чтобы SPF или DKIM выравнивался с From. После изменения делаю контрольную отправку и проверяю новый результат.

Отчёты нужны не только на этапе включения политики. Новый сайт, смена почтового провайдера или переезд приложения могут изменить исходящий маршрут через месяцы после аудита. Я сохраняю историю результатов и отмечаю, когда менялись DNS-записи и настройки отправителей. Так можно отличить новую ошибку от старой строки, которая просто попала в другой период. Но не обещаю увидеть в агрегированном XML каждый отдельный отказ и причину, которую знает только принимающий сервер: формат и детализация зависят от отправителя отчёта.

rua показывает технические сведения об аутентификации, а не гарантированный список названий ваших сервисов.

Как перейти к p=reject без догадок

Я начинаю с p=none и сбора наблюдений, но не назначаю универсальный срок: он зависит от периодичности писем и полноты отчётов. Владелец домена проверяет, что обычная почта, редкие уведомления и внешние отправители учтены. Затем исправляет найденные источники, повторяет тесты и подтверждает alignment. Только после этого разумно переходить к enforcement. Такой порядок снижает вероятность потерять нужный поток, хотя не может обещать ноль ошибок: сервисы и маршруты меняются.

Промежуточный p=quarantine возможен, если команда понимает его эффект у своих получателей и готова отслеживать доставку. Это не обязательная ступень протокола и не всегда означает одинаковое помещение в папку спама. У каждой стороны своя реализация обработки. Если тесты показывают стабильный DMARC pass для легитимных источников, можно публиковать p=reject, заранее сохранив старые DNS-значения и способ быстро откатить изменение. План отката — обычная инженерная мера, а не признание, что настройка сделана неправильно.

После переключения слежу за агрегированными отчётами, отказами в журналах и обращениями пользователей. При жалобе фиксирую адрес получателя, время, Message-ID и полный SMTP-ответ, затем сверяю заголовки сообщения и DMARC-результат. Не предлагаю всем подряд немедленно возвращать p=none: сначала выясняю, затронут ли один поток, один получатель или сама политика. Если проблема подтверждена, ослабляю политику настолько, насколько нужно для восстановления доставки, и параллельно исправляю конкретный источник.

Требования крупных почтовых провайдеров тоже надо цитировать точно. Для массовых отправителей Gmail и Yahoo требуют аутентификацию и DMARC-запись, но минимально допустимая DMARC-политика включает p=none; blanket-требования непременно включить p=reject у них нет. У массовых отправителей есть и другие требования к доставке, включая выравнивание домена для прямых писем и управление жалобами. Проверьте актуальную документацию провайдера для своего типа потока. Фраза «не поставил reject — Gmail запретит почту» звучит энергично, но фактически вводит администратора в заблуждение.

Порядок перехода от DMARC p=none к p=reject
Сначала проверка, затем ужесточение.

Что исправлять, если письмо уже отклонено

Сначала запросите у отправителя полный текст отказа и журнал доставки, а не только скриншот почтового клиента. Уточните получателя, время, Message-ID, сервер, который вернул ответ, и код SMTP. На стороне получателя точная формулировка может различаться; код 550 5.7.1 сам по себе не доказывает DMARC-ошибку. Затем найдите Authentication-Results в копии письма, если она есть, и проверьте результаты SPF, DKIM и DMARC вместе с доменами. После этого сопоставьте проблемный From с нужной политикой DMARC в DNS.

Если DMARC действительно fail, определите причину: SPF не прошёл, DKIM не прошёл, или успешный результат не выровнен с From. Исправьте источник отправки, домен конверта, подпись или маршрут — в зависимости от результата. Изменение DNS не мгновенно обновляет каждый кэш, поэтому повторный тест делайте после того, как запись стала видна используемым DNS-резолверам. Не меняйте сразу SPF, DKIM и политику в одном пакете: иначе трудно понять, какое изменение вернуло поток.

При пересылке исходный SPF часто теряет смысл, а изменение тела сообщения может повредить DKIM-подпись; это не означает автоматический отказ DMARC, если остаётся другой выровненный механизм. Проверяйте реальный маршрут. Для критичных уведомлений полезны контролируемая повторная отправка и отдельный мониторинг, но не добавление случайных исключений получателя или IP. Если сервер приёма применил свою локальную фильтрацию, один лишь pass DMARC тоже не гарантирует попадания во входящие: протокол проверяет доменную аутентификацию, не качество текста и не репутацию отправителя.

Частые вопросы

Должны ли SPF и DKIM оба пройти для DMARC?

Нет. Для DMARC pass достаточно, чтобы SPF или DKIM прошёл и соответствующий домен был выровнен с доменом From.

Отклонит ли p=reject любое письмо с ошибкой SPF?

Не обязательно. Выровненный и прошедший DKIM может обеспечить DMARC pass. Кроме того, итоговое действие зависит от принимающего сервера.

Нужно ли публиковать DMARC отдельно на каждом субдомене?

Не всегда. Политика родительского домена распространяется на субдомены, если для них не задана отдельная политика; тег sp задаёт политику субдоменов.

Покажет ли rua название сервиса, который отправляет письма?

Не гарантированно. Агрегированные отчёты содержат технические данные об источниках и проверках; IP и домен сервиса нужно сопоставить с вашими системами.

Требуют ли Gmail и Yahoo именно p=reject?

Нет. Требования для массовых отправителей допускают DMARC с p=none; проверьте актуальные правила провайдера и остальные требования к отправке.

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

Источники

© ООО «АйТи-Фреш» · Москва · Все статьи