Email Deliverability: DKIM, SPF & DMARC Made Simple

The no-jargon guide to keeping your messages out of spam and in the inbox.

Why Emails Go to Spam (and How to Fix It)

Spam filters are aggressive. They judge your domain reputation, IP reputation, content, past engagement, and—crucially—your authentication. If you don’t publish SPF/DKIM/DMARC, recipients can’t verify your mail really comes from you. That’s when legitimate messages start disappearing into junk folders.

SPF: Who’s Allowed to Send for Your Domain

SPF is a DNS TXT record that lists the servers/providers permitted to send mail on your domain’s behalf.

Example SPF (replace providers):
v=spf1 include:_spf.google.com include:sendgrid.net include:mailgun.org -all

DKIM: Cryptographic Proof the Message Wasn’t Altered

DKIM adds a signature to each email. The public key lives in DNS, typically as a selector-specific TXT record like selector1._domainkey.

Steps:
1) In your email provider, generate a DKIM key (selector + public key).
2) Add DNS TXT: selector1._domainkey.example.comv=DKIM1; k=rsa; p=PUBLICKEY...
3) Enable DKIM signing in the provider dashboard.

Use one DKIM record per sending service (each with its own selector). Rotating keys annually is good hygiene.

DMARC: Policy & Reporting

DMARC ties SPF and DKIM to your visible From: domain and tells receivers what to do when mail fails (none/quarantine/reject). It also enables reports so you can see who’s sending as you.

Start safe (monitor mode):
_dmarc.example.comv=DMARC1; p=none; rua=mailto:dmarc-reports@example.com; ruf=mailto:dmarc-forensics@example.com; adkim=s; aspf=s; pct=100

Optional: BIMI for Brand Logos

When DKIM/SPF/DMARC are solid and at enforcement, many providers support BIMI to display your logo beside messages.

BIMI TXT:
default._bimi.example.comv=BIMI1; l=https://example.com/logo.svg; a=https://example.com/vmc.pem

Common Gotchas

Step-by-Step Setup (15 Minutes)

  1. Create/verify your sending domain in your email platform (e.g., Google Workspace, Microsoft 365, SendGrid, Mailgun).
  2. Add their required DNS: SPF include, DKIM TXT, sometimes a bounce/return-path CNAME.
  3. Publish DMARC with p=none + rua to start reports.
  4. Send test emails to multiple inboxes (Gmail, Outlook, Yahoo). Check message headers: look for spf=pass, dkim=pass, dmarc=pass.
  5. After clean reports, raise to p=quarantinep=reject.

Troubleshooting Checklist

Related: How DNS Works · .htaccess Tricks · Security Checklist

Want better inbox placement?
We’ll configure DKIM/SPF/DMARC and monitor reports.