Blog · Dmarc

SPF, DKIM, and DMARC for Cold Email: A Simple Explanation

If you're sending cold email and someone told you to set up SPF, DKIM, and DMARC, you probably nodded and then Googled what those actually mean. You're not alone.

Here's the simple version, applied specifically to cold email.

SPF: Who is allowed to send for your domain

SPF (Sender Policy Framework) is a DNS record that lists every server allowed to send email for your domain.

When you send a cold email, the receiving mail server checks whether the server that sent it is on your SPF list. If it is, SPF passes. If it isn't, SPF fails.

For cold email, your SPF record needs to include the IP addresses of every service that sends as your domain, your email provider, your cold email tool, your CRM, anything that sends on your behalf.

If you skip this, your cold emails come from servers that aren't authorized, and receiving servers treat them as suspicious.

DKIM: Proof the email wasn't tampered with

DKIM (DomainKeys Identified Mail) is a cryptographic signature added to your outbound emails. Your sending server signs each message with a private key. The receiving server looks up the public key in your DNS and verifies the signature.

If the message was changed in transit, headers modified, content altered, the DKIM signature fails.

For cold email, DKIM proves your messages arrive intact and that they genuinely came from your infrastructure. Many major email providers factor DKIM into deliverability decisions.

DMARC: The policy that ties it together

DMARC (Domain-based Message Authentication, Reporting, and Conformance) does two things: it checks that SPF and DKIM are aligned with your From domain, and it tells receiving servers what to do with mail that fails.

The alignment part is important. A server can pass SPF and DKIM but fail DMARC if the domains don't match, for example, if your SPF passes for your email provider's domain but your From address is your own domain.

DMARC has three policy levels:

  • p=none: You get reports, nothing else changes
  • p=quarantine: Failing mail goes to spam
  • p=reject: Failing mail is bounced

For cold email senders, p=none while you're getting set up, then moving to p=quarantine once you're stable, is the practical path.

How they work together for cold email

When a cold email arrives at a recipient's server:

  1. The server checks whether the sending server's IP is in your SPF record
  2. The server verifies the DKIM signature using your public key in DNS
  3. The server checks whether the domains in SPF and DKIM match your From address
  4. Based on your DMARC policy, the server decides what to do with the message

All three passing means your cold email is authenticated and aligned. That doesn't guarantee inbox delivery, reputation, content, and sending practices still matter, but it means your emails clear the authentication layer.

Common cold email authentication mistakes

Using the same domain for personal and cold email. Your domain's reputation gets shared across all sending. A cold email campaign that generates complaints affects your transactional mail too.

Not including your cold email tool in SPF. If your cold outreach tool sends from IPs not in your SPF record, SPF fails.

Skipping DKIM entirely. Some cold email platforms don't enable DKIM signing by default. Without it, your emails have no tamper proof.

Going straight to p=reject without monitoring. If something is misaligned, p=reject bounces your cold email with no visibility into why.

Quick setup checklist for cold email domains

  1. List every service that sends email as your domain
  2. Add all their IP addresses to your SPF record
  3. Enable DKIM signing with each service and verify the DNS records appear
  4. Publish an initial DMARC record with p=none and an rua report destination
  5. Monitor reports for 2-4 weeks
  6. Identify and fix any failures
  7. Move to p=quarantine once pass rates are consistently high

A DMARC monitoring tool that reads your aggregate reports and alerts you to sudden changes in pass rates helps you catch problems before they crater your cold email deliverability.