DMARCmetric

DMARC fails but mail still delivered

Updated 2026-10-04 · Troubleshooting

Your reports show mail failing DMARC — and being delivered anyway. If you expected DMARC to work like a firewall, this looks broken. It isn't: a DMARC policy is a request you publish, not a command you enforce. The receiving mail system makes the final delivery decision, every time, and there are four ordinary reasons it delivers failing mail. Work through them in order — the first explains the vast majority of cases.

First: what is your policy actually asking for?

p=none requests exactly this behaviour. A monitoring policy tells receivers: deliver everything normally, just send me reports. Failing mail being delivered under p=none is not a gap — it is the entire design of the monitoring phase. If your record says p=none, there is nothing to diagnose; the question is simply whether your data says you're ready to move up the policy ladder.

pct= sampling waives the rest. A record like p=quarantine; pct=25 asks receivers to apply quarantine to a quarter of failing mail and treat the remaining three-quarters under none. Those sampled-out messages are delivered, correctly and by your own instruction. If you set pct during a staged rollout and forgot it, this is your answer — check your live record with the free checker.

Second: the receiver's own judgement

Even with a clean p=reject, receivers sometimes deliver failing mail deliberately:

These overrides are per-message, principled and, importantly, visible — which brings us to the reports.

Read the disposition, not just the verdict

Every aggregate report states, per row, what the receiver actually did — the disposition field: none (delivered), quarantine or reject. Reading it against your published policy turns confusion into information:

Your policyDispositionReading
p=nonenoneExpected — monitoring mode working as designed
p=quarantine; pct=25none on most rowsSampling working as designed
p=rejectquarantineReceiver softened your request
p=rejectnone with an override reasonForwarding/list traffic the receiver chose to rescue

When a receiver overrides, reports usually say why — a reason entry such as forwarded, mailing_list, local_policy or sampled_out next to the row. A disposition differing from your policy with a stated reason is the system being transparent, not disobedient. How to read a DMARC report walks through these fields in a real report.

What the dashboard shows

In the Sending sources table, mail that failed DMARC sits in the Not verified section, and its verdict follows the policy your reports show you have published: fail · p=none while you are monitoring — failing, and delivered, exactly as your policy requests — would quarantine under p=quarantine and would reject under p=reject.

So "the dashboard says it failed but the mail was delivered" is not a contradiction: under p=none you have asked receivers to deliver failing mail and report on it, and even under p=quarantine or p=reject the final decision is the receiver's own judgement. The failing rows you see while monitoring are precisely the protection you haven't switched on yet.

When to worry — and when it's fine

Fine, no action:

Worth acting on:

The pattern behind all of it: DMARC gives you visibility immediately and control gradually. Delivered-despite-failing is what the gap between those two looks like — and the reports tell you, row by row, exactly how wide the gap still is.

Still stuck?

We answer every message — usually within one business day.

Email [email protected]