[ Sending-service guides ]

Microsoft 365 DMARC setup: verify the whole sending route

Configure the correct SPF policy and tenant-generated DKIM delegation, then verify alignment on real Microsoft 365 mail and applications that send outside the tenant.

By the EmailAuth research team · 5 min read

[ Key points ]

  • Configure the correct SPF policy and tenant-generated DKIM delegation, then verify alignment on real Microsoft 365 mail and applications that send outside the tenant.
  • Employee-mail success does not cover a separate CRM route.
On this page

To set up DMARC for a Microsoft 365 custom domain, establish the domain's sending routes, configure the appropriate SPF policy, enable custom-domain DKIM and verify an aligned result on received mail. Publishing a DMARC TXT record is one step in that sequence.

This guide covers custom-domain sending through Microsoft 365. Confirm the Microsoft cloud environment and any hybrid, relay or outbound gateway arrangements before using the examples. Applications sending outside Microsoft 365 need their own supported authentication configuration, even when they use the same visible From domain.

Confirm the domain, DNS host and Microsoft environment

Confirm the custom domain, its authoritative DNS host, the Microsoft 365 environment and the permission needed to manage signing. Save the existing SPF, DKIM and DMARC records before changing them.

Do not confuse public DNS administration with the tenant's domain list. The registrar may also be the DNS host, but it need not be. Check the delegated name servers before editing a zone.

List every route that uses the domain. In particular, distinguish ordinary Exchange Online sending from applications using relay, direct send, another SMTP provider or an outbound gateway. The product name alone does not identify the final signer.

Map employee mail and application mail

A move to Microsoft 365 does not automatically move the invoicing application, website contact form or recruitment platform. Those services may still display your domain while sending through a different provider.

Ask for a simple service map: employee mail, application mail and outsourced communications, with an owner beside each route. Require a received-message test for critical flows such as password resets and billing notices. The deliverable is working, accountable communication, not a screenshot of an enabled tenant setting.

Configure the applicable SPF policy

Microsoft's documented example for a domain sending **only through its standard Microsoft 365 service or GCC** is:

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

This is a scoped example, not a replacement for an existing mixed-service policy. Microsoft documents different include domains for GCC High/DoD and for its service operated by 21Vianet. Follow the current instructions for your environment.

Publish one applicable SPF policy at the evaluated domain. If a valid policy already exists, review and update that policy rather than adding another SPF record. Include only justified sending permissions and check the full dependency path against SPF limits.

Publish both tenant-generated DKIM CNAMEs

Microsoft 365 custom-domain DKIM uses two CNAME records. Obtain their exact values from the Defender portal's DKIM configuration or Exchange Online PowerShell. Do not build a target from an old naming template: Microsoft documents more than one target format, and generated values can contain a tenant-specific component.

In an authorised Exchange Online PowerShell session, this read-only check retrieves the configured targets:

Get-DkimSigningConfig -Identity example.com |
  Format-List Enabled,Status,Selector1CNAME,Selector2CNAME

If the domain has no signing configuration, use Microsoft's documented initial-configuration procedure before expecting those properties to exist. In the Defender portal, the relevant area is Email authentication settings, then DKIM.

Publish **both** generated CNAME records, verify their public answers and enable custom-domain signing through the supported tenant procedure. A CNAME record delegates verification-key management; it is not a request to paste a private key or an invented TXT key.

Check DNS editor behaviour carefully. A panel that appends the zone name can turn a fully entered hostname into a duplicated name. Preserve the exact published owner and target values in the change record.

Add the intended DMARC policy and reporting destination

If the domain is beginning a monitored deployment, an illustrative record at _dmarc.example.com is:

v=DMARC1; p=none; rua=mailto:dmarc-reports@example.com

The example assumes a working report destination at the same domain. Replace it with the approved address and verify collection. External destinations can require additional reporting permission. Do not weaken an existing enforcement policy merely to match this example.

Use the record creation guide for the publishing and verification sequence, and the DMARCbis readiness guide when reviewing legacy rollout settings.

Verify messages after the full sending route

Send a controlled message to a separate external recipient and inspect the original message there. Record the visible From, SPF-evaluated identity, every relevant DKIM d= domain and the trusted DMARC result.

Repeat the test through critical applications and any final outbound gateway. If the visible From is your custom domain but the only passing signature uses an unrelated tenant identity, investigate custom-domain signing and the actual route. If a gateway modifies signed content, verify the result after that gateway.

  • Check: SPF policy; Evidence to retain: Authoritative answer and evaluated sending route
  • Check: DKIM delegation; Evidence to retain: Both exact CNAMEs and tenant configuration state
  • Check: Live signing; Evidence to retain: Received signature and trusted verification result
  • Check: DMARC; Evidence to retain: A passing aligned path and observed policy context
  • Check: Business coverage; Evidence to retain: Tests for the applications the organisation actually uses
  • Record acceptance and ongoing ownership

Approve the implementation against a named service inventory. Record the change approver, DNS ownership, critical-flow results and remaining exceptions. A tenant's valid signing status does not demonstrate that every external application is covered.

Keep the cloud environment explicit in operating documentation. A standard-cloud example must not quietly become a government-cloud instruction. Assign periodic checks for abandoned services and delegated selectors as well as failures in current traffic.

Retain the ability to restore the prior approved state when a change fails, while preserving the incident evidence. A final review should explain the remaining risks of compromised accounts and authenticated malicious mail, rather than promising that a DMARC pass makes every message safe.

The practical takeaway

The setup is complete when the published records, tenant signing state, received-message identities and reporting path agree. Retain the service inventory and exceptions with the change record; they are the baseline for the next application or gateway change.

Separate employee-mail evidence from a CRM exception

Written case M365-01 assumes employee mail from staff@example.org has a trusted passing DKIM signature with d=example.org. The billing CRM uses billing@example.org, but its only recorded signature is from an unrelated provider domain and its SPF result is unknown. Employee-mail evidence does not establish the CRM result, and the partial CRM evidence cannot justify a complete DMARC verdict. The CRM owner must identify its supported aligned identity and collect a controlled external message before the domain owner evaluates enforcement readiness. These are fictional identities and outcomes; no tenant, DNS change or mail send occurred.

[ Takeaway ]

Employee-mail success does not cover a separate CRM route.

[ By role ]

What this means for you

Choose your role for practical next steps.

IT / Mail Admin

Use generated values and verify the final route.

Confirm the Microsoft cloud environment, then obtain both DKIM CNAME targets from the tenant. Public DNS, signing enablement and an external received-message result are separate checks.

Next steps

  1. Review the existing single SPF policy.
  2. Publish and verify both exact DKIM CNAMEs.
  3. Test applications and outbound gateways alongside employee mail.

CISO / SecOps

Require evidence across the declared service inventory.

An enabled tenant setting establishes a limited configuration state. Review the implementation against the named domain, cloud environment, actual senders and approved exceptions.

Next steps

  1. Retain approvals and the previous approved DNS state.
  2. Check critical-flow evidence and report collection.
  3. Assign review of stale services and delegated selectors.

Founder / Non-technical

Include the applications outside employee mail.

Your Microsoft 365 implementation may leave a CRM, website and billing platform on separate infrastructure. The business acceptance list should include those communications and their owners.

Next steps

  1. List critical messages by service.
  2. Ask for a test from each important workflow.
  3. Assign an owner for reporting and future sender changes.

[ FAQs ]

Frequently asked questions

Is the standard Microsoft 365 SPF include correct for every Microsoft cloud?

No. Microsoft documents different values for particular environments, including GCC High/DoD and 21Vianet. Confirm the actual service before using a standard-cloud example.

Can I add a second SPF record just for Microsoft 365?

Do not add a second applicable SPF policy at the same domain. Review the existing permissions and publish one valid policy that reflects the authorised routes.

Why should I obtain DKIM targets from my tenant?

Generated targets can use different naming formats and tenant-specific values. Copy the current Selector1CNAME and Selector2CNAME values instead of constructing them from a generic tutorial.

Do I need both Microsoft DKIM CNAME records?

Yes, Microsoft's custom-domain setup uses both selector CNAMEs, including the record needed for rotation. Only one active signature selector does not make the second delegation unnecessary.

Does a CnameMissing status mean I should create another DMARC record?

No. It identifies a signing-configuration dependency to investigate. Compare the exact generated CNAME names and targets with public DNS before changing an unrelated DMARC policy.

Does Microsoft 365 configuration cover a separate CRM provider?

Not automatically. The CRM may send through a different infrastructure and identity model. Test that application and configure its supported aligned path separately.

Can a message signed by an onmicrosoft.com domain fail alignment with my custom From domain?

Yes. A passing signature on an unrelated domain does not provide DKIM alignment with your custom From domain. Inspect all signatures and any other passing aligned path.

What should the implementation reviewer sign off?

The correct cloud-specific settings, both DKIM delegations, effective DNS, real aligned messages on critical routes, report collection, ownership and recorded exceptions.

[ Sources ]

Sources

  1. RFC 9989

    Sections §4.4 · §5.3.1 · §5.3.5 · §7.4 · §11.7

  2. RFC 7208

    Sections §3.2 · §4.6.4

  3. RFC 6376

    Sections §3.4 · §3.6.1 · §3.7 · §6.1.2 · §8.3

  4. Microsoft: Set up DKIM to sign mail from your cloud domain

    Sections Configure DKIM signing of outbound messages in Microsoft 365 · Use Exchange Online PowerShell to configure DKIM signing of outbound messages · DNS provider-specific CNAME examples

  5. Microsoft: Set up SPF for custom cloud domains

    Sections Scenario: Microsoft 365 email only · Scenario: Microsoft 365 email with on-premises email and a non-Microsoft email service

[ Glossary ]

Glossary

DKIM
A signature binding covered message data to a signing domain.
Selector
The signature value identifying the public-key lookup within a signing domain.
Alignment
The required relationship between an authenticated identity and the visible From domain.
Sending route
The actual path from a service through its relays or gateways to a receiver.

Enterprise provenance

Why top financial institutions and governments retired their email security dashboards.

Traditional email authentication platforms sell you a dashboard and ask your engineers to do the labour. In high-stakes environments, manual oversight means delayed enforcement, configuration drift and unmonitored shadow domains.

EmailAuth is the agentic email provenance platform. Our agents enforce p=reject, keep third-party senders aligned and move your domains to full RFC 9989 compliance, the new DMARC standard,, with human-in-the-loop auditability.

Governments Large enterprises Tier-1 financial institutions

SaaS · Dedicated tenancy · Air-gapped on-prem · BYOK encryption

Knowledge Base