Prospi
Back to Blog
GuidesPublished Apr 10, 2026

SPF, DKIM, DMARC Setup Guide for Cold Email (Step by Step)

The complete, no-fluff walkthrough for setting up email authentication on your sending domain. Includes copy-paste DNS records for Google Workspace, verification commands, and every mistake worth avoiding.

10 min read
Apr 10, 2026
Jovan Ivkovic
Jovan IvkovicAI Tech Founder & Investor - Built Prospi, used by 300+ B2B companies for cold email
Diagram showing SPF, DKIM, and DMARC DNS records protecting a sending domain and routing cold emails to the primary inbox
Key Takeaways
SPF, DKIM, and DMARC are mandatory for cold email in 2026 - Google and Yahoo enforce this for all bulk senders
Each record is a DNS TXT entry you add through your domain registrar or DNS provider - no code required
SPF authorizes sending IPs, DKIM cryptographically signs messages, and DMARC ties both together with a policy
Start DMARC at p=none to monitor, then escalate to p=quarantine and p=reject after verifying all senders pass
Verification takes 15 minutes with free tools like MXToolbox - you should confirm all three pass before sending campaigns
Prospi auto-configures all three records during onboarding - no manual DNS editing required

What are SPF, DKIM, and DMARC?

SPF, DKIM, and DMARC are three DNS-based email authentication protocols that prove you are who you claim to be when you send email. Together, they answer the same question receiving mail servers ask about every inbound message: is this sender actually authorized to send on behalf of this domain?

Before these standards existed, anyone could forge a From address and send emails appearing to come from your domain. Authentication records stored in your DNS make that forgery detectable - and increasingly, email providers like Gmail and Outlook will reject or spam-folder messages that fail these checks. For a broader look at how authentication fits into overall inbox placement, read our complete cold email deliverability guide.

SPF (Sender Policy Framework)

A DNS TXT record that lists every mail server IP address authorized to send email from your domain. When a receiving server gets a message claiming to be from you, it checks your SPF record to verify the sending IP is on the approved list. Think of it as a guest list - if the IP isn't on it, the message is suspect.

DKIM (DomainKeys Identified Mail)

Adds a cryptographic digital signature to every outgoing email. Your mail server signs the message with a private key, and a matching public key published in your DNS lets receiving servers verify the signature. This confirms the email was not tampered with in transit and genuinely originated from your infrastructure.

DMARC (Domain-based Message Authentication, Reporting & Conformance)

Sits on top of SPF and DKIM and tells receiving servers what to do when authentication fails: monitor only (p=none), send to spam (p=quarantine), or block entirely (p=reject). It also enables aggregate reports so you can see who is sending email on your domain's behalf.

None of these protocols require code changes or server access. Each one is a simple DNS TXT record you add through your domain registrar (GoDaddy, Namecheap, Cloudflare, Google Domains) or DNS provider. The entire setup for all three typically takes under 30 minutes.

Why do cold emails need authentication?

In February 2024, Google announced mandatory SPF and DKIM requirements for all senders sending more than 5,000 emails per day to Gmail addresses. Yahoo followed with identical requirements on the same day. Senders without proper authentication now see their messages bounced or spam-foldered at scale - there is no longer any gray area.

But even below that 5,000/day threshold, unauthenticated cold email is a losing strategy. Gmail's spam filters have become dramatically more aggressive since 2023. Sending without SPF and DKIM signals to every receiving server that your domain is unverified - and unverified domains land in spam at a much higher rate than authenticated ones, regardless of how good your copy is. Once authentication is in place, the next question is how many cold emails per day you can safely send without hurting deliverability.

Cold email is uniquely vulnerable because you are contacting people who have never heard of you. You have no existing engagement history, no prior opens or replies to signal trustworthiness - authentication is the baseline that lets you even get a fair shot at the inbox. Without it, you are fighting against the spam filter before the recipient ever reads a word. This is why our email warmup guide always lists authentication setup as step zero - warmup does nothing if authentication is broken.

Key InsightAuthentication is not optional for cold email in 2026. It is table stakes - the minimum requirement to even compete for inbox placement. Everything else (copy, timing, list quality) only matters after authentication is correct.

How do you set up SPF step by step?

SPF is a single DNS TXT record added to the root of your sending domain. For Google Workspace users, this is straightforward - Google provides the exact record value. For other providers, the value will differ slightly, but the process is identical.

Step 1: Check if an SPF record already exists

Before adding anything, check whether your domain already has an SPF record. You can only have one SPF record per domain - adding a second one will break both. Use MXToolbox SPF Lookup or run this command in your terminal:

TERMINAL
nslookup -type=TXT yourdomain.com

Look for a result that starts with v=spf1. If one exists, you will need to edit it rather than add a new one.

Step 2: Create your SPF record

For Google Workspace, use the following record exactly as shown. This is the officially recommended SPF record from Google:

DNS TXT RECORD - Copy and paste this exactly
Type:TXT
Name/Host:@ (or leave blank - represents your root domain)
Value:v=spf1 include:_spf.google.com ~all
TTL:3600 (1 hour)

If you use Outlook / Microsoft 365 instead of Google Workspace, the value is:

v=spf1 include:spf.protection.outlook.com ~all

The ~all at the end is a soft fail - emails from unauthorized IPs are marked suspicious but not outright rejected. Using -all (hard fail) is more strict and preferred once you have confirmed all your senders are listed. If you send through additional tools like a CRM or outreach platform, you need to add their include: mechanism to the same record before switching to -all.

Step 3: Add the record to your DNS

Log in to wherever your domain's DNS is managed (Cloudflare, GoDaddy, Namecheap, Route 53, Google Domains, etc.) and add a new TXT record with the values above. The interface varies by provider but the fields are the same: type, name/host, and value.

Do Not Add Two SPF RecordsIf a TXT record starting with v=spf1 already exists, edit it - do not add a new one. Multiple SPF records on the same domain will cause a PermError and your SPF will fail for every email.

How do you set up DKIM step by step?

DKIM requires generating a key pair through your email provider, then publishing the public key as a DNS TXT record. Unlike SPF, the DKIM record goes on a subdomain (a selector), not the root domain - so multiple DKIM records can coexist without conflict.

Step 1: Generate your DKIM key in Google Workspace

Follow Google's official DKIM setup guide to generate your key:

1
Go to Google Admin Console (admin.google.com)
2
Navigate to Apps > Google Workspace > Gmail > Authenticate email
3
Select your domain from the dropdown
4
Click Generate new record - choose 2048-bit key length (stronger, recommended)
5
Google will display a DNS hostname and TXT record value - copy both

Step 2: Add the DKIM TXT record to your DNS

Google will give you a hostname like google._domainkey.yourdomain.com and a value that starts with v=DKIM1; k=rsa; p=.... The format looks like this:

DNS TXT RECORD (Google Workspace DKIM)
Type:TXT
Name/Host:google._domainkey
Value:v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0B... (your full key from Google Admin)
TTL:3600 (1 hour)

Step 3: Start DKIM signing in Google Admin

After adding the DNS record, return to Google Admin Console > Apps > Gmail > Authenticate email, select your domain, and click Start authentication. Google will verify the DNS record is in place and begin signing outgoing emails. This usually takes a few minutes after DNS propagation - allow up to 48 hours for full propagation.

Use 2048-bit, Not 1024-bitGoogle now recommends 2048-bit DKIM keys. If you are on an older 1024-bit key, regenerate it. Some DNS providers have a character limit for TXT record values - if yours does, check their documentation for how to split the key across two records.

How do you set up DMARC step by step?

DMARC is added as a TXT record on the _dmarc subdomain of your sending domain. It ties together your SPF and DKIM results and tells receiving servers how to handle failures. DMARC.org's overview is the authoritative reference for the full specification.

The standard approach is to start with a monitoring-only policy (p=none), review the reports for 2-4 weeks, and then escalate to enforcement once you are confident all legitimate sending is passing SPF and DKIM. Skipping the monitoring phase and jumping straight to p=reject is one of the most common ways to accidentally block your own email.

Step 1: Add a DMARC record at p=none (monitoring)

DNS TXT RECORD - Phase 1 (Monitoring, safe to add immediately)
Type:TXT
Name/Host:_dmarc
Value:v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com
TTL:3600 (1 hour)

Replace dmarc@yourdomain.com with a real email address where you want to receive aggregate reports. You can create a dedicated address like dmarc-reports@yourdomain.com or use an existing inbox.

Step 2: Review DMARC reports for 2-4 weeks

DMARC aggregate reports (RUA) are sent daily as XML files. They show every source that sent email claiming to be from your domain, along with pass/fail results. Use a free tool like Postmark's free DMARC analyzer or dmarcian to parse the reports into a readable format.

Look for any legitimate sending sources that are failing SPF or DKIM. Common culprits include marketing automation tools, CRMs, help desk software, and third-party services that send on your behalf. Every source that sends your email needs to either be added to your SPF record or configured to sign with DKIM.

Step 3: Escalate to p=quarantine, then p=reject

Once your DMARC reports show 100% pass rates for all legitimate senders, update the record value to increase enforcement:

PhasePolicy ValueWhat Happens on FailureWhen to Use
Phase 1p=noneDeliver normally, send reportImmediately - start here
Phase 2p=quarantineSend to spam/junk folderAfter 2-4 weeks of clean reports
Phase 3p=rejectBlock the message entirelyAfter p=quarantine looks clean

A complete p=reject DMARC record for a fully locked-down domain looks like this:

DNS TXT RECORD - Phase 3 (Full enforcement)
v=DMARC1; p=reject; rua=mailto:dmarc@yourdomain.com; ruf=mailto:dmarc@yourdomain.com; pct=100

How do you verify your setup is working?

DNS propagation can take anywhere from 15 minutes to 48 hours. Once enough time has passed, use the following methods and tools to confirm that SPF, DKIM, and DMARC are all passing correctly before launching any cold email campaigns. You can also use our free SPF/DKIM/DMARC checker to run all three checks in one place.

Method 1: Send a test email and check headers

Send an email from your sending domain to a personal Gmail account. In Gmail, click the three-dot menu in the top right of the email and select Show original. Look for the Authentication-Results header near the top. A fully passing setup looks like this:

EMAIL HEADERS (expected output)
Authentication-Results: mx.google.com; spf=pass (google.com: domain of you@yourdomain.com designates 209.85.220.41 as permitted sender) dkim=pass header.i=@yourdomain.com dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=yourdomain.com

Method 2: Use free verification tools

ToolWhat It ChecksFree?
MXToolbox SPF/DKIM/DMARCLookup and validation of all three recordsYes
Google Admin ToolboxFull MX, SPF, DKIM check for Google WorkspaceYes
Mail-TesterSends actual email score including auth, content, IP3 tests/day
DMARC Analyzer (Postmark)DMARC record parser + report readerYes
Prospi DNS CheckerAll three records in one check, cold-email focusedYes
Verification Checklist
SPF lookup shows your record and returns "Pass" for Google's sending IPs
DKIM check shows your selector and key, status "Valid"
DMARC lookup shows your record with the correct policy
Test email headers show spf=pass, dkim=pass, dmarc=pass
Mail-Tester score is 9/10 or higher

What are common authentication mistakes?

After helping 300+ companies configure their sending infrastructure through Prospi, these are the authentication mistakes we see most frequently - and the ones that cost the most in deliverability.

Adding duplicate SPF records

The single most common mistake. When a domain has two records starting with v=spf1, receiving servers perform an RFC 7208 lookup and return a PermError - which is treated as a hard failure. Every legitimate email from that domain will fail SPF. If you need to add another sending service, combine everything into one record.

Exceeding 10 DNS lookups in SPF

The SPF specification limits evaluation to 10 DNS lookups. Each include: mechanism counts as a lookup. If your SPF record includes Salesforce, Mailchimp, Marketo, HubSpot, and a few others, you can easily exceed this limit and trigger a PermError. Use tools like MXToolbox's SPF checker to count your lookups and flatten your record if needed.

Going straight to p=reject without monitoring

Jumping directly to p=reject DMARC will block any legitimate email from sources you haven't authorized yet - including your own newsletters, transactional emails from SaaS tools, or forwarded messages. Always spend 2-4 weeks at p=none reading DMARC reports before enforcing any policy.

Forgetting DKIM for sending subdomains

If you send cold email from a subdomain (e.g., mail.yourdomain.com or outreach.yourdomain.com), you need SPF and DKIM configured for that subdomain separately. Many teams set up authentication on their root domain but neglect the sending subdomain they actually use for cold outreach. Check your From address and make sure authentication is on the right domain.

Not keeping warmup running after authentication is set

A newly authenticated domain still has zero sending reputation. Launching cold campaigns immediately after setting up DNS records without first warming up the account is a fast path to the spam folder. See our complete breakdown in the cold email deliverability guide.

Setting up authentication on the wrong domain

If your website is on yourbusiness.com but your cold email goes out from outreach-yourbusiness.com, authentication needs to be on outreach-yourbusiness.com - not your main domain. Many senders use a separate domain for cold email to protect their primary domain's reputation. Both domains need their own complete authentication setup.

If you are setting up multiple sending domains at once - which is common for cold email at scale - the manual process above needs to be repeated for every domain. Prospi handles this automatically during onboarding: connect a domain, and the platform walks you through each record, checks propagation, and confirms all three protocols are passing before your first send. See how we handle this on the product page, or compare it to doing everything manually in our deliverability guide. You can also look at pricing to see what is included.

Frequently asked questions

Do I need SPF, DKIM, and DMARC for cold email?

Yes. As of February 2024, Google and Yahoo require SPF and DKIM for all bulk senders sending more than 5,000 emails per day. DMARC is strongly recommended for all senders. Without these records, your emails will almost certainly land in spam or be rejected entirely - regardless of the quality of your copy or how well you have warmed up your account.

How long does it take for DNS records to propagate?

DNS propagation typically takes 15 minutes to 48 hours, depending on your DNS provider and the TTL (time-to-live) value set on your records. Most records go live within 1-4 hours. You can monitor propagation status in real time using MXToolbox or Google Admin Toolbox - just re-run the lookup every 30 minutes after adding a record.

Can I have multiple SPF records on one domain?

No. You can only have one SPF TXT record per domain. If you have multiple email providers (for example, Google Workspace for outreach plus HubSpot for marketing emails), you must combine all authorized senders into a single SPF record using multiple include: mechanisms. Adding a second SPF record will cause a PermError and break authentication entirely.

What DMARC policy should I start with?

Start with p=none to monitor your email traffic without affecting deliverability. After 2-4 weeks of reviewing DMARC aggregate reports to confirm all legitimate senders are passing SPF and DKIM, move to p=quarantine. Once you are confident everything is clean, escalate to p=reject for maximum domain protection. Never skip the monitoring phase.

How do I know if my SPF, DKIM, and DMARC are working?

Send a test email to a Gmail account and inspect the raw headers (three-dot menu > Show original). Look for spf=pass, dkim=pass, and dmarc=pass in the Authentication-Results header. You can also use free tools like MXToolbox or our free DNS checker to validate all three records at once.

Skip the DNS Headaches Prospi Handles It in 15 Minutes

Prospi auto-configures SPF, DKIM, and DMARC during onboarding. No DNS editing needed - we handle it in 15 minutes.