SPF, DKIM and DMARC explained (in plain English) | Scanthra

Scanthra · 7 min read · Updated May 2026

May 2026
TL;DR: SPF, DKIM and DMARC are three DNS records that tell receiving servers "this email really came from us, accept it" — and "if it didn't, reject it." Without them, your domain is trivially spoofable and your transactional emails land in spam. With them, both problems mostly go away.

The 30-second explanation

All three are DNS TXT records. You add them once and forget about them (until you change mailbox provider).

Why a small business should care

Two concrete consequences of missing SPF/DKIM/DMARC, both common:

Microsoft and Google now require SPF + DKIM + DMARC for bulk senders (since February 2024). If you send any volume of email — even transactional receipts from a WordPress shop — missing records will start hurting deliverability.

SPF — the allow-list

An SPF record looks like this:

yourdomain.com.  IN TXT  "v=spf1 include:_spf.google.com include:sendgrid.net ~all"

Three things to know:

Limit: 10 DNS lookups. Each include: counts. Stacking too many providers breaks SPF silently. If you hit the limit, use an SPF flattener like the one bundled with EasyDMARC, Postmark or Cloudflare.

DKIM — the signature

DKIM signs each outgoing message with a private key that lives on the mail server, and publishes the matching public key in DNS:

selector1._domainkey.yourdomain.com.  IN TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkq..."

Each provider has its own selector (selector1, google, k1, etc.). Follow your provider's instructions verbatim — they generate the exact value to paste. You can have multiple DKIM records, one per provider, side by side.

DMARC — your policy

A starter DMARC record:

_dmarc.yourdomain.com.  IN TXT  "v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; pct=100; adkim=s; aspf=s"

Key fields:

The safe rollout

  1. Add SPF and DKIM for every legitimate sender (your mailbox provider, transactional sender, marketing tool, helpdesk).
  2. Publish DMARC with p=none. Wait 2–4 weeks while reading aggregate reports.
  3. When all legitimate sources align (no "fail" lines from your own services), move to p=quarantine.
  4. After another 2–4 weeks of clean reports, move to p=reject.

This staged rollout is what every large enterprise does. Skipping straight to p=reject works — until the day Marketing buys a new tool and stops getting emails through. Then it's a fire drill.

Common mistakes

How Scanthra checks these

Our Email Security module does passive DNS lookups for SPF, DKIM (common selectors) and DMARC. We flag missing records, weak policies (p=none only after grace period), SPF lookup-count overflow and SPF records with ?all or +all. You'll see the exact gap in your PDF report.

Want to know if your site has this issue?

Scanthra runs a friendly, passive check and emails you a plain-English PDF report.

Scan your site free