What SPF, DKIM, and DMARC Mean
You have probably seen these three abbreviations treated as a checklist. Set them up, check the boxes, move on. That framing is mostly right - but it hides some critical nuance that quietly kills cold email campaigns even when all three pass.
Start with the definitions. Then we will get to the part that matters for inbox placement.
SPF - Sender Policy Framework
SPF is a DNS record that lists which servers are allowed to send email on behalf of your domain. When a receiving mail server gets your email, it checks your SPF record and asks: is the server that sent this message on the approved list?
If yes, SPF passes. If no, SPF fails. Simple concept. Tricky in practice - and we will cover why shortly.
A basic SPF record for Google Workspace looks like this:
v=spf1 include:_spf.google.com ~all
The ~all at the end means soft fail - emails from unlisted servers are marked suspicious but still delivered. The -all variant means hard fail - unlisted servers get rejected outright. Most cold email setups start with ~all during warmup and move to -all once everything is confirmed.
DKIM - DomainKeys Identified Mail
DKIM adds a cryptographic signature to every email you send. Think of it as a tamper seal. When the email arrives, the receiving server checks the signature against a public key stored in your DNS records. If the signature matches, the message is confirmed to be exactly what you sent.
If someone intercepted and altered the email in transit, the signature breaks and DKIM fails. This is why DKIM is the tamper-detection layer of email authentication, while SPF is the identity layer.
DKIM records are published at a specific subdomain like:
selector._domainkey.yourdomain.com
The selector is just a label - usually assigned by your email provider. Google Workspace, Microsoft 365, and most major platforms generate the DKIM key pair for you and tell you exactly what to paste into your DNS.
One important spec: use a 2048-bit key rather than the older 1024-bit standard. It is more secure and better supported by modern inbox providers.
DMARC - Domain-based Message Authentication, Reporting, and Conformance
DMARC is the policy layer that sits on top of SPF and DKIM. It tells receiving mail servers what to do when an email fails one or both of those checks. The three options are:
- p=none - Do nothing. Just send me reports about failures.
- p=quarantine - Send failing emails to the spam folder.
- p=reject - Block failing emails entirely.
DMARC also introduces the concept of alignment. For DMARC to pass, the domain in the SPF check or the DKIM signature must match the domain in the visible From address the recipient sees. This closes a significant loophole that SPF and DKIM alone leave open.
DMARC reports get sent to an email address you specify in the record. They show you which servers are sending on your domain behalf, how many emails are passing or failing authentication, and whether anyone is spoofing you. Most people set up DMARC and never check these reports, which is a waste of genuinely useful data.
Why Passing All Three Does Not Guarantee Inbox Placement
Here is where senders consistently get it wrong.
Authentication tells inbox providers who you are. Inbox providers use authentication as a baseline gate, not a ranking signal.
A domain that passes SPF, DKIM, and DMARC but sends to purchased lists with a 5% spam complaint rate will still land in spam. Reputation signals determine placement, not authentication status.
One case documented in a cold email practitioner thread makes this concrete. A sender had all three records correctly configured and verified. Their spam rate was still running at 47%. The root diagnosis was domain age and warmup timing, not authentication. The conclusion from practitioners who have seen hundreds of these setups: correctly configured and passing records prove authentication, they do not significantly influence inbox placement on their own. Mailbox providers prioritize reputation and behavioral signals above all else.
Find Your Next Customers
Search millions of B2B contacts by title, industry, and location. Export to CSV in one click.
Try ScraperCity FreeThis distinction matters because a lot of cold email advice treats authentication as the finish line. It is the starting line.
Authentication is the entry requirement. Warmup, low send volumes per mailbox, and real personalization are what keep you out of spam.
The Three-Stage DMARC Journey
I see it constantly - guides telling you to set DMARC to p=none and leave it there. That is dangerous advice.
p=none is monitoring mode. You get reports. Nothing happens to failing emails. It is useful for about two to four weeks - long enough to confirm your legitimate mail is all passing before you tighten enforcement.
The problem: a significant portion of domains with DMARC published never advance past p=none. According to Valimail benchmark data, 75 to 80% of domains with DMARC records never reach enforcement. They are monitoring failures indefinitely and not protecting anything. Anyone can spoof those domains freely.
The correct progression looks like this:
- p=none - publish this on day one. Monitor reports for two to four weeks.
- p=quarantine - move here once DMARC reports confirm your legitimate mail is passing. Failing emails go to spam instead of sailing through.
- p=reject - the full enforcement stage. Unauthenticated emails using your domain are blocked entirely.
For cold email specifically, the sequence ties directly to your warmup timeline. Set SPF and DKIM first. Wait 48 hours for DNS propagation. Add DMARC at p=none. Start your warmup. After two to four weeks of clean DMARC reports, move to p=quarantine. After another 30 days of confirmed passes across your sending infrastructure, move to p=reject.
Rushing this process is how senders get burned. Moving to p=reject before confirming all your sending services are passing will block your own legitimate email.
SPF Hidden 10-Lookup Limit
This is the most commonly overlooked SPF gotcha in cold email, and it breaks deliverability silently.
The SPF specification enforces a hard limit of 10 DNS lookups per SPF evaluation. Every include, a, mx, ptr, or redirect mechanism in your SPF record counts toward that limit. Cross it and receiving servers return a PermError - a permanent SPF failure that DMARC treats as a fail.
Here is the problem: the limit was set when businesses used far fewer email services. Today, a typical company using Google Workspace, a CRM like Salesforce or HubSpot, a marketing platform like Mailchimp, and a transactional email service can hit the limit just from routine setup. Add a new tool, cross the threshold, and your SPF fails - without any obvious error on your end.
Operators running multi-domain cold email infrastructure at scale hit this constantly. The sequence looks like this: you add Google Workspace (1 lookup), add your cold email sending tool (2 lookups), add a CRM that sends email notifications (3 to 4 lookups), add a transactional service (5 to 6 lookups). Now you are already more than halfway to the limit with just four services. Add nested includes from those services and you can cross 10 without knowing it.
When an SPF PermError occurs, DMARC treats SPF as a fail. If DKIM is also not configured properly across all your services, your entire authentication setup breaks - even though everything looks correctly configured when you check it manually.
The fix options are:
- Audit and prune: Remove unused services from your SPF record. Retire dormant includes. This alone often brings you under the limit.
- Subdomain delegation: Move certain senders to subdomains with their own SPF records. Adds management overhead but works.
- IP substitution: Replace domain-based includes with direct IP ranges for static senders. Reduces lookup count but requires manual maintenance when providers update their IP ranges.
The practical takeaway for cold email operators: any time you add a new tool to your stack that sends email, check your SPF lookup count. MXToolbox and several other free tools will run this check for you in seconds.
Want 1-on-1 Marketing Guidance?
Work directly with operators who have built and sold multiple businesses.
Learn About Galadon GoldHow Forwarding Breaks DKIM
DKIM is designed to be tamper-resistant. That same property is why forwarding can break it.
When an email is forwarded, the forwarding server sometimes adds a footer, modifies headers, or rewrites parts of the message. Any modification to the email body or signed headers after the DKIM signature was applied invalidates the signature. The receiving server checks the signature against the now-altered content, finds a mismatch, and DKIM fails.
SPF has the same vulnerability with forwarding, for a different reason. SPF validates the sending server IP address. When a message passes through an intermediary server on the way to its final destination, the connecting IP is the forwarding server IP, not your original server. Your SPF record does not authorize that IP, so SPF fails.
The practical takeaway: DMARC only requires that either SPF or DKIM pass with alignment, not both. This is why having both set up gives you a safety net. If forwarding breaks SPF, DKIM can still carry DMARC. If something breaks DKIM, SPF can still pass. Running only one or the other removes that redundancy.
The forwards that look fine on paper can be silently breaking DKIM downstream.
The Exact Setup Order for Cold Email
The order you set these up in matters. Here is what works:
- Set up SPF first. Authorize every service that sends on your domain in a single SPF record. Keep the lookup count under 10. End with ~all for now.
- Set up DKIM. Generate the key pair from your email platform dashboard. Publish the public key as a TXT record. Enable DKIM signing in your platform. Use a 2048-bit key.
- DNS propagation takes time. Wait 48 hours. Do not add DMARC yet.
- Add DMARC at p=none. Include an rua tag pointing to an email address where reports will be delivered. Example: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
- Start warmup. Run inbox warming for four to six weeks at low send volumes. Cap cold email sends at 50 per inbox per day early on.
- Check your DMARC reports. Look for any legitimate sends that are failing. Fix them before moving to enforcement.
- Move to p=quarantine once reports confirm your mail is passing consistently.
- Move to p=reject after another 30 days of clean data. This is full enforcement.
One operator running a multi-domain cold email agency documented this setup process across 15 sending domains. The initial DNS configuration takes roughly 30 minutes per domain. The warmup and DMARC monitoring stage is where most time is invested - but skipping it is how domains get burned before they ever send a real campaign.
The same operator capped inboxes at two to three per domain at scale. That structure reduces per-domain send volume and protects domain reputation even if one inbox accumulates spam complaints.
Verifying Your Setup
Do not trust that your records are correct just because you added them. Verify.
The fastest method: send a test email from your cold email domain to a Gmail account. In Gmail, open the email and click the three-dot menu, then select Show original. You should see SPF: PASS, DKIM: PASS, and DMARC: PASS in the authentication results section. If any of those show FAIL or NEUTRAL, something is wrong.
For deeper inspection, MXToolbox is the standard free tool for checking SPF records, DKIM records, and DMARC records independently. It will also flag the 10-lookup problem if your SPF is over the limit.
Gmail Postmaster Tools is the other one worth setting up. It gives you ongoing visibility into your domain reputation, spam rate, and authentication pass rates over time. Keep your spam complaint rate below 0.3%. That is Gmail threshold for routing mail to spam at scale.
Find Your Next Customers
Search millions of B2B contacts by title, industry, and location. Export to CSV in one click.
Try ScraperCity FreeMicrosoft Outlook Is the Hardest Provider to Crack
I see this constantly - cold email deliverability advice focusing on Gmail because that is where most prospects are. But if you are selling into enterprise accounts, a significant portion of your list is on Microsoft Outlook or Exchange.
Outlook spam rate in current deliverability benchmarks sits at 14.6% compared to Gmail 6.8%. That is more than double the spam routing rate for the same sends. According to Validity deliverability benchmark data, authentication plus IP warmup together makes inbox providers roughly 20% more likely to deliver to the inbox. But even with that improvement, Microsoft remains the toughest consistent challenge for cold email operators.
The practical implication: if your list skews toward enterprise accounts with Outlook, your authentication setup matters even more. You need to be especially careful about DMARC enforcement timing. Microsoft is less forgiving of partial configurations than Gmail.
What Happens When You Skip Each Record
Skip SPF and Gmail and Outlook cannot verify that your sending service is authorized to send on behalf of your domain. The result is emails that go to spam or get rejected before delivery.
Skip DKIM and your emails carry no tamper-detection signature. Receiving servers cannot verify the message was not altered in transit. Some providers add visible spam warnings to unsigned messages. Trust score drops.
Skip DMARC and you have told mailbox providers nothing about how to handle emails that fail SPF or DKIM. You get no reporting, no protection against domain spoofing, and inconsistent delivery behavior across providers.
Skip all three and you are starting every campaign at a significant disadvantage before a single word of copy is evaluated.
BIMI - The Fourth Record You Unlock at p=reject
Once you reach DMARC p=reject, you become eligible for BIMI - Brand Indicators for Message Identification.
BIMI is a DNS record that displays your verified brand logo next to your emails in supported inboxes. Gmail, Yahoo, and Apple Mail all support it. The logo shows up in the inbox before the recipient even opens the email.
BIMI requires DMARC enforcement. A p=none policy is not sufficient. Your domain needs DMARC set to p=quarantine or p=reject with pct=100 before BIMI will work.
For Gmail specifically, BIMI also requires a Verified Mark Certificate or Common Mark Certificate - a third-party verification of your logo tied to your domain. Verified Mark Certificates require a registered trademark. Common Mark Certificates require proof that your logo has been publicly associated with your domain for at least 12 months. Both carry an annual cost.
Yahoo and some other providers display BIMI logos without requiring a certificate, which means free logo display is available to anyone who completes the DMARC enforcement stage.
The practical benefit for cold email is a side effect. BIMI works for brand-level email. But completing the DMARC enforcement journey to unlock BIMI eligibility means your authentication setup is as strong as it can be - and that underlying strength affects how inbox providers treat your sending domains across all your sends.
Cold Email Infrastructure at Scale
Single-domain setups are straightforward. Scale creates complexity.
When you're running high-volume cold email campaigns, you end up working with multiple sending domains to spread volume and protect against domain burnout. Each domain needs its own SPF, DKIM, and DMARC records configured correctly. Each domain goes through its own warmup phase. Each domain requires its own DMARC monitoring before moving to enforcement.
The infrastructure math becomes significant. At 15 domains with two to three inboxes each, you are managing 30 to 45 inboxes, each with its own warmup timeline. One agency running this structure documented spending roughly $300 in domain and inbox setup costs per batch, with ongoing monthly costs for the sending platform and inbox management layered on top.
At that scale, SPF lookup errors, missed DMARC progressions, or DKIM misconfigurations on even a few domains can quietly tank deliverability across the whole operation before anyone notices. Verification on every domain, run consistently, is the operational discipline that keeps campaigns alive at volume.
The contact list side of the operation matters just as much. High bounce rates from bad data spike your complaint rate and undo everything your authentication setup built. If you are building contact lists for a multi-domain outbound operation, Try ScraperCity free - it lets you build targeted B2B contact lists by title, industry, location, and company size, and includes email verification to keep bounce rates low enough that your authenticated domains stay clean.
The Quick Reference Checklist
Before you send a single cold email from any domain, confirm all of the following:
- One SPF record published - no duplicate SPF records on the same domain
- SPF record has fewer than 10 DNS lookups
- SPF ends with ~all or -all
- DKIM key pair generated and published at 2048-bit
- DKIM signing enabled in your sending platform
- DMARC record published at p=none with rua reporting address
- Test email shows SPF: PASS, DKIM: PASS, DMARC: PASS in Gmail Show Original view
- Warmup running before cold sends begin
- DMARC reports being monitored before moving to p=quarantine
- Custom tracking domain set up as a CNAME - skipping this is a commonly missed step that hurts inbox placement even when authentication is perfect
Everything above takes about 30 minutes per domain to configure. The warmup and DMARC monitoring is where you invest the time.