Keep Your Chain

Setup

Cold email domain setup checklist: the six DNS records and the one redirect

September 11, 2026 · 8 min read · Adams Chimera

Most cold email that lands in spam was doomed before the first send: a missing DKIM record, a DMARC policy that says "monitor only", two SPF records instead of one. None of those show an error anywhere. The mail simply goes to spam and the sender blames the copy. Here is the whole checklist for a domain hosted on Microsoft 365, with the values to paste.

A sending domain and its seven pieces: MX, SPF, DKIM selector 1 and 2, DMARC, autodiscover, and a redirect to the real site getacme.com the sending domain MXreplies come backto the mailbox SPFwho may sendfor this domain DKIM ×2signature keys(then Enable!) DMARCp=quarantine+ reports Redirect→ acme.comfor the curious + autodiscover CNAME (optional): Outlook apps find the mailbox
Seven pieces. Six are DNS records; the seventh is a redirect rule. Miss one and mail still sends — it just goes to spam.

Before the records: the right domain

Never the real one. Cold email goes from a look-alike you own — getacme.com or tryacme.com next to acme.com — so that if a campaign ever dents a reputation, it is never the domain your customers, invoices and password resets run on. Buy .com, no hyphens, no numbers. About $10 a year on Cloudflare.

Add it to Microsoft 365 (admin center → Settings → Domains → Add domain), pick "I'll add the DNS records myself", and paste the one verification TXT it gives you. Then stop following Microsoft's wizard and use the list below instead — the wizard's list is incomplete for cold email.

The records

TypeNameValue (replace acme-com with your-domain-com)What it does
MX@getacme-com.mail.protection.outlook.com, priority 0Replies and bounces reach the mailbox. Without it, the chain is one-way.
TXT@v=spf1 include:spf.protection.outlook.com -allLists who may send for the domain. Exactly one SPF record — two means fail.
CNAMEselector1._domainkeyselector1-getacme-com._domainkey.tenant.onmicrosoft.comDKIM key 1. tenant is your initial onmicrosoft.com name.
CNAMEselector2._domainkeyselector2-getacme-com._domainkey.tenant.onmicrosoft.comDKIM key 2. Microsoft rotates between them.
TXT_dmarcv=DMARC1; p=quarantine; rua=mailto:[email protected]; adkim=s; aspf=s; pct=100Tells receivers to quarantine anything pretending to be you, and where to send reports.
CNAMEautodiscoverautodiscover.outlook.comOptional. Lets Outlook apps find the mailbox without manual settings.

The step everyone misses: enable DKIM

Adding the two CNAMEs is not enough. In Microsoft 365, DKIM signing for a custom domain is off until you turn it on: security.microsoft.com → Email & collaboration → Policies → Email authentication settings → DKIM → your domain → Enable. Until then, Microsoft signs your mail with its own onmicrosoft.com key, the signature does not align with your From domain, and DMARC at p=quarantine does exactly what you told it to: quarantines your own mail. This is the single most common reason a "fully configured" new domain lands in spam.

DMARC: quarantine, not none

p=none is monitoring. It tells receivers nothing about what to do with a spoofed message, and Google and Microsoft increasingly read it as "this sender has not finished setting up." Go to p=quarantine from day one on a new sending domain — there is no legacy mail to break — and read the reports that arrive at the rua address. Strict alignment (adkim=s; aspf=s) is fine here because only Microsoft sends for this domain.

The redirect

A curious prospect will type the domain into a browser. It must land on your real site, not a parking page or an error. In Cloudflare: Rules → Redirect Rules → dynamic redirect from getacme.com and www.getacme.com to https://acme.com, status 301. If the domain has no A record yet, add a proxied placeholder (192.0.2.1) so the rule has something to attach to.

Checklist

Things that fail silently

Two SPF records (one from a website builder, one from Microsoft) — receivers treat that as a permanent fail. A DKIM CNAME with a trailing space pasted from a wiki. DMARC set on the real domain but not the sending domain. Cloudflare proxying (orange cloud) on the DKIM or autodiscover CNAMEs — turn the proxy off for every record in this list. A verification TXT record deleted after verification (harmless) versus the SPF TXT deleted by mistake (fatal). Check with a resolver you trust, then check again the next morning.

Keep Your Chain shows these records for each of your domains with your tenant name filled in, checks them on demand and every night, and won't start a ramp until they all pass. Plans start at $29 a month.

Join the waitlist