InboxRatio

DMARC fail: what it means and how to find the actual cause

Authentication-Results: mx.google.com;
       spf=pass smtp.mailfrom=mailer.espmail.net;
       dkim=pass header.d=espmail.net;
       dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=example.com

Look closely at that header, because it's the most common shape of a DMARC failure in the wild: SPF passed, DKIM passed — and DMARC failed anyway. Nothing here is contradictory. Both passes belong to espmail.net, the sending platform, while the visible From address is example.com, and DMARC fails whenever no pass aligns with the From domain.

This article is the diagnosis lane of our DMARC series: what dmarc=fail actually asserts, the causes ranked by how often they turn out to be it, and how to read the evidence for each. Policy levels and rollout strategy are covered separately, initial setup too, and the aggregate reports you'll use for fleet-wide diagnosis have their own guide.

What dmarc=fail actually asserts

DMARC passes when at least one of two conditions holds: an SPF pass whose validated domain aligns with the From domain, or a valid DKIM signature whose d= domain aligns with it. dmarc=fail means neither happened for this message. That's all it means — it doesn't say why, and the why is everything, because the fixes for different causes have nothing in common.

Note what failure costs depends on your policy: at p=none a failing message is delivered normally (the dis=NONE in the header above shows the receiver's disposition); at quarantine it's spam-foldered; at reject it bounces. Diagnosis is identical at every level — but the urgency isn't, which is exactly why you diagnose at p=none before enforcement raises the stakes.

First, get the evidence

Two sources, use both:

  1. A live header. Send a message through your normal platform to a Gmail or Outlook mailbox you control, open the raw source, and paste it into the email header analyzer. You need four facts it will surface: the SPF result and which domain it validated, the DKIM result and its d= domain, the From domain, and the DMARC verdict.
  2. Your record. Run the domain through the DMARC checker to confirm what's actually published — policy, alignment mode, report address. Diagnosis against an imagined record wastes time; more than one "DMARC mystery" has been a typo'd record or a stale duplicate.

With the evidence up, walk the causes.

Cause 1: your ESP signs DKIM with its own domain

The header at the top of this page. The platform signs every message it sends — with its domain (d=espmail.net) unless you've completed their custom-domain authentication setup. The signature is valid, reputation-relevant, and useless for your DMARC, because espmail.net never aligns with example.com.

Evidence: dkim=pass with a d= that isn't your domain. Fix: enable custom domain signing in your platform (usually under "domain authentication" — you'll add a few CNAME or TXT records they provide), then confirm the d= flips to your domain on a fresh test send. This single cause resolves most sender-side DMARC failures, which is why it's step one.

Cause 2: SPF passes for the wrong domain — by design

SPF validates the envelope sender (return-path), and ESPs routinely set that to their own bounce domain so they can process bounces. Result: spf=pass smtp.mailfrom=mailer.espmail.net — a real pass that will never align with your From domain. This isn't a misconfiguration; it's how the platform works, and it's why aligned DKIM (cause 1's fix) carries most DMARC deployments. Some platforms also offer a custom bounce domain (bounce.example.com), which makes SPF align too — worth enabling where available, since two aligned paths beat one.

Evidence: spf=pass whose smtp.mailfrom domain isn't yours. Fix: custom bounce/return-path domain if the platform supports it; otherwise rely on aligned DKIM and move on.

Cause 3: forwarding broke SPF, and DKIM wasn't there to catch it

When a recipient auto-forwards mail (college address to Gmail, an old work address to a new one), the forwarder's server becomes the sending IP — an IP your SPF record never authorized, so SPF fails for the forwarded copy. DMARC anticipated this: DKIM signatures normally survive forwarding intact, and one aligned pass suffices. The failure happens when your mail carries no aligned DKIM (cause 1 again) — then every forwarded message fails DMARC at its final destination. RFC 7960 catalogs these indirect-flow failures in depth.

Evidence: failures concentrated at receivers you don't recognize, odd receiving domains in your aggregate reports, normal results on direct sends. Fix: aligned DKIM. Forwarding-related SPF failure is unfixable by design; the DKIM path is the designed answer.

Cause 4: a mailing list modified the message

Traditional discussion lists append footers or rewrite subjects — invalidating the DKIM signature — then resend from their own servers, failing SPF alignment as well. Mail your users send to such lists fails DMARC at every subscriber's mailbox. Modern list software works around this with From-rewriting, but that's the list operator's choice, not yours.

Evidence: failures tied to specific list domains in reports; complaints from list participants when you move to p=reject. Fix: none on your side. Known, bounded, and one reason organizations whose users live on mailing lists weigh quarantine against reject carefully.

Cause 5: DKIM is genuinely broken

Sometimes the signature itself fails: a key rotation where DNS wasn't updated, a deleted selector record, a migration that changed selectors, or an intermediary (security gateway, footer-stamping appliance) modifying messages after signing.

Evidence: dkim=fail or dkim=neutral where you expect a pass — distinct from cause 1, where DKIM passes for the wrong domain. Verify the published key for your selector with the DKIM checker, and check whether an in-house gateway touches outbound mail. Fix: repair the DNS record, republish the key, or re-order the pipeline so signing happens last.

Cause 6: it isn't your mail at all

The diagnosis everyone forgets: DMARC failing on traffic you never sent is DMARC working. Spoofers and phishers sending as your domain fail authentication by nature, show up as failing sources in your aggregate reports, and — once you reach enforcement — stop arriving in anyone's inbox as you.

Evidence: failing source IPs in reports that belong to no platform you use, often in networks or countries where you have no infrastructure. Fix: nothing to repair — this is the case for finishing the rollout to p=reject rather than a reason for alarm about your setup.

The workflow, compressed

Run the test send and header analysis. If DKIM passes with your domain in d= and DMARC still fails, check your record's alignment mode and the exact From domain (subdomain mismatches under strict alignment trip people). If DKIM passes with the wrong d=, that's cause 1 — fix it first and re-test before touching anything else. If direct sends pass but reports show scattered failures, look at causes 3, 4 and 6 in your aggregate data. And after every fix, re-verify with a fresh send rather than declaring victory from configuration screens — the email authentication checker plus one real test message is the full loop.

Related guides

About this guide

Written by InboxRatio Editorial. The cause ranking reflects the failure patterns we see configuring authentication on our own domains for every benchmark cycle and in submissions to our free checking tools; protocol behavior follows RFC 7489 and RFC 7960. No vendor's troubleshooting marketing informs the ordering.

Methodology

InboxRatio configures SPF, DKIM and DMARC on its own sending domains before every controlled placement test, which means we debug real DMARC failures on real platforms as routine work. Our benchmark protocol — identical campaigns, controlled seed list, per-provider placement — is documented at how we test.

Last updated

21 August 2026. Cause patterns and provider behavior reviewed quarterly.

Frequently asked questions

What does DMARC fail mean? No authentication result aligned with the visible From domain: SPF didn't pass for that domain, and no valid DKIM signature carried it in d=. It's an alignment verdict — SPF and DKIM can both "pass" for other domains and DMARC still fails.

Why does DMARC fail when SPF and DKIM pass? Because passing isn't aligning. An ESP's bounce domain passing SPF and an ESP's own DKIM signature are the classic pair — both legitimate, neither matching your From domain. The fix is custom-domain DKIM signing (and a custom bounce domain where offered).

Does a DMARC fail mean my email goes to spam? Depends on the published policy: p=none delivers normally, quarantine typically spam-folders, reject bounces. Receivers can also apply their own judgment either way — and repeated failures feed into how they treat your traffic generally.

How do I find out why DMARC is failing? Send yourself a message and read its Authentication-Results header — the email header analyzer decodes it. The which-domain-passed details identify the cause in most cases within minutes.

Should I worry about DMARC failures in my reports for mail I didn't send? Investigate, don't panic. Unrecognized failing sources are usually spoofing attempts — the traffic DMARC exists to shut down. Confirm the source isn't a forgotten internal system, then let enforcement handle it.

Can forwarding cause DMARC failures I can't fix? Forwarding predictably breaks SPF alignment, and there's no sender-side fix for that path. Aligned DKIM survives normal forwarding, which is the designed remedy — mailing lists that modify content remain the one genuinely unfixable case.

Remember the shape of the problem: dmarc=fail is a symptom with a short suspect list, and the d= domain of your DKIM signature convicts the usual culprit in one look. Run a test send through the email header analyzer now — the four facts it surfaces will place you on this page's map within minutes.