All platforms
CRM-matched DNS Microsoft 365 · 2 CNAME + 2 TXT · DKIM · SPF · DMARC

Microsoft 365 DNS Checker

Microsoft 365 sends from your domain using its own required records , 2 CNAME + 2 TXT covering DKIM, SPF, DMARC. A generic SPF test cannot see whether they match. We check your live DNS against Microsoft 365’s spec, host by host, character by character. Free, no account.

e$

domain only, we strip email and protocol automatically

What Microsoft 365 requires

Microsoft 365 (Exchange Online): 2 CNAME for DKIM + 1 TXT for SPF + 1 TXT for DMARC. Microsoft is your sending/receiving infrastructure if your domain uses this setup. This is the exact table our verifier checks your DNS against, not a generic template.

TypeHostRequired valuePurpose
CNAMEselector1._domainkeyselector1-YOUR_DOMAIN._domainkey.YOUR_TENANT.onmicrosoft.comDKIM
CNAMEselector2._domainkeyselector2-YOUR_DOMAIN._domainkey.YOUR_TENANT.onmicrosoft.comDKIM
TXT@v=spf1 include:spf.protection.outlook.com -allSPF
TXT_dmarcv=DMARC1; p=none; rua=mailto:[email protected]DMARC

How Microsoft 365 authenticates

Microsoft 365 handles DKIM by delegation: you publish 2 CNAME records (selectors selector1, selector2) pointing into selector1-YOUR_DOMAIN._domainkey.YOUR_TENANT.onmicrosoft.com, and Microsoft 365 hosts and rotates the actual signing keys on its side. You never see the public key, which also means a checker that only looks for TXT keys at _domainkey will wrongly report DKIM as missing here.

For SPF, Microsoft 365 needs its include (spf.protection.outlook.com) present in the ONE SPF record your domain is allowed to publish. If you already have an SPF record, this include is merged into it, never added as a second record; two SPF records is an automatic PermError everywhere.

DMARC is yours, not the platform's: one record at _dmarc governs every sender on the domain. If another tool already publishes it, do not add a second; the spec row above shows the minimum this platform expects to find.

Mistakes we see on Microsoft 365 domains

Publishing the CNAME target as a TXT record. The record type matters: a TXT with the right value still is not a delegation, and the key lookup dies at your zone.

Proxying the _domainkey CNAMEs through a CDN. They must resolve as plain DNS; an orange-clouded record answers with the CDN's addresses and the key disappears.

Adding Microsoft 365's SPF as a second TXT record next to an existing v=spf1. Receivers see two records and hard-fail both.

Why a generic checker misses this

A standard DNS tool tells you your SPF parses and your DMARC exists. It has no idea Microsoft 365 is in the picture. It cannot tell you a required CNAME points at the wrong target, a selector is missing, or the include chain never reaches Microsoft 365’s servers, which are precisely the failures that put Microsoft 365 mail in spam while every generic check shows green.

Common questions

What DNS records does Microsoft 365 require?

Microsoft 365 requires 4 DNS records: 2 CNAME + 2 TXT, covering DKIM, SPF, DMARC. The exact hosts and values are in the table above, they come from the same spec table our verifier checks against.

Why does a normal SPF checker pass my domain but Microsoft 365 mail still fails?

A generic checker only tests whether your SPF record parses. It does not know which include Microsoft 365 needs, which CNAME targets its DKIM keys live behind, or which selector names it signs with. We compare your live DNS against Microsoft 365’s required records character by character, so a missing include or a typo in a CNAME target is called out by name.

Will adding these records break my existing email?

The DKIM CNAMEs and the DMARC record are additive. SPF is the one to be careful with: a domain must publish exactly one SPF record, so if you already have one, merge the new include into it rather than adding a second record, two SPF records is an automatic PermError.

Keep going

All 25 platforms Full DNS check Build a record Run everything