Learn · Reading your report

DMARC fails but SPF and DKIM pass

Every check is green and DMARC still says fail. This is not a bug in your report and it is not a receiver being difficult — it is the one rule that makes DMARC worth anything. DMARC does not ask whether SPF and DKIM passed. It asks whether either of them passed for the domain your reader sees. That extra condition is called alignment, and it is almost always what you are looking at.

The one-sentence version: a spammer can trivially pass SPF and DKIM for a domain they own. Alignment is what stops that from vouching for your domain.

The three domains in every message

A message carries more than one domain, and each check looks at a different one:

DMARC passes only if the envelope sender matches the From domain (SPF alignment) or the d= domain matches the From domain (DKIM alignment). Either one is enough. Both misaligned means DMARC fails, no matter how green the individual checks are.

Why this happens: your sending platform

This is the cause in the overwhelming majority of cases. A marketing platform, CRM, help desk or invoicing tool sends on your behalf, and by default it uses its own domain for both the envelope sender and the DKIM signature. Both checks pass — for the platform. Neither aligns to you.

Open the headers of one of the failing messages and you will see it immediately:

From: news@yourdomain.com
Return-Path: bounces@sendingplatform.net
DKIM-Signature: v=1; d=sendingplatform.net; s=s1; ...

Two green checks, both for sendingplatform.net, zero alignment with yourdomain.com. Your aggregate reports show exactly this: spf and dkim pass in auth_results, and both fail in policy_evaluated, which is the aligned verdict. DMARC aggregate reports explained covers reading those two sections against each other.

The fix

Complete the platform's domain-authentication step — every serious sender has one, usually called "authenticate your domain", "sending domain" or "branded links":

Confirm with the free DKIM checker once the records are live, then send yourself a test and check that d= now names your domain.

Why this happens: you set strict alignment

If your record ends in adkim=s; aspf=s, you asked for strict alignment: the domains must match exactly. Under the default relaxed mode, any subdomain of your organisational domain counts — mail.yourdomain.com aligns with yourdomain.com.

So a setup that passes happily on relaxed can start failing the moment you tighten, typically because a platform signs with a subdomain it created for you, or you send marketing from news.yourdomain.com while the signature comes from the parent.

Strict is the stronger setting and a reasonable destination, but move to it after your reports show it passing, not as part of the same change that enforces your policy. If you have just tightened and mail started failing, drop back to relaxed — remove both tags, or set adkim=r; aspf=r — and reintroduce strict later.

Why this happens: a broken signature in transit

A mailing list that appends a footer, a gateway that rewrites the subject line, an appliance that strips an attachment — all of them alter bytes the DKIM signature covers, and the signature no longer verifies. Meanwhile the relay is not in your SPF record, so SPF fails too.

This is not your configuration and there is nothing to publish. ARC exists to carry the original verdict across those hops, and receivers that honour it will often deliver the message anyway — which is why you sometimes see failures in reports with a disposition of none even under enforcement.

Telling them apart in two minutes

What you seeCauseWhat to do
d= and Return-Path both name a platform you useUnauthenticated sending platformComplete its domain authentication — DKIM first
d= is a subdomain of yours, and your record has adkim=sStrict alignment you opted intoGo back to relaxed until reports show strict passing
Sender is a mailing list or a security gateway; volumes are lowSignature broken in transitNothing — expected, and ARC often covers it
Both checks fail, not passDifferent problem entirelySee why SPF and DKIM show fail

Don't fix this by weakening DMARC

The tempting shortcut is to relax the policy until the failures stop. It works, in the sense that a warning light goes out: p=none reports everything and blocks nothing, so the mail flows and the problem is invisible again.

But alignment is the whole mechanism. A domain whose senders do not align is a domain where DMARC cannot distinguish you from someone impersonating you — which means it cannot be enforced, which means it protects nobody. Align your senders first, then enforce; DMARC policies explained covers the sequencing.

Free checks: DMARC checker DKIM checker SPF checker Report analyzer

Got a report in front of you? The free DMARC report analyzer parses it in your browser and shows the aligned verdict per sender, which is the column that answers this question.

See which of the three you're looking at

Every source IP with its PTR, network owner, geography and reputation — and forwarding gateways labelled for you. On every plan, including Free.

Start free