ColdOps
All posts
Deliverability

SPF, DKIM & DMARC for cold email: the 15-minute setup

By Mo Charradi, Founder8 min read

If you send cold email in 2026 without SPF, DKIM, and DMARC, you are filtered by default — not as a penalty, but because Google and Yahoo now require all three for bulk senders. A correct SPF, DKIM, and DMARC setup for cold email takes about fifteen minutes per domain, and once it's right you rarely touch it again. This is the exact setup, what each record actually does, and how to confirm it's working.

First, a rule that saves domains: never send cold email from your primary business domain. Buy separate sending domains, authenticate each one, and keep your main domain's reputation untouched. Everything below applies per sending domain.

What each record does (in plain terms)

Think of the three as answering three different questions a mailbox provider asks about your message.

RecordQuestion it answersLives in
SPF"Is this server allowed to send for this domain?"A DNS TXT record
DKIM"Was this message actually signed by the domain, unaltered?"A DNS TXT record + a signature on each email
DMARC"What should I do if SPF or DKIM fail — and where do I report it?"A DNS TXT record

They stack. SPF and DKIM each prove a piece; DMARC ties them to your visible From address (this is alignment) and tells receivers how strict to be. Miss one and the chain is incomplete.

1. SPF — authorize your senders (5 min)

SPF is a single TXT record at your domain root listing who can send for you. Your sending platform (Google Workspace, Microsoft 365, or your cold email tool's infrastructure) publishes an include you add.

A typical record:

v=spf1 include:_spf.google.com ~all

Three things people get wrong:

  • One SPF record only. Multiple v=spf1 records break SPF entirely. Merge all your senders' include: statements into one.
  • Stay under 10 DNS lookups. Each include costs lookups; too many and SPF returns permerror and fails. Flatten if you're near the limit.
  • Use ~all (softfail) or -all (hardfail), not +all. -all is stricter; ~all is safer while you're still adding senders.

2. DKIM — sign your mail (5 min)

DKIM gives your domain a private/public key pair. Your sending server signs each message with the private key; you publish the public key as a DNS TXT record at a selector subdomain like google._domainkey.yourdomain.com. Receivers verify the signature matches.

You don't hand-write DKIM — your provider generates the key and gives you the exact record to paste. The one thing that matters for cold email is alignment: the domain in the DKIM signature (d=) should match your From domain. If you send from you@yourdomain.com but DKIM signs for mail.provider.com, DKIM passes but DMARC alignment fails — and you quietly lose deliverability. Always use a DKIM record on your own domain, not the provider's shared one.

3. DMARC — tie it together (5 min)

DMARC is a TXT record at _dmarc.yourdomain.com. Start in monitor mode:

v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
  • p=none — take no action, just report. This satisfies the Google/Yahoo requirement and lets you watch for two weeks without risking delivery.
  • rua= — where aggregate reports go. Read them: they tell you whether SPF and DKIM are actually passing and aligned in the wild.
  • Once reports confirm both pass and align, move to p=quarantine to protect the domain from spoofing.

Do not jump straight to p=reject before your reports are clean — you can bounce your own legitimate mail. If you're unsure when to move from p=none to p=quarantine, DMARC policy: none vs quarantine walks through the decision with specific checks to run first.

The 15-minute setup checklist

Per sending domain:

  1. SPF: one TXT record at the root with your sender's include, ending ~all. No duplicates.
  2. DKIM: provider-generated key published at the selector; d= aligned to your From domain.
  3. DMARC: TXT at _dmarc, start p=none with a rua= mailbox you'll actually check.
  4. Wait for DNS to propagate (minutes to a few hours).
  5. Verify — don't assume. Send a test to a Gmail account, open "Show original," and confirm SPF, DKIM, and DMARC each say PASS.
  6. After ~2 weeks of clean reports, tighten DMARC to p=quarantine.

Skip the manual header-reading: run each sending domain through the free deliverability checker — it confirms SPF, DKIM, and DMARC are present and aligned, plus flags blacklist status and domain age in one pass.

Authentication is the floor, not the ceiling

Getting all three to PASS is the price of entry — it gets you past the first gate. It does not, on its own, put you in the inbox. As we covered in why cold emails go to spam, reputation, warmup, content, and volume decide the rest. Authenticated mail from a cold, unwarmed domain still lands in spam.

And the next hurdle is specific: beyond auth, Google and Yahoo have explicit sender requirements — complaint-rate ceilings, one-click unsubscribe, and more — that cold senders have to meet. Auth first, then those.

The operational catch: DNS records drift. A provider migration, a well-meaning edit, an expired key — any of these silently breaks alignment, and you won't know until your reply rate craters. If you run more than one domain, that risk multiplies. ColdOps watches authentication and deliverability signals across every sending domain in your Instantly, Smartlead, and EmailBison workspaces and alerts you the moment one breaks — so a broken SPF record is a two-minute fix, not a lost week.

Set the three records, verify PASS, then run the domain through the free checker to confirm. Fifteen minutes now saves you the worst kind of problem later — the silent one.

Frequently asked

Do I need SPF, DKIM, and DMARC for cold email?
Yes — all three. Since February 2024, Google and Yahoo require SPF, DKIM, and DMARC for bulk senders, and cold outreach is treated as bulk. Missing any one means a growing share of your mail is filtered or rejected.
What DMARC policy should I use for cold email?
Start at p=none to monitor without affecting delivery, confirm SPF and DKIM are passing and aligned via the reports, then move to p=quarantine. p=none is enough to satisfy the Google/Yahoo requirement; the stricter policies protect your domain from spoofing.
Why is my email authenticated but still going to spam?
Authentication is necessary but not sufficient. Passing SPF/DKIM/DMARC gets you past the first gate; reputation, warmup, content, and volume decide the rest. If auth passes and you still spam, the cause is downstream.
Should I set up auth on my main domain or a separate sending domain?
Use separate sending domains for cold email, never your primary business domain. That way a deliverability problem never touches your main domain's reputation. Set up SPF, DKIM, and DMARC on each sending domain.

Keep reading