Enhanced Status Code 5.7.20: No Passing DKIM Signature Found
Enhanced Status Code 5.7.20 means “No Passing DKIM Signature Found.” The receiving server required a valid DKIM signature and your message did not carry one that passed. Either nothing signed the message, or a signature was present and failed verification.
550 5.7.20 Message rejected: no passing DKIM signature found for the sending domain
What does 5.7.20 mean?
Enhanced status code 5.7.20 means no passing DKIM signature was found. RFC 7372 defines it for a message that did not contain any DKIM signature that verified, and it covers both halves of that: a message with no DKIM-Signature header at all, and a message that carried one which failed. The receiver has a local policy requiring DKIM and your message did not satisfy it.
A signature can be present and still fail for several distinct reasons. The public key may be missing from DNS at the selector named in the header, which is the most common single cause and usually means the DNS record was never published or was published at the wrong name. The message may have been modified in transit by a mailing list, a forwarding service, or an appliance that appends a footer, which invalidates the body hash. The key may have been rotated at the signer without the DNS record being updated. Or the signing domain may not align with the From header, which passes DKIM but fails DMARC.
Since February 2024, when Google and Yahoo began requiring authentication from bulk senders, this class of rejection stopped being an edge case. Any domain sending meaningful volume needs DKIM signing that verifies and aligns, and needs it on every path the mail can take, including the forwarding and list paths that break signatures.
How 5.7.20 plays out
5.7.20 rejectionWhere 5.7.20 sits: soft vs hard bounce
| Soft bounce (4xx) | Hard bounce (5xx) | |
|---|---|---|
| Nature | Temporary | Permanent |
| SMTP class | 4xx | 5xx |
| What to do | Let it retry | Suppress the address |
| Recoverable? | Often | No |
| 5.7.20 is | ✓ this code |
Common causes of 5.7.20
- No DKIM-Signature header was added, because signing is not enabled at the sending platform
- The public key is not published in DNS at the selector named in the signature
- The message body was altered in transit, so the body hash no longer matches
- The signing key was rotated without the DNS record being updated
- The DNS record is malformed, split incorrectly across strings, or has trailing whitespace
- A mailing list or forwarder re-wrote the message and broke the original signature
How to fix 5.7.20
- Enable DKIM signing at every platform that sends as your domain, not only the main one
- Verify the public key resolves at selector._domainkey.yourdomain.com using DKIM Record Checker
- Send a test message and read the Authentication-Results header for the exact failure reason
- Make sure the signing domain aligns with the From header so DMARC passes as well as DKIM
- Re-publish the DNS record after any key rotation and allow for TTL before switching keys
- For mail that traverses lists or forwarders, check whether ARC is preserving the original result