DKIM
A 550 DKIM Verification Error permanently rejects mail because the DKIM signature failed. Fix the DNS record, signer config, or DMARC alignment to resolve.
Updated Jul 1, 2026
The short answer
"550 DKIM Verification Error" is a permanent SMTP rejection (RFC 5321 5xx) the receiving server returns because the message's DKIM signature did not pass verification (or no usable DKIM signature was present), so under the sender's or receiver's policy the mail is refused. Usual causes: a missing or malformed DKIM DNS record, the message body/headers being altered after signing, key/selector rotation that DNS doesn't reflect, or the DKIM d= domain not aligning with the From domain under DMARC. Fix the record, signer, or relay.
A 550 DKIM Verification Error (and its standardized variants 550 5.7.20, 550 5.7.21, 550 5.7.22) is a permanent rejection returned by the receiving mail server: it tried to verify the DKIM signature on your message and the verification did not pass (or no usable signature was found), so the message was refused rather than accepted or quarantined. The 550 class is a permanent negative completion reply per RFC 5321 §4.2.1 — retrying the same message unchanged will not help.
Note: "DKIM Verification Error" is not a single verbatim RFC reply string. Different MTAs phrase it differently. The standardized enhanced codes are
X.7.20"No passing DKIM signature found",X.7.21"No acceptable DKIM signature found" (one or more signatures passed, but none are acceptable), andX.7.22"No valid author-matched DKIM signature found" (none of the passing signatures match theFrom:author domain), all with a basic code of550per RFC 7372 §3.1. A related but broader code,550 5.7.26, is what Gmail (and other large receivers) return for "unauthenticated email ... not accepted due to [the domain's] DMARC policy" — it signals that the message failed more than one authentication check (RFC 7372 §3.4 callsX.7.26"Multiple authentication checks failed"), typically meaning neither SPF nor DKIM produced an aligned pass, rather than a single DKIM signature problem.
DKIM (RFC 6376) signs selected headers and the body of your message with a private key and publishes the matching public key in DNS at selector._domainkey.yourdomain. Verification fails — and a stricter receiver returns 550 — for these distinct reasons:
selector._domainkey TXT record is absent, was deleted, has a broken/split p= value, or contains a typo. The verifier does a DNS lookup, can't retrieve a usable key, and fails the check.bh=) or signature (b=) no longer matches, so the signature is invalid even though the key is fine. This is the single most common real-world cause.d=) does not align with the From: header domain and the published DMARC policy is p=reject. This is the X.7.22 case; when both SPF and DKIM fail to align, large receivers such as Gmail return 550 5.7.26.Read the bounce first — the enhanced code tells you which branch you're in (5.7.20/5.7.21 = signature didn't pass; 5.7.22 = DKIM didn't align to the From domain; 5.7.26 = the message failed more than one auth check and was refused under DMARC).
DKIM-Signature header of a sent message and note the s= (selector) and d= (domain) tags.dig TXT selector._domainkey.yourdomain.com +short
You should get back a single logical TXT record containing v=DKIM1; k=rsa; p=<base64 key>. If it's empty, split incorrectly across quoted strings, or p= is truncated, republish it exactly as your ESP/provider specifies.
check-auth@ mailbox or your provider's DKIM tester) and read the Authentication-Results header. dkim=pass confirms the key and signer are correct; dkim=fail with body hash did not verify points to message modification.5.7.22, or 5.7.26 where DMARC refused unauthenticated mail), make the DKIM d= domain align with your visible From: domain (a subdomain like mail.yourdomain.com satisfies DMARC relaxed alignment; an unrelated ESP domain does not). Verify your DMARC record at _dmarc.yourdomain.com.If you send through Courier, configure DKIM on the underlying email provider you've connected (e.g., SendGrid, Amazon SES, Mailgun, Postmark) and publish that provider's DKIM/CNAME records on your domain — the receiver verifies against the provider's signature, so the records must match what that integration signs with.
References
FAQ
550 is an official permanent-failure reply class per RFC 5321, but the exact phrase "DKIM Verification Error" is MTA-specific wording. The standardized enhanced codes are RFC 7372's X.7.20, X.7.21, and X.7.22 (all basic code 550); Microsoft 365 uses 550 5.7.26.
One API, every provider
Courier connects to your email, SMS, and push providers, handles retries and failover, and surfaces delivery errors in plain language.
Reply-code definitions per RFC 7372 §3.1 (X.7.20–X.7.22), §3.4 (X.7.26); RFC 6376; RFC 9989 (obsoletes RFC 7489). Last reviewed Jul 1, 2026. Courier is not affiliated with third-party providers; error behavior may vary by implementation.
© 2026 Courier. All rights reserved.