Deep Dive: How DKIM Works Behind the Scenes
Updated for 2025 | Author: MailFortifier.net Team
DKIM is a cornerstone of modern email authentication, yet it often lives in the shadows — misunderstood and misconfigured. If you’ve ever wondered how DomainKeys Identified Mail (DKIM) really works under the hood, this is your deep dive. Whether you’re an IT admin tuning your mail server or just want to understand why Gmail keeps flagging your messages, this guide is for you.
Jump to Section
- What is DKIM?
- How DKIM Works
- Public and Private Key Generation
- How Email Signing Happens
- How Email Verification Works
- Common DKIM Issues and Troubleshooting
- Best Practices for DKIM
- How DKIM Interacts with SPF and DMARC
- Advanced DKIM Concepts
- Frequently Asked Questions (FAQs)
What is DKIM?
DKIM (DomainKeys Identified Mail) is an email authentication standard that lets senders digitally sign emails so recipients can verify the messages weren’t altered in transit. It’s a public-key cryptography system that uses DNS records to publish the public part of the signing key.
Unlike SPF, which checks the envelope sender IP, DKIM validates the actual message body and headers for integrity. Think of DKIM as a cryptographic wax seal on your email.
How DKIM Works (Simplified)
Here’s a conceptual overview:
- Your mail server signs outgoing messages using a private key.
- The signature is attached to the message header (via the
DKIM-Signature
field). - The recipient’s server retrieves your domain’s public key from DNS and uses it to validate the signature.
- If the signature checks out, the message is considered authentic.
The magic lies in how hashes are generated and verified. This ensures nobody tampered with your message headers or body en route.
DKIM Key Generation and DNS Setup
DKIM uses a public/private key pair. You keep the private key on your mail server and publish the public key in DNS under a special selector:
default._domainkey.yourdomain.com TXT "v=DKIM1; k=rsa; p=MIGfMA0GC...IDAQAB"
To generate the keys, use:
openssl genrsa -out private.key 2048
openssl rsa -in private.key -pubout -out public.key
You can also use tools like:
Don’t forget to rotate keys every 6-12 months to avoid stale or compromised keys.
How Email Signing Happens
Your MTA (Mail Transfer Agent) adds a DKIM-Signature
header with hashed components of the email:
- h=: headers being signed (like From, Subject)
- bh=: body hash
- b=: the actual signature
Common signing software includes:
- OpenDKIM
- Dovecot’s DKIM plugin
- Modoboa and other mail suites
How DKIM Signature Verification Works
The recipient server uses the selector from the DKIM header (e.g., default._domainkey
) to find the public key via DNS. It then:
- Extracts and decodes the hash
- Recalculates the message hash locally
- Compares the calculated hash to the one in the signature
If they match, DKIM passes. If not, the message may be flagged, especially when combined with DMARC policies.
Common DKIM Issues and Troubleshooting
Even small misconfigurations can break DKIM. Here’s what to look for:
- DNS Propagation Issues: Use tools like Google Dig or MXToolbox to verify propagation.
- Wrong Line Breaks in DNS: Avoid adding extra spaces or wrapping the TXT record.
- Selector Mismatch: Ensure the selector in your DNS matches what your server is signing with.
- Incorrect Header Canonicalization: If your mailing software alters headers (e.g., by adding tracking pixels), you may need to use the “relaxed” mode.
- Expired or Revoked Keys: Rotate keys and remove unused selectors.
- Body Hash Did Not Verify: Could be due to added signatures, footers, or HTML formatting by downstream filters.
For in-depth analysis, use Mail-Tester or install our full deliverability audit on your domain.
Best Practices for DKIM
- Use 2048-bit RSA keys
- Rotate keys every 6-12 months
- Sign key headers: From, Subject, Date, Message-ID
- Use “relaxed/relaxed” canonicalization unless you’re very confident
- Check for accidental whitespace or line breaks in DNS
- Ensure third-party senders (e.g., Mailchimp, Gmail API, SES) are allowed to sign as your domain
How DKIM Interacts with SPF and DMARC
DKIM alone doesn’t prevent spoofing. But in combination with SPF and DMARC, it becomes powerful:
- SPF checks the sender IP
- DKIM checks the message content and origin
- DMARC ties the results together and tells recipients how to handle failure
To pass DMARC, either SPF or DKIM must pass with domain alignment.
Advanced DKIM Concepts
- Selector Rotation Automation with tools like OpenDKIM Key Table
- Elliptic Curve DKIM (currently experimental)
- ARC (Authenticated Received Chain) for mailing lists and forwarders
- Verification at MTAs vs MUAs — not all clients check DKIM signatures
Frequently Asked Questions (FAQs)
Can DKIM prevent phishing?Not alone. It verifies message integrity but not intent. Use it with DMARC to limit spoofing.
Why is my DKIM signature failing randomly?Often due to message modifications by mailing lists, footers, or poor DNS propagation. Check mail-tester and inspect the canonicalized message.
Should I use relaxed or simple canonicalization?Use “relaxed” for both headers and body unless you control every part of the email chain.
Does Gmail use DKIM?Yes, and it often requires it for passing their spam filters. Check DKIM results in Gmail’s “Show Original” option.
Conclusion
DKIM is more than a checkbox for deliverability — it’s a cryptographic handshake that protects your brand and your users. By understanding how it works behind the scenes, you can confidently configure and troubleshoot issues like a pro.
Need help? Check out our Complete Email Audit Service — or explore more free content on MailFortifier.net.