Email Deliverability · June 11, 2026 · Updated July 28, 2026 · 7 min read
SPF, DKIM, and DMARC Explained for B2B Marketing Teams
By Vaibhav Thakur
The short answer: SPF authorizes sending infrastructure for an envelope-sender domain, DKIM signs selected message content with a domain, and DMARC checks whether the visible From domain aligns with a passing SPF or DKIM identity. Configure all three, monitor DMARC reports, and tighten policy only after legitimate senders align.
Your sales team spent two weeks on a nurture sequence. The copy is clean, the offer is relevant, the list is scrubbed. Open rates crawl at 9%. Replies are ghosts. You check the email account of someone who clicked "this is spam" and notice the message landed in junk. The campaign died, but the campaign wasn't the problem. The domain was.
If you have ever opened a Mailchimp or HubSpot deliverability report and seen the line "SPF or DKIM authentication failed," this article is for you. SPF, DKIM, and DMARC are the three DNS records mailbox providers use to decide whether an email from your domain is actually from you. Get them wrong, and the rest of your marketing — the list, the copy, the offer — never gets a fair read.
We will keep this in operator language, not RFC lawyer language. No deep protocol history, no DNS theory, no reference to RFC 5321. Just what each record does, what breaks when it is missing or wrong, and the exact order to fix it in.
What SPF actually does (and the one mistake every growing B2B team makes)
SPF stands for Sender Policy Framework. It is a TXT record on your sending domain that lists the IP addresses and hosts allowed to send email on your behalf.
When a receiving server gets a message, SPF checks whether the connecting server is authorized for the SMTP envelope-sender domain. That identity can differ from the address a person sees in the From header; DMARC is what evaluates alignment with the visible From domain.
A recurring mistake in our audit work is that the SPF record reflects the original email platform but not the current sending stack.
The team adds HubSpot Marketing. New record. They add Outreach or Salesloft for SDR cadences. New record. They add a transactional sender like Postmark or SendGrid for product emails. New record. They add a new SDR's cold outbound tool. New record. None of the old ones get removed. Eventually the policy can cross the 10 DNS-lookup limit defined by RFC 7208, producing an SPF permanent error. Keep exactly one SPF record per sending domain and test it after every vendor change.
The fix is not to keep adding strings. The fix is to consolidate. Move every sending tool behind one of two well-managed envelopes:
- One subdomain for marketing and lifecycle (e.g.
mail.yourcompany.comorgo.yourcompany.com) - One subdomain for transactional and product emails (e.g.
notify.yourcompany.com)
Then write a clean SPF record for the apex domain and separate, simpler records for each subdomain. If you want to see this in context of an actual deliverability audit, the walkthrough in Mailchimp Emails Going to Spam? Start With This Deliverability Audit follows the same pattern from a different angle.
What DKIM actually verifies (it is not just "signed email")
DKIM stands for DomainKeys Identified Mail. Where SPF checks the envelope sender, DKIM checks the message itself.
When your sending platform transmits an email, it attaches a cryptographic signature to the message headers. That signature is generated using a private key stored on the sending server. The matching public key is published as a TXT record in your DNS under a specific selector name (something like s1._domainkey.yourcompany.com).
When the receiving server gets the message, it pulls your public DKIM key, verifies the signature against the message body and a defined set of headers, and decides: "Has this message been tampered with since it was signed? Was it signed by the right domain?"
If the signature checks out, DKIM passes. If the message was modified in transit (sometimes by a forwarding rule, sometimes by a buggy CRM appending tracking links), the signature breaks and DKIM fails.
Two things B2B teams get wrong here:
- They rotate ESPs and never publish the new DKIM key. The old key sits in DNS, the new platform signs with a different selector, and nothing aligns.
- They assume any DKIM pass is enough. For DMARC, the signing domain must also align with the visible From domain. Check the actual message headers instead of relying only on a green setup screen.
The fix is boring but specific: confirm each sending tool is publishing its own DKIM selector, then verify in a tool like MXToolbox or your ESP's free inspector that the signature is actually aligning with your From: domain. If you are running cold outbound at the same time, a signed domain for that subdomain is non-negotiable — see how this plays out in Why Meta Lead Ads Bring Bad Leads and How to Fix the Funnel for the upstream volume problem, then come back to authentication for the downstream fix.
What DMARC actually does (and why it is the most underused record)
DMARC stands for Domain-based Message Authentication, Reporting, and Conformance. It ties SPF and DKIM together and tells receivers what to do when messages fail.
A DMARC record is a single TXT record published at _dmarc.yourcompany.com. It does three jobs:
- Alignment check. It defines which domain has to match between the visible
From:header and the authenticated SPF/DKIM domain. By default, this isrelaxed(subdomains count) orstrict(must match exactly). - Policy. It tells the receiver what to do with messages that fail.
p=nonemeans "report only, deliver anyway."p=quarantinemeans "send to spam."p=rejectmeans "block entirely." - Reporting. It can tell receivers where to send aggregate reports (RUA) and optional failure reports (RUF), although report support varies.
Most B2B teams we audit have p=none or no DMARC record at all. That is a missed opportunity. With p=none and reporting enabled, you can see exactly which services are impersonating your domain — your HR system, your CRM, your old newsletter tool that no one remembers. With reporting, you can clean up the legitimate senders and tighten policy to p=quarantine, then eventually p=reject.
An enforcement policy such as p=reject is a common mature state, but only after reports show that legitimate mail is aligned. Moving too early can reject real business email.
The order to ship these in (and what to verify at each step)
Do not move directly to an enforcement policy without an inventory and monitoring period. You can publish SPF, DKIM, and p=none DMARC in the same foundation phase, then validate each mail stream before tightening DMARC.
Step 1 — Inventory every service that sends as your domain. Marketing automation, transactional email, SDR tools, calendar systems, HR platforms, finance tools, the CEO's personal CRM, the agency you fired in 2022. If you are already doing list hygiene or CRM cleanup, the muscle is the same — you cannot fix what you have not mapped. How to Segment a Messy CRM Into a Revenue-Ready Database walks that mindset for the contact layer; treat the sending layer the same way.
Step 2 — Consolidate senders onto subdomains. Marketing on one, transactional on one, cold outbound on a third. Each gets its own clean SPF and DKIM.
Step 3 — Verify SPF and DKIM pass independently for every sender. Use MXToolbox, your ESP's built-in checker, or a paid tool like Valimail or dmarcian. Fix every fail before moving on.
Step 4 — Publish a DMARC record with `p=none` and enable aggregate reporting. Read the reports weekly for 2–4 weeks. Identify unknown senders. Get them authenticated or get them off your domain.
Step 5 — Move DMARC to `p=quarantine`, then to `p=reject` once reporting shows clean. Expect a 2–3 week monitoring cycle at each stage.
Throughout this process, watch delivery and complaint data alongside engagement. An illustrative improvement from 70% to 90% inbox placement would point upstream, but your own seed tests and provider data must supply the real values. If placement is healthy and response remains weak, inspect the list, offer, timing, and message. Lead Scoring for Small B2B Teams: How to Focus on the Leads That Actually Convert is what to read once you have confirmed delivery is healthy and you want to fix the next layer.
Sources worth checking
If you are making DNS changes, use your sending platform's exact instructions first, then cross-check the fundamentals against primary references:
- Google Workspace SPF setup guide
- Gmail email sender guidelines
- RFC 7208: Sender Policy Framework
- RFC 6376: DomainKeys Identified Mail
- RFC 7489: DMARC
What changes when these are right
Correct authentication makes legitimate mail verifiable and removes one class of delivery failure. It does not guarantee inbox placement, opens, or replies; reputation, consent, list quality, complaints, and content still matter.
If your team sends through a CRM, newsletter platform, transactional service, and sales tools, every legitimate stream should authenticate and align. That foundation is usually DNS work plus provider configuration; it should be verified in real message headers.
Authentication is the first objective check in our deliverability reviews. If you want us to inspect SPF, DKIM, DMARC, sending-domain alignment, and inbox-placement evidence, request a free growth audit and we will show you what to ship first.