Bounces and errors

Why Does DKIM Fail, and How Do I Fix It?

Outreach2dayPublished 2 min read
On this page

Short answer

DKIM fails when the receiver cannot verify the signature: the public key is not published at the selector the email names, the key record is malformed, or the message changed after it was signed. Read the reason in the Authentication-Results header, check the selector's DNS record, and make sure nothing rewrites the email after your sending tool signs it.

How DKIM is checked

The sending server signs selected headers and a hash of the body with a private key, and adds a DKIM-Signature header with the domain (d=) and the selector (s=). The receiver fetches the public key from s._domainkey.d in DNS and checks both hashes (RFC 6376). Anything that breaks one of those steps fails DKIM.

What the result says

The receiver writes its verdict into Authentication-Results (RFC 8601):

Result

Meaning

Usual cause

dkim=none

No signature

Signing is off in the sending tool

dkim=fail (no key for signature)

Nothing at the selector

Key not published, wrong selector, wrong domain

dkim=fail (body hash did not verify)

The body changed after signing

A footer added on the way, a mailing list or re-encoding

dkim=fail (signature did not verify)

A signed header changed, or the key does not match

Key replaced in DNS and the tool still signs with the old one, or the reverse

dkim=neutral or permerror

The key record cannot be used

Broken TXT record: missing p=, extra quotes, a key split wrongly

dkim=temperror

DNS did not answer

Retry; check the DNS host

dkim=pass header.d=sendtool.com

Valid, but for another domain

Passes DKIM and still fails DMARC

Gmail turns a missing pass into bounces for bulk senders: 421 4.7.30 and 550 5.7.30 "didn't pass DKIM authentication", and 550 5.7.26 when SPF failed too. The email bounce decoder identifies them from the bounce text.

Fixes by cause

  1. No key for signature. Look up the selector from the s= tag with the DKIM checker. If nothing is there, publish the TXT (or CNAME) record your sending tool shows, exactly as given, at selector._domainkey.yourdomain.com. New records can take up to a day or two to be visible everywhere.

  2. Broken key record. A 2048-bit key is longer than 255 characters, so DNS stores it as several strings in one TXT record. Some DNS panels add quotes or line breaks; paste the value as the panel's help describes, then check it again.

  3. Body hash did not verify. Something edited the email after it was signed: a disclaimer added by an outbound relay, a mailing list that adds a footer, or a server that re-encodes the body. Send a test straight from the mailbox to a Gmail address and compare with a copy that went through the relay.

  4. Key mismatch. After rotating keys, the tool must sign with the new private key and DNS must publish the matching public key. Keep the old selector published until mail signed with it has been delivered.

  5. Signed for the wrong domain. Turn on custom DKIM so d= is your domain; a signature from the tool's domain does not help DMARC.

Free guide19 min read

Send 100,000 cold emails a month

Domains and mailboxes you need, DNS, warmup, lists, copy and follow-ups, with a launch checklist, sent to your inbox.

Unsubscribe in one click.

Check it end to end

Send a test to a Gmail address, open Show original and look for dkim=pass header.d=yourdomain.com. The email header analyzer reads the result, the selector and the alignment with From in one pass. How to test SPF, DKIM and DMARC has the manual checks.

What we recommend at Outreach2day

Every domain we set up gets a 2048-bit DKIM key published on the domain and every mailbox signs with it, so the signature aligns with the From address. If you move a domain between providers, publish the new provider's key before you switch sending.

Sources

Deliverability call

Talk to our deliverability team

Book a call with the people who run our mailbox infrastructure. We look at your current setup and tell you what to change.

  • Review your domains, DNS records and current inbox placement
  • Size the setup: domains, mailboxes per domain and daily volume per mailbox
  • Plan warmup and the move from your current provider or sequencer

Free call

See open times in your time zone and book on this page.

Or open the booking page

See deliverability issues before they kill performance

Check each mailbox's daily inbox, spam and bounce rate, replace the weak ones early, and keep warmup, protection, and sending in one place.