SPF, DKIM and DMARC are the three DNS records that prove your email is really from you, and in 2026 inbox providers quietly bin cold email that fails any of them. Get them right once and they mostly run themselves. Get them wrong and it does not matter how good your copy is, because most of it never reaches a human.
We run cold email at scale every day, and this is the single most common reason a campaign underperforms before a word of the message is even read. So let us walk through what each record does, how they work together, and how to set them up without a spec dump.
The one-sentence version of each
Three records, three different jobs. They are easy to confuse because they all touch email and all live in DNS, but each answers a distinct question a receiving server asks.
- SPF (Sender Policy Framework) answers: is this server allowed to send mail for this domain? It is a public list of the IPs and services permitted to send on your behalf.
- DKIM (DomainKeys Identified Mail) answers: was this message actually signed by the domain, and was it tampered with in transit? It attaches a cryptographic signature that the receiver verifies against a public key in your DNS.
- DMARC (Domain-based Message Authentication, Reporting and Conformance) answers: what should the receiver do if SPF and DKIM disagree with the visible From address, and where do I report it? It is the policy layer that ties the other two together.
That last point is the one people miss. SPF and DKIM each validate a domain, but not necessarily the domain your recipient sees in the From line. DMARC is what forces those to line up, which is called alignment, and alignment is the whole game.
How they actually work together
Picture a receiving mail server getting one of your messages. It runs three checks in sequence.
First it looks at the connecting IP and checks it against your SPF record. If the IP is on the list, SPF passes. Second it reads the DKIM signature in the header, fetches your public key from DNS, and confirms the signature matches and nothing was altered. If it does, DKIM passes.
Then DMARC does the important part. It checks whether the domain that passed SPF or DKIM matches the domain in the visible From address. You only need one of the two to pass and align. If neither aligns, the message fails DMARC, and your published policy tells the receiver whether to let it through, send it to spam, or reject it outright.
This is why you cannot cherry-pick. SPF alone can be defeated by forwarding. DKIM alone says nothing about who was allowed to send. DMARC on its own has nothing to enforce. Together they form a chain where each covers the others' blind spots, and inbox providers in 2026 increasingly expect to see all three before they trust a sending domain, especially a cold one with no prior reputation.
Setting up SPF correctly
SPF is a single TXT record on your sending domain. The mistakes we see are almost never syntax, they are scope.
- Publish exactly one SPF record. Two SPF records on the same domain is an automatic fail. If you use several sending services, merge them into one record with multiple
include:statements. - List every service that sends for you. Your email platform, your outreach tool, any transactional service. Anything missing will fail SPF from that source.
- Stay under the ten DNS-lookup limit. SPF caps the number of nested lookups, and each
include:can chain more. Go over and the whole record errors out. Flatten or consolidate services if you are near the edge. - End with
~allor-all. This tells receivers to treat mail from unlisted sources as suspicious (soft fail) or reject it (hard fail). Never use+all, which authorizes the entire internet to send as you.
SPF breaks silently. Nothing tells you it failed except your open rates quietly sliding, which is why DMARC reporting below matters so much.
Setting up DKIM correctly
DKIM is a public/private key pair. Your sending service holds the private key and signs each outgoing message; you publish the matching public key as a DNS record so receivers can verify it.
In practice you do not generate keys by hand. Your email or outreach platform generates them and gives you one or more DNS records to paste in, usually at a selector like s1._domainkey.yourdomain.com. Two things to get right:
- Use a 2048-bit key where your provider allows it. Older 1024-bit keys still verify but are weaker, and some receivers now discount them.
- Sign with the same domain your From address uses, or a subdomain of it, so DKIM aligns for DMARC. A signature that validates but points at your provider's domain instead of yours passes DKIM but fails alignment, which defeats the purpose.
Once published, DKIM is the most durable of the three because it survives most forwarding, which is exactly where SPF tends to fall over.