Skip to content

Est. 2011ยทMicrosoft Partner 7033487ยทDelivery under 3 minยทSupport 7 days a week

Your vault is empty.

Free Fix 550 5.7.509

550 5.7.509: your mail fails DMARC so the receiver rejects it outright

11 min read Updated October 4, 2026 Exchange Server

Fix it now

Microsoft publishes 5.7.509 as access denied because the sending domain does not pass DMARC verification and has a DMARC policy of reject. The receiver followed your own published instruction. Fix the authentication, not the policy.

Run these against the domain in your From address

Resolve-DnsName contoso.com -Type TXT
Resolve-DnsName _dmarc.contoso.com -Type TXT
Resolve-DnsName selector1._domainkey.contoso.com -Type CNAME
  1. Get a failing message and read its Authentication-Results header. It states the SPF result, the DKIM result and the DMARC verdict, and the domain each was evaluated against.
  2. List every system that sends using your domain in the From address: Exchange or Exchange Online, marketing and invoicing platforms, scanners and copiers, monitoring tools and line-of-business applications.
  3. Publish exactly one SPF TXT record covering all of them. More than one record for a domain makes SPF return permerror, and so does needing more than 10 DNS lookups to evaluate it.
  4. Enable DKIM signing for the domain. In Microsoft 365 that means publishing the two selector CNAME records the tenant gives you and then switching signing on for that domain.
  5. Send a test message to an external mailbox and read the Authentication-Results header on what arrives.

Most Microsoft 365 organisations need include:spf.protection.outlook.com in the SPF record for the domain.

If the header shows dmarc=pass for your domain you are finished. If SPF passes and DMARC still fails, that is alignment, and the next section is about exactly that.

Why it happens

DMARC does not ask whether SPF passed. It asks whether SPF passed for the same domain that appears in the From line the recipient sees. That is alignment, and it is where most failures live. Microsoft documents two modes, controlled by the aspf and adkim tags: relaxed, the default, where the organisational domains must match and subdomains are allowed; and strict, where the fully qualified domain names must match exactly with no subdomain matching. A marketing platform can produce a perfect SPF pass for its own bounce domain and still fail DMARC for you, because the domain that passed is not the domain in your From header.

DMARC passes if either check aligns and passes, which gives you two independent routes and one important practical consequence: DKIM is the more durable of the two. When a message is forwarded the envelope sender is usually rewritten, so SPF breaks. A DKIM signature survives forwarding as long as the body and the signed headers are not modified, which is why a mailing list that rewrites the subject or appends a footer still breaks it. If your mail is signed, forwarded copies keep passing.

There is a cost to publishing an enforcing policy before your sending sources authenticate, and it is not only the bounces. Microsoft documents that outbound mail from domains in Microsoft 365 that fails DMARC checks at the destination is routed through the high-risk delivery pool when the domain’s DMARC policy is p=reject or p=quarantine, and states there is no override for that behaviour. So a badly timed policy change degrades delivery for the mail that is still getting through, not only for the mail that bounces.

Three of the codes people arrive with here – 5.7.20, 5.7.21 and 5.7.24 – are not in Microsoft’s non-delivery report reference at all. Two that are documented are narrower than they look: 5.7.23 is a Sender Policy Framework violation, and 5.7.26 is specifically about IPv6 – a message sent over IPv6 must pass either SPF or DKIM, and this one is not signed.

A third-party platform sends as your domain and is not authorised

You have this one if Failures affect only mail from one system – a newsletter tool, an invoicing service, a helpdesk – while ordinary user mail passes.

  1. Get the platform’s documented SPF include and add it to your single SPF record.
  2. Better, ask the platform to sign with a DKIM key published under your domain, which gives alignment that survives forwarding.
  3. Never create a second SPF record for the domain; Microsoft states that multiple records make SPF return permerror.
  4. Retest through that platform to an external mailbox and read the headers.

If a platform cannot sign for your domain and cannot be added to SPF, have it send from a subdomain you control instead of from the main domain.

The SPF record cannot be evaluated

You have this one if A permerror result rather than a fail, and the record either appears twice or chains through many nested includes.

  1. Confirm exactly one SPF TXT record exists for the domain.
  2. Count the DNS lookups the record requires. More than 10 and the message fails SPF with a permanent error; every include, redirect and mechanism that resolves a name counts.
  3. Remove sources you no longer use. Old includes accumulate as vendors come and go, and each one costs lookups.
  4. Recheck afterwards and confirm the result is a clean pass or fail rather than an error.

DKIM is not enabled or its records are missing

You have this one if No DKIM signature in the headers at all, or a signature whose public key cannot be retrieved.

  1. In Microsoft 365, publish the selector CNAME records the tenant provides for the domain, then enable signing for that domain.
  2. For an on-premises or third-party signer, confirm the selector record resolves and that the key matches the one in use.
  3. Send a test message and confirm the signature verifies at the receiving end.
  4. Keep the second selector record in place; it exists so keys can be rotated without a gap in signing.

Your own policy is stricter than your setup supports

You have this one if You published p=reject before every sending source was authenticated, and legitimate mail started bouncing.

  1. Move back to p=none with an aggregate reporting address while you fix the sources, and monitor the results for the domain.
  2. Work through the reports until every legitimate source authenticates and aligns.
  3. Tighten in stages – p=none, then p=quarantine, then p=reject – and use the pct= value to affect a growing share of messages at each step.
  4. Do the subdomains of increasing volume first and leave the parent domain until last.

Do not leave the policy permanently at monitoring. The point of the exercise is an enforcing policy you can trust, and until you have one the domain is forgeable.

Full reference

What alignment actually compares

From address MAIL FROM or DKIM d= domain Relaxed Strict
user@contoso.com contoso.com Pass Pass
user@contoso.com bounces.contoso.com Pass Fail
user@marketing.contoso.com contoso.com Pass Fail

Relaxed is the default and is the sensible choice for most organisations, because it lets a bounce subdomain or a marketing subdomain align with the organisational domain. Strict is worth having only where you control every sending path and want the exact match, and it is a common cause of a DMARC failure that looks inexplicable until you notice the s in the record.

Which check is failing, from the header

Authentication-Results shows What to fix
spf=fail, no DKIM signature The sending IP is not authorised in SPF and nothing is signing the mail
spf=pass but dmarc=fail SPF passed for a different domain than the From header – an alignment failure
spf=permerror Two SPF records for the domain, or more than 10 DNS lookups to evaluate it
dkim=fail on forwarded mail only A list or forwarder is modifying the body or the signed headers
Everything passes for direct mail, fails when forwarded SPF-only authentication. Enable DKIM signing

Rolling a policy out without breaking mail flow

  1. Publish v=DMARC1; p=none; pct=100; rua=mailto:rua@contoso.com and monitor.
  2. Move to p=quarantine, using pct= to raise the share of affected messages gradually – 10, 25, 50, 75, then 100.
  3. Move to p=reject; pct=100 once the reports show only legitimate, aligned sources.
  4. Repeat for each remaining subdomain in increasing order of volume and complexity, and leave the parent domain until last.
  5. Expect some false positives. Microsoft’s own guidance is to go slowly and deal with the issues methodically, because blocking legitimate mail in volume is not acceptable to users.

The codes, and how much of each is published

Code Published text Source
550 5.7.509 Access denied, sending domain does not pass DMARC verification and has a DMARC policy of reject Microsoft Learn
550 5.7.23 The message was rejected because of Sender Policy Framework violation Microsoft Learn
550 5.7.26 Access denied, a message sent over IPv6 must pass either SPF or DKIM validation, this message is not signed Microsoft Learn
550 5.7.20 Not present in Microsoft’s non-delivery report reference Not published
550 5.7.24 Not present in Microsoft’s non-delivery report reference Not published
550 5.7.21 Not present in Microsoft’s non-delivery report reference Not published

For the three that are not published, do not reason from the number. Get a copy of the rejected message, read the Authentication-Results header, and fix whichever of SPF, DKIM and alignment it names. That works regardless of which receiver produced the code and regardless of whether anyone has documented it.

Removing the DMARC record makes the bounces stop and hands your domain back to anyone who wants to forge it. That is a decision to stop protecting the domain, not a fix. If you need immediate relief while you work, move the policy to p=none and keep the reporting address so you can still see what is happening.

Things worth checking once and writing down

  • Exactly one SPF TXT record per domain and per subdomain that sends.
  • The lookup count in that record, kept comfortably under 10.
  • Both DKIM selector records published, so a key rotation does not create a gap.
  • An aggregate reporting address that somebody actually reads.
  • A list of every system that sends as the domain, kept with the DNS records rather than in somebody’s head.

Every code this article covers

Code What it points at Source
550 5.7.509 Access denied: the sending domain does not pass DMARC verification and has a DMARC policy of reject. The domain in the 5322.From address is the one being evaluated Microsoft Learn
550 5.7.23 The message was rejected because of a Sender Policy Framework violation at a destination that uses SPF to validate inbound mail Microsoft Learn
550 5.7.26 Access denied: a message sent over IPv6 must pass either SPF or DKIM validation, and this message is not signed Microsoft Learn
550 5.7.20 Not present in Microsoft’s non-delivery report reference. Read the Authentication-Results header on the rejected message rather than the code not published by the vendor
550 5.7.24 Not present in Microsoft’s non-delivery report reference. Diagnose from the SPF result in the message headers not published by the vendor
550 5.7.21 Not present in Microsoft’s non-delivery report reference. Diagnose from the DKIM and alignment results in the message headers not published by the vendor

Confirm the fix worked

  1. A test message to an external mailbox shows an Authentication-Results header with a DMARC pass for your domain.
  2. The domain returns exactly one SPF TXT record, and it covers every sending system you identified.
  3. That record needs 10 or fewer DNS lookups to evaluate.
  4. _dmarc.contoso.com returns the policy you intended, including an aggregate reporting address.
  5. Aggregate reports over the following days show your legitimate sources passing, with no unexplained sources left.

Questions people ask about this

Does fixing DMARC cost anything?

No. SPF, DKIM and DMARC are DNS records and a signing setting, all included in what you already have. The only real cost is the time spent finding every system that sends as your domain.

Can I just remove the DMARC record to stop the bounces?

You can, and mail starts being delivered again, but you also hand your domain back to anyone who wants to forge it. If you need relief now, move the policy to p=none and keep the reporting address.

Why does mail to one provider fail when everyone else accepts it?

Receivers choose when to enforce. Some apply your policy strictly and reject, others quarantine or accept and report. A single strict receiver is often where a long-standing authentication gap first becomes visible.

We forward mail to another address and it now bounces. What changed?

Forwarding breaks SPF because the forwarding host is not in your record. Enabling DKIM signing usually solves it, since the signature survives the forward. Where a list modifies the message, only the list operator can preserve alignment.

Is there a downside to publishing p=reject early?

Yes, beyond the bounces. Microsoft documents that outbound mail from Microsoft 365 domains failing DMARC at the destination is routed through the high-risk delivery pool when the policy is p=reject or p=quarantine, with no override. Get the sources authenticated first.

Related error codes

Was this article helpful?

Your feedback helps us improve our documentation.

Related articles

Free Fix Event ID 1053: ActiveSync lacks permission to create the device container Free Fix 554 5.6.0 invalid content: malformed messages Exchange refuses to accept Free Fix Event ID 7009: Exchange setup times out waiting for a service to start Free Fix 451 4.4.0 DNS query failed: Exchange cannot resolve the next hop
โ† Back to Knowledge Base