SPF, DKIM and DMARC setup for cold email
How to publish SPF, DKIM and DMARC for cold email: alignment, Google and Yahoo bulk sender rules, test tools, common mistakes, and where warmup fits.
Read the setup guideDeliverability
Pause the inbox that is landing in spam. On a message you received, confirm SPF, DKIM, and DMARC pass and align with the From domain, then check blocklists, warmup, volume per inbox, bounces, spam complaints, and links or tracking. Fix the first failure, retest on mailboxes you control, and only then send more.
Cold email is in spam when the server accepted the message and filed it as unwanted. Gmail calls that folder Spam. Outlook.com calls it Junk. A bounce means the server refused it. Google's email sender guidelines say unauthenticated mail might be marked as spam or rejected with a 5.7.26 error. dmarcian documents Microsoft's May 5, 2025 rule: domains sending 5,000 or more messages a day to Outlook.com, Hotmail, and Live must pass SPF, DKIM, and DMARC alignment, or see rejection 550 5.7.515. Treat those codes as refusals and start with authentication. The table is for mail that arrived.
| What you see | Check first |
|---|---|
| Authentication-Results shows a fail | SPF, DKIM, or DMARC alignment on the From domain |
| Authentication passes, and the domain or inbox is new | Warmup, then a fresh seed test |
| Placement dropped after you raised the daily count | Volume per inbox, and deferrals such as Gmail 4.7.28 |
| Hard bounces rose on this list | Verification, suppression, and whether the list was purchased |
| Postmaster Tools spam rate is climbing | Complaints, who you mail, and the opt-out |
| A plain seed reaches the inbox and the tracked copy does not | Links, the tracking host, images, attachments |
| Spamhaus or another blocklist returns a hit | Stop. Remove the listing, or retire the domain or IP |
| Company mail is getting filtered too | Cold email going out from the company domain |
A failed SPF, DKIM, or DMARC check can file good copy in spam. From February 1, 2024, senders to personal Gmail accounts need SPF or DKIM, a matching PTR record, TLS, and a Postmaster Tools spam rate below 0.3%. Above 5,000 messages a day, Gmail also requires both SPF and DKIM, DMARC (p=none is allowed), and From alignment. Yahoo's sender best practices require SPF and DKIM for bulk senders, DMARC at least at p=none with a pass, and the same alignment.
The usual miss is alignment. SPF can pass on the tool's Return-Path while DMARC fails for your From domain. DKIM fails the same way when d= is the tool. Open the spam copy, choose Show original in Gmail, and read Authentication-Results. You want spf=pass, dkim=pass, and dmarc=pass on your From domain. Syntax and the full test are in the SPF, DKIM and DMARC setup guide. Fix a fail before you change volume or copy. Google also requires the sending IP to match the PTR hostname, and that hostname to point back to the same IP. Check it in Google Admin Toolbox Dig.
A new domain has no history, so a burst of cold email is easy to file as spam. Warmup builds history. It does not publish DNS, and it does not clear a blocklist. Pause cold volume if the inbox is new, if warmup never ran, or if you turned it off on launch day. Confirm authentication, then follow the warmup schedule. Add cold email only after warmup spam placement has fallen and a small live test reaches the inbox. Google says to raise volume slowly and to cut it when mail bounces or defers. More warmup days will not fix a bad list.
One inbox can outrun its reputation. Google tracks limits per domain and per IP, and on a shared IP every sender shares the quota. Past that quota, Gmail typically rejects with SMTP 4.7.28 and says to wait at least 10 minutes, then retry from one connection. Google also warns that doubling volume suddenly can cause rate limits or a reputation drop. Lower the daily count on the inbox in spam, and add inboxes when you need reach. The ceiling is in how many cold emails to send per day.
Bounces tell the provider the list is stale, scraped, or purchased. Google says not to buy addresses, and that people who did not ask for the mail may report it as spam. Yahoo says to remove invalid recipients promptly. Suppress every hard bounce on every domain before the next send. If the list was bought or never verified, rebuild it. Who belongs on it, plus verification and catch-all domains, is in the B2B lead list guide. A catch-all accepts every address, so hold those rows for a smaller send.
Spam traps are addresses that should never get mail. They catch harvested lists and dead addresses that were repurposed. The usual sign is a blocklist hit or a placement drop, without a normal bounce. Stop, suppress that source list, and verify the rest.
A complaint is a click on report spam. Google says frequent reports make later mail more likely to land in spam and can lower domain reputation. In Google Postmaster Tools, keep the rate below 0.10% and avoid ever reaching 0.30% or higher. Yahoo requires a rate below 0.3%. With DKIM on, Sender Hub can mail you each complaint. Yahoo's rate is based on mail that reached the inbox.
Postmaster Tools stays empty until the domain is verified and Gmail volume is high enough. Use the seed test, and treat a run of report spam events as the same warning. Suppress complainers on every domain. The postal address and the opt-out are in the cold email law guide. Pause and change who you mail before you resume.
The message itself can be the cause. Google requires RFC 5322 formatting. Send one plain text test from the same From domain, with no images, no attachments, and no link. If that copy reaches the inbox and the campaign copy does not, add one element back at a time.
Open pixels and rewritten links change the body. If they run after DKIM signs, DKIM fails. The authentication guide covers that. A shared tracking hostname is a separate failure. Google says one sender on a shared IP affects the others, and a tracker used by many accounts works the same way. Put tracking on a domain you control, or turn it off until placement recovers. Skip public link shorteners, use your own URL, and leave attachments off until someone replies. The deliverability guide is the setup version of these rules.
Google says spoofing another sender can get mail marked as spam. Yahoo points at the CAN-SPAM ban on false headers and deceptive subjects. An honest subject, a real From name, and one true detail about the recipient draw fewer reports than a pitch that hides the ask.
Edit copy after authentication passes. If the plain seed reaches the inbox and the template does not, the template is what you change. Subject patterns are in the subject line guide.
Google says every sender on a shared IP shares its reputation, and that mail from a blocklisted IP is more likely to be marked as spam. Look that IP up before you blame your copy. A domain you bought used can still carry spam, phishing, or a blocklist hit from the previous owner.
Spamhaus splits this work. The Domain Blocklist (DBL) covers low reputation domains. IP lists include the Spamhaus Blocklist (SBL), Exploits Blocklist (XBL), Policy Blocklist (PBL), and Combined Spam Sources (CSS). Many filters query the combined IP list, ZEN. A hit can mean a reject or an accept that still lands in spam. Look the domain up before warmup. A current listing means you register a different domain. Warm a previously listed domain only after the lookup is clear.
Cold email on the domain you use for invoices and internal mail ties that reputation to the campaign. Yahoo says to separate bulk mail from user and transactional mail, because each IP and DKIM domain has its own reputation. Use a separate domain with its own SPF, DKIM, and DMARC. The deliverability guide explains the split. If the company domain is already in spam, stop cold sends on it and move the campaign to a new domain that passes a seed test first.
Above 5,000 messages a day to Gmail, Google requires one-click unsubscribe on marketing and subscribed messages, plus a visible unsubscribe link. The headers are List-Unsubscribe and List-Unsubscribe-Post set to List-Unsubscribe=One-Click, per RFC 8058. Yahoo requires a list-unsubscribe header for bulk senders, recommends that POST method, and says to honor unsubscribes within 2 days. Below the Gmail bulk line, US commercial email still needs a working opt-out and a postal address. Use the law guide for that checklist. Without an opt-out, report spam is the button people use.
Change one variable, then measure it on the same mailboxes.
Keep the seed test small, and hold prospect mail while the inbox fails it.
Look up every name on the message, not only the From domain.
Read which list hit. An IP can be listed while the domain is clean, or the reverse. Follow that list's removal steps, and stop sending on the listed domain or IP while you wait. A shared IP you do not control means you move hosts. The deliverability guide also names SURBL and URIBL for domains inside links. Check those when a plain seed inboxes and every linked copy does not.
Be Leaded runs this diagnosis on infrastructure with capacity for 400,000+ emails a day, 99% delivery rate, 30+ client programs. Domains, authentication, warmup, and list checks in the cold email program follow this order.
Cold emails land in spam when the server accepts the message and then does not trust the sender, the list, or the content. Check authentication, warmup, volume, bounces, complaints, links, blocklists, the company domain, and one-click unsubscribe if you are a bulk sender. Fix the first failed check, retest, and only then raise volume.
Send the message your campaign actually sends to mailboxes you control at Gmail, Yahoo, and Outlook.com. Record inbox, spam, or missing for each one. On Gmail, open Show original and confirm spf=pass, dkim=pass, and dmarc=pass with the From domain aligned. After you have real Gmail volume, check spam rate and domain reputation in Google Postmaster Tools.
Spam placement can happen with a clean blocklist lookup, because authentication, volume, and complaints also decide the folder. Look up the From domain, link domains, and the sending IP on the Spamhaus check and on MX Toolbox. A current listing means you stop on that domain or IP until it is removed or replaced.
Pause the inbox that is landing in spam. More mail adds complaints and bounces to a reputation that is already weak. Fix the failed check, prove inbox placement on seed mailboxes you control, and resume at a low daily volume.
A plain text copy with tracking, images, and attachments removed will reach the inbox when the message is the cause. If authentication fails, the domain is blocklisted, or the inbox was never warmed, a cleaner email leaves that failure in place. Change one thing at a time.
Spam, or junk, means the server accepted the message and filed it as unwanted. A bounce means the server refused the message. Google documents unauthenticated mail being rejected with a 5.7.26 error. A refusal points to authentication, policy, or a blocklist. Spam placement can also come from volume, complaints, or the content.
How to publish SPF, DKIM and DMARC for cold email: alignment, Google and Yahoo bulk sender rules, test tools, common mistakes, and where warmup fits.
Read the setup guideA step-by-step email warmup guide: what to set up before day one, a 21-day sending schedule per inbox, what to watch, and when a domain is ready for real cold email volume.
Read the warmup scheduleWhat Gmail, Yahoo and Outlook require from senders in 2026: SPF, DKIM and DMARC, spam complaint rates, one-click unsubscribe, enforcement dates, and how to set up cold email so it reaches the inbox.
Read the requirementsThirty minutes with the founder. You'll leave with a clear picture of your market, what a campaign would look like and what it would cost.
Or email sales@beleaded.com