Enhanced Status Code 5.7.21: No Acceptable DKIM Signature Found
Enhanced Status Code 5.7.21 means “No Acceptable DKIM Signature Found.” The message carried DKIM signatures that verified correctly, and the receiver rejected them anyway because none met its policy. Passing is not the same as being acceptable.
550 5.7.21 No acceptable DKIM signature found: signing key does not meet policy requirements
What does 5.7.21 mean?
Enhanced status code 5.7.21 means no acceptable DKIM signature was found. RFC 7372 is precise about the difference from 5.7.20: here the message does contain one or more passing signatures, but none of them are acceptable to the receiver. Verification succeeded and policy still refused.
Acceptability is a local decision and receivers apply it differently. A signature may be rejected because the key is too short, and 1024-bit RSA keys are increasingly treated as weak where 2048 is expected. It may use a hash algorithm the receiver has retired, which is what happened to SHA-1. It may cover too little of the message, since a signature with a short l= body length tag leaves the remainder unprotected and can be exploited to append content. Or the signing domain may simply not be one the receiver is willing to accept for this mail.
This code is rarer than 5.7.20 but far more informative when it appears, because it tells you the mechanics are working and the problem is the quality of what you are signing with. It is usually fixed by rotating to a stronger key rather than by fixing DNS or signing configuration.
How 5.7.21 plays out
5.7.21 rejectionWhere 5.7.21 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.21 is | ✓ this code |
Common causes of 5.7.21
- The DKIM key is 1024-bit RSA where the receiver expects at least 2048
- The signature uses a hash algorithm the receiver has retired, such as SHA-1
- The signature carries an l= body length tag, leaving part of the message unprotected
- The signature omits headers the receiver requires to be covered, such as From or Subject
- The signing domain is not one the receiver accepts for this mail stream
- The key has been published for so long that the receiver treats it as stale
How to fix 5.7.21
- Rotate to a 2048-bit RSA key, or Ed25519 where both ends support it
- Sign with SHA-256 and stop offering SHA-1
- Remove the l= body length tag so the whole message body is covered
- Ensure the signature covers From, Subject, Date and To at minimum
- Rotate DKIM keys on a schedule rather than leaving one in place indefinitely
- Confirm the signing domain aligns with From so DMARC is satisfied as well