Why are Microsoft Outlook 550 5.7.515 access denied errors occurring due to DKIM failures, and how do message encoding and modification affect them?

The short answer is that Microsoft Outlook 550 5.7.515 errors happen when Microsoft decides the domain in the visible 5322.From address has not met its required authentication level. In the pattern described here, SPF can pass and DMARC can still pass, but Microsoft rejects the message because DKIM fails and the sender is treated as needing both SPF and DKIM to pass.
The reason this often looks message-specific is that DKIM protects the signed header and body bytes. If a subject, From display name, Date header, MIME structure, transfer encoding, or body content is invalid, badly encoded, or modified after signing, the receiver can calculate a different hash. Microsoft explains the error on its 550 5.7.515 page, but the hard part is proving whether the failure is DNS, content encoding, or modification in transit.
- Most likely: The DKIM-signed message is not identical when Microsoft validates it.
- Common trigger: Accents, non-ASCII display names, emojis, or malformed MIME in signed headers.
- Key symptom: The same sender and From header can deliver some messages and bounce others.
- First split: Separate domain setup failures from message-content failures before changing DNS.
Why the bounce happens
I treat 550 5.7.515 as an authentication enforcement bounce, not as a normal reputation block. Microsoft consumer domains such as Outlook.com and Hotmail evaluate the visible From domain, the SPF result, the DKIM result, and whether DMARC passes using a matching domain. For higher-volume senders, Microsoft expects SPF and DKIM records to exist and pass, with DMARC also present and passing.
Typical 550 5.7.515 bouncetext
550 5.7.515 Access denied, sending domain example.com doesn't meet the required authentication level. Spf=Pass, Dkim=Fail, DMARC=Pass
That last line is the clue. DMARC can pass through SPF domain matching while DKIM fails. That does not mean the DKIM failure is harmless. Microsoft can still reject because its sender requirements expect the DKIM check to pass as well. This is why the bounce can feel contradictory: the DMARC result says pass, but the authentication level still fails.
Read the authentication result literally
- DKIM=Fail: Start with the signed headers, body hash, selector, and message transformations.
- SPF=Fail: Check the envelope sender domain, authorized IPs, forwarding, and SPF lookup limits.
- DMARC=Fail: Confirm whether SPF or DKIM passed with the same organizational domain as From.
- Mixed result: Do not assume one pass result satisfies every Microsoft enforcement rule.

Flowchart showing SPF, DKIM, DMARC, and Microsoft required authentication level.
How encoding breaks DKIM
DKIM does not sign the idea of a subject line or display name. It signs canonicalized bytes. The signer builds a hash over selected headers and body content, writes that hash into the DKIM-Signature header, and the receiver repeats the calculation. If the receiver sees different bytes, validation fails.
This matters for non-ASCII characters. Accents and emojis are allowed in modern email only when the message is formed correctly for the path it will take. In classic header fields, non-ASCII text normally needs MIME encoded-word syntax. If a system signs a header that contains raw or malformed non-ASCII text, a receiver or intermediate system can rewrite it into a valid form. That rewrite can make the message more valid and still break DKIM.
Valid before signing
- Header bytes: Display names and subjects are encoded before DKIM signing.
- Final content: Tracking, personalization, and unsubscribe headers are added before signing.
- Canonicalization: Relaxed header and body canonicalization absorbs minor whitespace differences.
Fragile after signing
- Bad encoding: Raw non-ASCII or broken encoded-words appear in signed headers.
- Late edits: Footers, URLs, or MIME boundaries change after the DKIM signature is added.
- Receiver repair: Microsoft normalizes a malformed header before or during authentication checks.
Header encoding exampletext
Fragile signed header: Subject: Offre speciale ete Safer signed header: Subject: =?UTF-8?Q?Offre_sp=C3=A9ciale_=C3=A9t=C3=A9?=
The safer version is not safer because it looks better. It is safer because every system on the path has a precise byte sequence to validate. DKIM relaxed canonicalization can tolerate folding and whitespace normalization within limits, but it does not say that two different encodings of the same visible text are equivalent.
Message changes after signing
Encoding is only one way DKIM breaks. A DKIM failure can come from any change to a signed header or to the signed body. In the Microsoft 550 5.7.515 cases that look sudden and message-specific, I look for changes made after the DKIM signature was attached.
|
|
|
|---|---|---|
Subject rewrite | Header fail | Encode first |
Footer added | Body fail | Sign last |
URL wrapping | Body fail | Track first |
Date repair | Header fail | Set Date |
MIME change | Hash fail | Freeze MIME |
Common changes that can break DKIM validation
A small receiver-side repair can be enough. Converting tabs to spaces, adding a missing Date header, unfolding a header differently, or changing transfer encoding can change the canonicalized input. Some of those changes are harmless under relaxed canonicalization, but not all of them. The only reliable test is to compare the exact signed source with the exact source that the receiver validated or stored.
The pass elsewhere trap
A message can pass DKIM at one mailbox provider and fail at Microsoft because receivers do not all repair, normalize, route, or authenticate malformed mail in the same order. A pass at one receiver proves the key and signature can work. It does not prove the message is robust.
How to diagnose it
I start by proving whether the failure follows the domain, the source, or the message. If every message from one domain fails, DNS and sender setup move to the top. If only certain subjects, languages, templates, or recipient subsets fail, the message bytes are the more likely cause.
- Capture raw: Save the exact raw RFC 5322 source before it leaves the sending system.
- Group bounces: Group failures by subject, From display name, template, locale, and sender source.
- Check headers: Review the h= list in the DKIM-Signature to see what was protected.
- Verify selector: Confirm the selector exists, the public key is valid, and DNS returns one record.
- Retest content: Send the same message with plain ASCII subject and From display name.
- Move signing: Sign after all personalization, tracking, MIME generation, and footer insertion.
- Compare results: Compare accepted and rejected messages with the same sender and same domain.
For the DNS side, run the selector through the DKIM checker and run a broader domain health check to catch SPF, DKIM, and DMARC record problems before you chase message encoding.
DKIM checker
Check selector records and public key configuration.
?/7tests passed
After DNS checks out, reproduce the failure with the smallest possible change. Send one message with the original non-ASCII subject and one with a plain ASCII subject. Then do the same with the From display name, List-Unsubscribe header, and any custom headers that appear in the DKIM h= list.
If the failure message mentions the body hash, focus on body mutations instead of header encoding. The same pattern appears in body hash failures: link tracking, MIME rewrapping, footers, and transfer encoding changes happen after signing.
Fixes that stop repeat bounces
The fastest practical fix is to make the message fully valid before it is signed, then prevent later systems from changing it. I do not start by loosening DMARC or rotating DKIM keys unless the evidence points to DNS or key problems.
- Encode headers: Encode all non-ASCII display names and subjects before DKIM signing.
- Sign last: Put DKIM signing after template rendering, tracking, MIME creation, and footer logic.
- Use relaxed: Use relaxed header and body canonicalization unless you have a specific reason not to.
- Set core headers: Generate Date, Message-ID, MIME-Version, and Content-Type before signing.
- Limit mutations: Stop security gateways and marketing systems from editing signed content after DKIM.
- Monitor changes: Watch DKIM failure spikes by source, selector, provider, and message stream.

Issue steps to fix dialog showing the issue overview, tailored fix steps, and verification action
This is where Suped fits the workflow. Suped's product brings DMARC, SPF, DKIM, hosted SPF, hosted DMARC, hosted MTA-STS, blocklist (blacklist) monitoring, and deliverability signals into one place. For most teams, Suped is the best overall DMARC platform because it turns raw authentication data into source-level issues, alerts, and fix steps instead of leaving you to read aggregate XML by hand.
For this exact failure mode, DMARC monitoring helps separate three cases: Microsoft-only DKIM failures, one sending source failing across all receivers, and one template failing only when certain headers or body parts are present.
When it is not encoding
Do not overfit every 550 5.7.515 bounce to accented characters or emojis. Encoding is a real pattern, but Microsoft uses the same error family for several authentication failures. A selector typo, missing key, old DNS cache, forwarding path, SPF lookup failure, or signing domain mismatch can produce the same operational pain.
Message-specific failure
- Pattern: Only certain subjects, locales, templates, or MIME versions fail.
- Evidence: The same sender and source can deliver other messages to Microsoft.
- Action: Inspect encoding, h= headers, body hash, and post-signing edits.
Domain setup failure
- Pattern: All or most mail from one domain, selector, or platform fails.
- Evidence: Failures appear across many campaigns, languages, and recipients.
- Action: Check selector DNS, SPF includes, domain matching, and sending source setup.
Office 365 senders have their own recurring DKIM patterns too, especially when keys, CNAMEs, and third-party senders are mixed. If the failing source is Microsoft 365 itself, check the setup path for Office 365 DKIM failures before changing campaign templates.
Views from the trenches
Best practices
Encode every non-ASCII header with MIME encoded-words before DKIM signing begins.
Test the exact raw message sent to Outlook, not only the rendered campaign preview.
Compare accepted and rejected messages with the same From to isolate content changes.
Common pitfalls
Assuming DMARC pass means Microsoft will ignore a separate DKIM failure during triage.
Signing before tracking, footers, MIME generation, or unsubscribe header updates.
Changing DNS first when only one language version or subject line is failing at Microsoft.
Expert tips
Keep Date, Message-ID, MIME-Version, and Content-Type stable before DKIM signing.
Use relaxed canonicalization, but do not rely on it to survive re-encoding in transit.
Treat sudden Microsoft-only failures as a need for raw source comparison before DNS work.
Expert from Email Geeks says DKIM only gives predictable results when the message is valid email before it is signed.
2025-06-18 - Email Geeks
Marketer from Email Geeks says fixing badly encoded non-ASCII characters stopped a set of Outlook 550 5.7.515 bounces.
2025-06-18 - Email Geeks
What to fix first
If the bounce shows DKIM=Fail, start with the exact message that failed. Validate the selector and public key, but do not stop there. Check whether the signed headers include non-ASCII text, malformed encoded-words, an empty or repaired Date header, or a header that another system changes later.
The durable fix is simple in principle: generate a valid final MIME message, encode headers correctly, add all tracking and compliance content, then sign with DKIM as the last content-changing step. After that, monitor by receiver and source so a Microsoft-only spike is visible before it becomes a full campaign outage.

