DMARCmetric

DMARC fails but mail still delivered

Updated 2026-07-08 · 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

DMARCmetric's verdicts are deliberately policy-independent. A source failing both SPF and DKIM is labelled would reject — a simulation of what full enforcement would do to it, shown whether your actual policy is none, quarantine or reject. A source that fails alignment without being an outright threat shows fail · p=none while you're in monitoring — failing, delivered, exactly as your policy requests.

So "the dashboard says would reject but the mail was delivered" is not a contradiction: the label describes the mail's fate under p=reject, the delivery reflects your current policy plus the receiver's judgement. The gap between the two is 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]