DMARC Fail: What It Means and How to Fix It

Key takeaway

DMARC fail means that neither SPF nor DKIM passed for a domain that matches the one in the message's From address. The usual cause isn't a missing record but alignment: a service sends for you with its own bounce domain and its own DKIM signature. Forwarding, strict alignment and gateways that change the message cause the rest, and real spoofing fails on purpose. Fix it by making each service sign DKIM with your domain or use your domain for bounces, then test with a real message.

Check it now

DMARC fail explained: SPF and DKIM pass for other domains, but neither matches the From domain, so DMARC fails
DMARC fail explained: SPF and DKIM pass for other domains, but neither matches the From domain, so DMARC fails
Start reading
  1. What Does DMARC Fail Mean?
  2. Where You See DMARC Fail
  3. Why DMARC Fails: 6 Common Causes
  4. How to Read DMARC Fail in the Headers
  5. How to Fix DMARC Fail
  6. Amazon SES, Microsoft 365 and Mimecast
  7. Should You Switch to p=none?
  8. Frequently Asked Questions

What Does DMARC Fail Mean?

DMARC checks one thing: is the domain people see in the From address backed by SPF or DKIM? A message passes DMARC when at least one of them passes for a domain that aligns with the From domain. It fails when neither does. (RFC 9989)

That is why a message can pass SPF and pass DKIM and still fail DMARC: SPF checks the bounce address (MAIL FROM, also called Return-Path), and DKIM checks the domain in its signature (d=). Neither is the address the reader sees. If both belong to someone else, DMARC fails.

Aligned has two meanings, chosen by the domain's DMARC record (the DMARC Checker shows which one it uses). Relaxed (the default) needs the same organizational domain, so news.example.com aligns with example.com. Strict needs the exact same name.

Microsoft's alignment examples (relaxed is the default)
FromSPF or DKIM domainAligned under
example.comexample.comRelaxed and strict
example.combounces.example.comRelaxed only
news.example.comexample.comRelaxed only
example.commailer.example.netNeither

Where You See DMARC Fail

The same result shows up under different names, depending on who checked the message:

WhereWhat it saysWhat it means
Any message's headerAuthentication-Results: … dmarc=failThe receiver checked DMARC and it failed
Gmail's reply to the sender550 5.7.26 Unauthenticated email from domain-name is not accepted due to domain's DMARC policy.Gmail refused it because the domain asks for reject
Gmail, bulk senders421 4.7.32 … the From: header (RFC5322) in this message isn't aligned with either the authenticated SPF or DKIM organizational domainDeferred (5.7.32 when Gmail blocks it): SPF or DKIM passed, but not for the From domain
Microsoft 365dmarc=fail action=oreject (rejected with 550 5.7.1)The domain's policy is reject, and Microsoft honored it
Microsoft 365dmarc=fail action=quarantineDelivered to Junk Email (or quarantined)
MimecastDNS Authentication: DMARC FailMimecast's DNS Authentication policy found DMARC failing and, by its default, applied the sender's DMARC policy
DMARC aggregate reports<policy_evaluated> with dkim fail and spf failNeither check aligned for that sending source

Gmail's codes come from its list of SMTP errors; Microsoft's from its DMARC guide. Mimecast's DNS Authentication policy has a DMARC - Fail result whose recommended action is Honor DMARC Record: "Should an inbound message fail these checks, an action defined in the sending domain's DMARC DNS record is applied." (Mimecast)

Why DMARC Fails: 6 Common Causes

Almost every DMARC failure is one of these. The first is by far the most common.

CauseWhat the header showsThe fix
A service sends for you with its own domainsspf=pass for the service's bounce domain, dkim=pass for the service's d=, dmarc=failHave the service sign DKIM with your domain, or use your domain for bounces
A service isn't in SPF and doesn't sign at allspf=fail or softfail, no DKIM signatureAdd the service to SPF and turn on its DKIM signing
Strict alignment with a subdomainspf=pass for bounces.example.com, From example.com, record has aspf=sUse relaxed alignment (aspf=r) or send from the same name
Forwarding or a mailing listspf=fail at the final receiver; dkim=fail if a footer was addedRely on DKIM, which survives forwarding when the message isn't changed; receivers can trust ARC
A gateway changes the message after signingdkim=fail: the signature no longer matches the messageSign at the last hop, after footers and disclaimers are added
Someone is spoofing your domainUnknown sending IPs, everything failsNothing: this is DMARC doing its job

SPF has one more trap: a record that needs more than 10 DNS lookups gives permerror, which counts as not passing. Check the count with the SPF Checker. (RFC 7208)

Forwarding is why a domain at p=reject must not rely on SPF alone: the forwarder's server isn't in your SPF record, so only an intact DKIM signature still passes. Mailing lists often rewrite the From address to stay aligned. (RFC 9989)

A message with no DKIM signature at all, or one that fails, usually means the service's DKIM records were never published: look a domain's keys up with the DKIM Checker.

How to Read DMARC Fail in the Headers

Take the receiver's Authentication-Results header and compare three domains. In this example, SPF and DKIM both pass, but for example.net, while the From address is at example.com:

A DMARC fail, with SPF and DKIM passing for another domain
Authentication-Results: spf=pass (sender IP is 192.0.2.10)
  smtp.mailfrom=bounces.example.net;
  dkim=pass (signature was verified) header.d=example.net;
  dmarc=fail action=oreject header.from=example.com
  1. Find the From domainheader.from= is the domain DMARC protects (example.com).
  2. Check SPF alignmentsmtp.mailfrom= is bounces.example.net: another organizational domain, so SPF doesn't align even though it passed.
  3. Check DKIM alignmentheader.d= is example.net: DKIM passed for someone else's domain, so it doesn't align either.
  4. Read the policy actionBoth failed, so DMARC failed; action=oreject means the domain asks for reject and the receiver applied it.

Paste a whole header into the Email Header Analyzer to see these results laid out, with the path the message took. Microsoft's guide walks through the same three checks. (Microsoft)

How to Fix DMARC Fail

Fix each sending service in turn. A message only needs one aligned pass, but DKIM is the one that survives forwarding, so aim for DKIM on everything.

  1. Check your DMARC recordLook up the policy, the alignment modes and where reports go with the DMARC Checker below.
  2. List every service that sends as youYour mailbox provider, newsletter platform, CRM, helpdesk and billing system. Aggregate reports (rua=) name the sending IPs you missed: the DMARC Report Analyzer merges them by sender.
  3. Align DKIM at each serviceTurn on its domain authentication or custom DKIM, publish the records it gives you, and check that d= now shows your domain.
  4. Align SPF where you canSet a custom MAIL FROM (bounce) domain under your own domain and keep aspf relaxed.
  5. Send a real testSend a message from each service to the one-time address of the Email Deliverability Test and confirm dmarc=pass.
  6. Then tighten the policyMove from p=none to quarantine, then reject, once reports show every legitimate source passing.

Check a domain's DMARC record

To test real mail, open the Email Deliverability Test, send to the one-time address, and read the SPF, DKIM and DMARC rows of the report. Build or repair the record itself with the DMARC Generator.

Amazon SES, Microsoft 365 and Mimecast

Amazon SES. For SPF alignment, set up a custom MAIL FROM domain and keep a relaxed SPF policy; SES notes that alignment needs your DMARC record not to specify strict SPF (aspf=s). For DKIM alignment, use Easy DKIM so SES signs with your domain. (AWS)

Microsoft 365. Configure DKIM signing with your custom domain, so the signing domain aligns with the From address. Its most common failure is a non-Microsoft service that signs with its own d= or bounces from its own domain. Outbound mail that fails DMARC at the receiver goes through Microsoft's high-risk delivery pool when your policy is quarantine or reject. (Microsoft)

Mimecast. If you send outbound mail through Mimecast and DKIM-sign earlier, for example in Microsoft 365 or an on-premises server, Mimecast warns that "the check will likely fail on the recipient side": only Mimecast should sign. For inbound mail that shows DNS Authentication: DMARC Fail, the fix belongs to the sending domain. (Mimecast)

Should You Switch to p=none?

Only while you find your senders. p=none asks receivers to change nothing: it turns on reporting and leaves delivery to their usual filters. (RFC 9989)

Lowering p=reject to p=none to stop DMARC failures also stops protecting your domain from spoofing. The better order is the other way round: start at p=none with reports, fix each legitimate stream, then move to quarantine and reject. Since 2024 Gmail and Yahoo ask bulk senders for DMARC, and Gmail accepts p=none for that. (Gmail)

Why is your email failing DMARC?

DNS Robot's free DMARC Checker reads your record the way receivers do: the policy, the alignment modes, where reports go and whether report addresses are authorized.

Sources

  1. RFC 9989: Domain-Based Message Authentication, Reporting, and Conformance (DMARC), IETF
  2. Gmail SMTP errors and codes, Google
  3. Email sender guidelines FAQ, Google
  4. Set up DMARC to validate email in Microsoft 365, Microsoft
  5. Complying with DMARC authentication protocol in Amazon SES, Amazon Web Services
  6. Policies - DNS Authentication Overview, Mimecast
  7. RFC 7208: Sender Policy Framework (SPF), section 4.6.4, IETF

Frequently Asked Questions

What does DMARC fail mean?

It means neither SPF nor DKIM passed for a domain that matches the one in the From address. The message may still pass SPF and DKIM for other domains, such as an email service's own. Without an aligned pass, receivers can't tell it really came from the From domain, so they apply its DMARC policy.

What does "DNS Authentication: DMARC Fail" mean?

It is Mimecast's label for a message that failed DMARC in its DNS Authentication policy. Its recommended setting applies the sending domain's own DMARC policy, so a domain at p=reject gets rejected. The sender has to fix it, by aligning SPF or DKIM with their From domain.

Why does DMARC fail when SPF and DKIM pass?

Because DMARC needs them to pass for the From domain. SPF checks the bounce address and DKIM the d= domain in the signature; if a service uses its own domains for both, each passes for the service, and DMARC still fails for you. Make the service sign DKIM with your domain.

What is Gmail error 550 5.7.26?

Gmail's reply when it refuses a message for DMARC: "Unauthenticated email from domain-name is not accepted due to domain's DMARC policy." The From domain asks for reject, and neither SPF nor DKIM passed for it. Its 4.7.32 deferral (5.7.32 when Gmail blocks instead) is the alignment version: SPF or DKIM passed, but not for the From domain.

What does dmarc=fail action=oreject mean?

It is how Microsoft 365 writes a DMARC failure for a domain that publishes p=reject: the message failed and the sender's reject policy was applied, so it was refused during SMTP. action=quarantine means the policy was quarantine, and the message went to Junk Email or quarantine.

Can an email that fails DMARC still be delivered?

Yes. At p=none nothing changes because of DMARC, and even at quarantine or reject the receiver makes the final decision. Some accept failing mail from a forwarder they trust. Don't count on it: fix the alignment so legitimate mail passes.

How do I fix DMARC fail with Amazon SES?

Set up Easy DKIM, so SES signs with your domain and DKIM aligns, and add a custom MAIL FROM domain under your domain for SPF alignment, keeping aspf relaxed. Either one aligned pass is enough, but DKIM survives forwarding.

Does forwarding break DMARC?

Often. Forwarding sends the message from the forwarder's server, which isn't in your SPF record, so SPF fails at the final receiver. DKIM still passes if nothing in the message changed, which is why domains at p=reject need DKIM. Mailing lists that add footers break DKIM too.

How do I check why my email fails DMARC?

Look up your record with the DMARC Checker, then send a real message to the Email Deliverability Test and read its SPF, DKIM and DMARC rows. For a message you received, paste its header into the Email Header Analyzer and compare smtp.mailfrom and header.d with header.from.

Should I set my DMARC policy to p=none to stop failures?

Only while you're finding your senders. p=none stops DMARC from protecting your domain against spoofing. Fix each legitimate service's alignment instead, then keep or raise the policy to quarantine or reject.

About the author

Shaik Vahid

Founder of DNS Robot. Vahid spent years in web hosting support fixing domains, DNS records, SSL certificates and email delivery for customers. He builds DNS Robot's tools and writes these guides from the errors people actually hit.

DMARC Checker

Check any domain's DMARC policy the way receivers read it, with reports, SPF and DKIM