Короткий ответ
В тенанте contoso.onmicrosoft.com DMARC смотрит на домен заголовка From и требует, чтобы SPF или DKIM выровнялись с ним. Политика _dmarc.contoso.example с p=reject заставляет принимающую сторону отбрасывать fail. Легитимная почта падает, когда есть отправитель, которого не внесли в SPF и не подписали DKIM на d=contoso.example: веб-форма, МФУ, старый ISP, партнёрская рассылка, «PHP mail» на хостинге. Exchange Online при правильных SPF+DKIM здесь ни при чём.
Не откатывайте сразу на p=none в панике, если не понимаете, какой поток режется. Снимите NDR/заголовки и rua. Потом либо включите отправителя в контур, либо смените его From на другой домен, либо временно p=quarantine/pct=. Не ставьте p=reject в день первой публикации записи.
Симптомы и как отличить
- Обычная переписка
ivan.petrov@contoso.exampleиз Outlook жива; «заявка с сайта» и «скан на e-mail» мертвы. - У получателя NDR с отсылкой к DMARC /
5.7.26. - В заголовке
dmarc=failприspf=passнаreturn-pathдругого домена иdkim=none(илиd=не ваш). - Отчёты
rua(XML) показываютdisposition=rejectдля IP хостинга.
| Поток | Типичный fail | Лечение |
|---|---|---|
| Outlook / OWA | редко, если SPF+DKIM EO | не трогать p= |
| CRM ESP | нет alignment | DKIM ESP + include |
| МФУ прямой SMTP | нет ни SPF ни DKIM | relay в EO или ip4+DKIM |
| Сайт sendmail | From компании, IP хостинга | SPF ip4 или другой From |
Это не спам-классификация при p=none: reject — детерминированный отказ, не Junk. Не путайте с неверной MX: там письма не входят к вам.
Возможные причины
- Перешли на
p=reject, не закрыв инвентарь отправителей. aspf=s/adkim=s(strict) при поддоменах: шлёте сnotify.contoso.example, политика strict к apex.sp=rejectна apex убивает поддомены без своих записей.- Пересылка (forward) ломает SPF, DKIM не выровнен — получатель с жёстким DMARC режет. Это чужая пересылка, не ваш сканер.
- Envelope aligned, From — отображаемое имя с другим доменом (редко в корпоративной почте, часто в «красивых» рассылках).
- Два
_dmarcTXT — permerror политики. - Запись повешена не на
_dmarc.contoso.example, а на_dmarc.wwwпо ошибке GUI.
Диагностика
1. Что опубликовано
Resolve-DnsName _dmarc.contoso.example -Type TXTnslookup -type=TXT _dmarc.contoso.exampleОжидайте один TXT вида v=DMARC1; p=...; rua=mailto:dmarc@contoso.example. Разобрать: p, sp, adkim, aspf, pct, fo.
2. Заголовки одного отклонённого письма
Нужен образец (NDR часто цитирует). Смотрите From:, Return-Path:, Authentication-Results. Fail DMARC при SPF pass на невыровненном домене — классика ESP.
3. rua, не «ощущения»
Почта на dmarc@contoso.example (или внешний агрегатор). В aggregate report: source IP, header_from, spf/dkim aligned (pass/fail), disposition. Сгруппируйте IP: Microsoft, ESP, хостинг, офисный NAT. Офисный NAT + From компании = сканер/скрипт.
4. Сверка SPF/DKIM
Параллельно: SPF, DKIM, комплект. Без pass+alignment p=reject будет резать.
5. Message Trace
Connect-ExchangeOnline -UserPrincipalName admin@contoso.example
Get-MessageTrace -SenderAddress ivan.petrov@contoso.example `
-StartDate (Get-Date).AddDays(-2) -EndDate (Get-Date) |
Where-Object Status -eq 'Failed'Исходящие EO в трейсе могут быть Delivered, а отказ случится уже на MX получателя — тогда трейс не покажет их DMARC. Источник правды для исходящих — NDR и rua, не только EO.
Решение
Сценарий A. Нашли неучтённый отправитель
Варианты, от предпочтительных:
- Отправлять через Exchange Online (сокет, коннектор, ящик устройства).
- DKIM-селектор ESP + include в SPF, From остаётся
@contoso.example. - Сменить From на
noreply@notify.contoso.exampleс своим SPF/DKIM/DMARC на поддомене. - Запретить поток, если это теневой IT.
Не добавляйте +all, чтобы «легализовать всех».
Сценарий B. Политика слишком строгая для переходного периода
Временно p=quarantine или p=reject; pct=10, оставьте rua. Это управляемый откат, не удаление _dmarc.
Сценарий C. Strict alignment и поддомены
Для смешанных потоков на старте adkim=r; aspf=r (relaxed, это и так default). Strict включайте, когда все From только apex и подписи на apex.
Сценарий D. Легитимный форвард ломается
Пересылка списков часто fail SPF. Лечится ARC у пересыльщика или тем, что списки не используют ваш From. Не отключайте DMARC из-за одной рассылки-форвардера.
Как проверить, что проблема устранена
- Контрольные письма: Outlook, сайт, сканер — у каждого
dmarc=passна тестовом получателе, который показывает заголовки. - rua за сутки: нет unexpected reject по вашим IP.
- Бизнес-поток (счета) дошёл не в карантин.
- Политика возвращена к целевой (
p=quarantineзатемreject), когда rua чистый.
Если не помогло
- rua пустой: получатели не шлют aggregate (многие мелкие MX). Полагайтесь на собственные контрольные ящики.
- Reject только у Yahoo/Gmail: они жёстче исполняют
p=. Значит fail реальный. - Подделка с вашего домена тоже начала доходить после
p=none— ожидаемо; не живите наnoneмесяцами без плана. - Внутренние письма в тенанте не ходят через публичный DMARC — по ним политику не судят.
Профилактика
- Порядок: SPF → DKIM →
p=none+rua → закрыть отправителей →quarantine→reject. Чеклист: подготовка домена. - Запрет From компании на хостинге без договора.
- Алерт на появление нового source IP в rua.
- Не копировать
_dmarcсp=reject«как у крупной фирмы» в день миграции.
FAQ
Можно ли исключить один IP из DMARC?
Нет такого механизма в записи. Либо IP проходит SPF/DKIM alignment, либо From не ваш домен.
rua на внешний сервис безопасен?
Отчёты содержат объёмы и IP, не тела писем. Используйте ящик, к которому ограничен доступ, или проверенный агрегатор. Не публикуйте rua на общую группу «всем сотрудникам».
Зачем fo=1?
Просит forensic (failure) отчёты. Многие получатели их не шлют или шлют редко. Не стройте процесс только на ruf.
Outlook не пострадал, значит DMARC ок?
Нет. Пострадал неучтённый канал. Именно его и ищут до reject.
p=reject защищает входящие к нам?
DMARC в вашей зоне влияет на то, как чужие MX обрабатывают письма как будто от вас. Входящий антиспуфинг Microsoft — отдельные политики Defender, не эта TXT.