In short
A Microsoft 365 DMARC record is a TXT record at _dmarc.yourdomain, published at your DNS host rather than inside Microsoft 365. Publish SPF with include:spf.protection.outlook.com and switch on DKIM for the custom domain first. UK public sector domains must have DMARC, DKIM and SPF in place under gov.uk's Securing government email guidance.
Get a quote for DMARC for Microsoft 365
Tell us roughly how many users or sites you have and we will come back to you with options and a quote.
What Microsoft 365 does for you, and what you configure
How much work there is depends on which domain your users send from. Microsoft's DMARC set-up guide (opens in a new tab) splits it into the initial onmicrosoft.com domain, which Microsoft owns, and the custom domains you add yourself:
| Domain | SPF | DKIM (opens in a new tab) | DMARC |
|---|---|---|---|
| contoso.onmicrosoft.com (the initial domain) | Already configured by Microsoft; you cannot edit it | Outbound mail is signed automatically | You create the record yourself, in the Microsoft 365 admin center |
| Your custom domain (example.co.uk) | You publish it at your DNS host | Not signed with your domain until you switch DKIM on | You publish it at your DNS host |
| Each sending subdomain (news.example.co.uk) | Needs its own SPF record | Needs its own DKIM configuration | Inherits the parent record unless it has its own |
| Parked domains that send no email | v=spf1 -all | Publish no DKIM records | v=DMARC1; p=reject; |
Two points catch people out. First, Microsoft's DKIM guide (opens in a new tab) says that "currently, no DKIM signing occurs for outbound mail from custom domains" until you set it up, so mail from example.co.uk relies on SPF alone for DMARC until you do. Second, "there are no admin portals or PowerShell cmdlets in Microsoft 365 for you to manage DMARC TXT records in your custom domains": the record lives with whoever hosts your DNS, often your domain registrar.
The onmicrosoft.com records belong to Microsoft, which is also why DMARC platforms treat them differently. Check Point's SPF Management (opens in a new tab) guide, for example, shows a "Not Available" status for onmicrosoft.com subdomains. You can see what any of your domains publishes today with our DMARC checker.
Not sure which option fits? Ask us
Tell us what you need and we will recommend the right option for your organisation, with a quote.
SPF for Exchange Online
For a custom domain that sends only through Microsoft 365, Microsoft's SPF guide (opens in a new tab) gives this record, published as a TXT record at the root of the domain:
| Scenario | SPF TXT record |
|---|---|
| Microsoft 365 only | v=spf1 include:spf.protection.outlook.com -all |
| Microsoft 365 plus your own mail server | v=spf1 ip4:192.168.0.10 include:spf.protection.outlook.com -all |
| Microsoft 365 plus another service's include | v=spf1 include:servers.adatum.com include:spf.protection.outlook.com -all |
| A parked domain | v=spf1 -all |
The IP address and adatum.com values are Microsoft's own examples; replace them with your real senders. Things to get right:
- One SPF record per domain. Add every sender to the same record rather than publishing a second one
- Hard fail or soft fail. Microsoft recommends -all for Microsoft 365 domains because DMARC and DKIM sit alongside it. gov.uk's Set up government email services securely (opens in a new tab) asks public sector senders for at least ~all. Both count as an SPF failure for DMARC
- The 10-lookup limit. If checking the record needs more than 10 DNS lookups, SPF fails with a permanent error. Each include: costs at least one lookup, and nested includes add more, so fewer than 10 includes does not guarantee you are under the limit
- Subdomains need their own record. The SPF record for example.co.uk does not cover news.example.co.uk
- TTL. Microsoft recommends a TTL of at least 3600 seconds (one hour) on SPF records
The SPF, DKIM and DMARC explained guide covers how SPF alignment works with the Return-Path domain.
DKIM for your custom domain
Microsoft 365 signs with your domain using two CNAME records, called selectors, that point to public keys Microsoft holds. Only one selector is active at a time; the second is there so keys can be rotated. The hostnames are the same for every tenant:
| Host name | Points to (format) |
|---|---|
| selector1._domainkey | selector1-example-co-uk._domainkey.example.r-v1.dkim.mail.microsoft |
| selector2._domainkey | selector2-example-co-uk._domainkey.example.r-v1.dkim.mail.microsoft |
In that format, "example-co-uk" is your custom domain with dashes for dots, the next "example" is the prefix of your onmicrosoft.com domain, and the single letter before -v1 is a partition character Microsoft assigns. The values above are an illustration only: Microsoft says (opens in a new tab) to read the exact values for your domain from the portal or from Exchange Online PowerShell (Get-DkimSigningConfig). To switch DKIM on:
- In the Microsoft Defender portal (security.microsoft.com), go to Email & collaboration, Policies & rules, Threat policies, then the Email authentication settings page and its DKIM tab. This is part of the built-in protection that applies to all cloud mailboxes
- Select your custom domain and slide the toggle from Disabled to Enabled. An error dialog appears listing the two CNAME values you need, and the status changes to CnameMissing
- Open the domain's details again and copy the values from the Publish CNAMEs section
- At your DNS host, create the two CNAME records
- Wait for Microsoft 365 to detect them (a few minutes, possibly longer), then turn on Sign messages for this domain with DKIM signatures. The status changes to Valid and Rotate DKIM keys becomes available
Repeat this for each custom domain and each subdomain you send from. Once DKIM signs with your domain, DMARC can pass on DKIM even when a message's SPF result breaks, for example after forwarding.
Is DMARC for Microsoft 365 the right fit for you?
We will check it against your systems and requirements and recommend the right option.
The DMARC record for a Microsoft 365 domain
With SPF and DKIM in place, publish the DMARC record at your DNS host as a TXT record with the host name _dmarc. Start in monitoring mode and send reports to a mailbox or service that can process them:
| Stage | TXT record at _dmarc.example.co.uk |
|---|---|
| Monitoring | v=DMARC1; p=none; rua=mailto:dmarc-reports@example.co.uk |
| Quarantine (RFC 9989 test flag) | v=DMARC1; p=quarantine; t=y; rua=mailto:dmarc-reports@example.co.uk |
| Quarantine | v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.co.uk |
| Reject | v=DMARC1; p=reject; rua=mailto:dmarc-reports@example.co.uk |
| Unused onmicrosoft.com or parked domain | v=DMARC1; p=reject |
Microsoft's own examples still include pct=100. RFC 9989 (opens in a new tab), the DMARC standard published in May 2026, made pct historic and added the t tag for testing a stricter policy, which is the t=y row above. t=y is new in RFC 9989: receivers that have not adopted it ignore the tag and apply quarantine in full, so only publish that stage once your reports show every genuine sender passing. Our DMARC generator builds records in the current syntax.
A few Microsoft 365 specifics:
- Where reports go. Microsoft recommends (opens in a new tab) a specific mailbox or Microsoft 365 Group for DMARC reports rather than a user's own mailbox, or an external DMARC reporting service, which then tells you the rua value to use
- Subdomains inherit. Unlike SPF and DKIM, the record at the parent domain covers every subdomain, including ones that do not exist, unless a subdomain publishes its own
- Failure reports. Microsoft 365 does not send DMARC failure (ruf) reports, even if your record asks for them, so most of your insight comes from aggregate reports
- The onmicrosoft.com domain. If you do not send from it, Microsoft says to publish v=DMARC1; p=reject for it too, added on the Domains page of the Microsoft 365 admin center
The DMARC record explained guide covers every tag.
Other services that send as your Microsoft 365 domain
Few organisations send only from Exchange Online. Payroll and HR systems, CRM, accounting software, website forms and marketing platforms often send using your domain, and each one needs SPF or DKIM that aligns with your From address before you move past p=none. Microsoft's guidance offers two practical steps:
- Use subdomains for services you don't control. Microsoft recommends a subdomain such as marketing.example.co.uk for bulk email services, so their problems don't affect the reputation of mail your staff send. It also keeps each SPF record inside its own 10-lookup budget
- Start reporting early. Microsoft's SPF guide says that in complex organisations it is important to "quickly configure DKIM signing and DMARC (in 'take no action' mode)", and that "a DMARC reporting service is very helpful for identifying email sources"
The platforms we supply each connect to Microsoft 365 in their own way:
| Platform | How it works with Microsoft 365 |
|---|---|
| Valimail | Valimail's Microsoft page (opens in a new tab) describes a Microsoft 365 Mailbox Connector that shows services used to email your own staff, such as payroll messages, and a Trusted Domains feature that reads your tenant's domain list to find unprotected domains |
| EasyDMARC | Lists Microsoft 365 among its sending platform integrations (opens in a new tab), alongside Microsoft Sentinel for SIEM and Microsoft Teams for alerts |
| Check Point DMARC Management (opens in a new tab) | An add-on to Check Point Email Security, which its admin guide (opens in a new tab) describes as an API-based inline protection service. The DMARC chapter (opens in a new tab) notes that mail comes from your tenant and from other sources such as Salesforce and Marketo |
The DMARC for email marketing platforms guide covers Klaviyo, Mailchimp and Mailgun in detail.
Monitoring and enforcement on Microsoft 365
Once reports arrive, the work is the same as on any platform: identify every sender, fix the ones that fail, then raise the policy. Microsoft's advice for the move to quarantine and reject is to "go slowly and methodically deal with issues that are revealed in DMARC reporting".
Microsoft 365 is also a receiver, and it affects the reports other domains get from you:
- Microsoft 365 sends DMARC aggregate reports to domains with a valid rua address, as long as your MX record points directly to Microsoft 365
- If inbound mail passes through another service or device first (the MX points elsewhere, including hybrid set-ups via an on-premises server), aggregate reports are not sent
- How Microsoft 365 acts on other domains' quarantine and reject policies depends on the Honor DMARC record policy when the message is detected as spoof setting in your anti-phishing policy
For the policy steps themselves, see DMARC policy, and for turning the XML into a list of senders, the DMARC report analyser guide. Mail you send to consumer Outlook.com, Hotmail and Live.com addresses has its own rules for high-volume senders, covered in Gmail, Yahoo and Outlook.com DMARC requirements.
How we help with DMARC on Microsoft 365
Getting a Microsoft 365 domain to enforcement is mostly about the services that send alongside Exchange Online. We can:
- Check your domains: review the SPF, DKIM and DMARC records on your custom domains, subdomains, onmicrosoft.com domain and parked domains
- Set up reporting: point your rua address at a DMARC platform so reports are processed from day one
- Help you choose and supply a platform: EasyDMARC, Valimail or the Check Point DMARC Management add-on, depending on how you work
- Work through your senders with you and plan each policy step to quarantine or reject, at a pace that suits you
EasyDMARC and Valimail licences can be billed monthly, with terms confirmed at quote. Ask us for a quote, or contact us for free advice on your tenant.
Frequently asked questions
Does Microsoft 365 set up DMARC automatically?
No. Microsoft configures SPF and DKIM for the initial onmicrosoft.com domain, but you create the DMARC record yourself: in the Microsoft 365 admin center for onmicrosoft.com, and at your DNS host for custom domains. Microsoft's DMARC guide (opens in a new tab) says there is no portal or PowerShell cmdlet for managing DMARC records on custom domains.
Do I need a DMARC record on my onmicrosoft.com domain?
Microsoft says yes. If you send from it, publish a DMARC record for it. If you don't, Microsoft recommends v=DMARC1; p=reject so nobody can send convincingly as that domain. It is added from the domain's page in the Microsoft 365 admin center.
Does Microsoft send DMARC reports?
Microsoft 365 sends aggregate reports to domains with a valid rua address when its customers' MX records point directly to Microsoft 365, and it does not send failure (ruf) reports. Outlook.com, the consumer service, also sends aggregate reports; Microsoft's high-volume sender post (opens in a new tab) says there are no plans to send ruf reports.
Should my Microsoft 365 SPF record end in -all or ~all?
Microsoft recommends -all (hard fail) for Microsoft 365 domains, because DKIM and DMARC are also in place and DMARC reports let you check the results. gov.uk asks public sector senders for at least ~all. DMARC treats either as an SPF failure.
Why does my Microsoft 365 mail fail DMARC?
The usual causes are DKIM not yet switched on for the custom domain, another service sending as your domain without aligned SPF or DKIM, or a gateway or signature tool changing messages after they are signed. Your aggregate reports show which source is failing. See DMARC fail for the fixes.
Still have a question about DMARC for Microsoft 365?
Ask us and a member of our team will get back to you.