dmarc=fail (p=REJECT) in Authentication-Results
Last updated 2026-08-14
Every fix for a DMARC failure starts with one line of the raw message. Learn to read it once and most of these problems stop being mysterious.
The line
Two passes and a failure. Nothing here is broken at the vendor, and nothing here helps you. Read it field by field.
-
dkim=pass header.i=@vendor.net. The signature verified, for vendor.net. The domain that matters for DMARC is the signing domaind=, reflected here asheader.i. It is not your domain, so it does not align. -
spf=pass ... smtp.mailfrom=bounces@vendor.net. SPF passed for the envelope sender domain, which is the vendor's. Also not your domain, also no alignment. -
header.from=example.com. This is the identity DMARC protects, and the reader sees it. Neither passing check matched it. -
p=REJECT. Your published policy, echoed back.sp=REJECTis what applies to subdomains. -
dis=NONE. The disposition actually applied. This message was delivered despite the policy, which is why you may be seeing failures with no bounces yet. Somewhere else, another receiver is applyingdis=rejectand you never hear about it except in aggregate reports.
What alignment requires
DMARC passes when at least one of these is true, with the default relaxed matching:
-
SPF passes and the envelope sender domain is your From domain or a subdomain
of it. So
bounces.example.comaligns withexample.com, andbounces.vendor.netnever does. -
DKIM verifies and the signature's
d=is your From domain or a subdomain of it.
Set aspf=s or adkim=s and the subdomain latitude disappears; an
exact match is then required. The alignment guide
works through the cases with real header examples.
Where to find the header
- Gmail: open the message, three dots, Show original.
- Outlook on the web: three dots, View, View message source.
-
Microsoft 365: the same line plus
compauth=fail reason=000, Microsoft's composite verdict. Acompauthfailure with everything else passing usually means alignment as well. - Anywhere: send a message to a mailbox you control at a provider that writes this header. Gmail is the most readable.
Fix it
-
Identify the sender from
smtp.mailfromorheader.i. That domain names the vendor. -
Complete that vendor's domain authentication so it signs with
d=example.com. This is the fix that also survives forwarding. The provider pages have the records for the common ones. - Set a custom return-path if the vendor offers one, which gets SPF aligned as well and gives you two passing paths instead of one.
-
Verify with the DKIM checker that the selector the vendor asked
you to publish resolves, then send a test and read the header again. You want
dkim=pass header.i=@example.com.
One header tells you about one message. Aggregate reports tell you about every sender at once, which is the only way to know you have found them all before you tighten a policy. Reading a report by hand is the next page to read, and our weekly digest does it for you if you would rather not.
Hear about the next failing sender first
This rejection named one sender, and the next to break sends no warning ahead of it. On a paid plan, the first failing report from a new source reaches you as an email that day, not in Monday's digest. Pro watches 5 domains for $19 a month.
Get the alerts and the digestNo card · 12+ months of history · The free plan does not expire
Questions
How can SPF pass and DMARC fail on the same message?
SPF authenticates the envelope sender, DMARC checks the visible From header. When mail goes out with a vendor return-path, SPF passes for the vendor's domain and aligns with nothing in your From address, so DMARC fails.
What does dis=none mean next to p=REJECT?
The receiver read your reject policy but chose not to apply it to this message, usually because it is local mail, a trusted forwarder, or ARC-sealed. Do not read it as passing.
Is header.from the same as the address I typed in the client?
Yes, it is the domain part of the visible From address, the one the recipient sees. smtp.mailfrom is the envelope address used for bounces, which recipients never see and which platforms routinely set to their own domain.
Keep reading
Checking as you fix? Our DMARC checker, SPF checker and DKIM checker read the records live, no signup.