DMARC for Hybrid Exchange (On-Prem + Microsoft 365): Complete Setup Guide (Split-Routing Mail Flow, Centralized Mail Transport, Dual-Signer DKIM, ARC Sealing, Send Connector Loops, Default Frontend DKIM Strip)

The operator deployment guide for DMARC on a hybrid Exchange topology where mail flow is split between Exchange on-premises and Exchange Online. Covers the hybrid topology spectrum (classic hybrid via Hybrid Configuration Wizard, Centralized Mail Transport, split-domain coexistence, edge transport servers), the outbound-routing decision tree (which side signs and sends), SPF construction that includes both sides without breaking the 10-DNS-lookup limit, the dual-signer DKIM problem (when on-prem and cloud sign different domains), ARC sealing across the on-prem-to-cloud relay to preserve original SPF and DKIM verdicts, the Default Frontend Connector DKIM-strip pitfall, Send Connector loops, and migration paths from classic hybrid to fully cloud-routed mail flow. Anchored against the Feb 2024 Google/Yahoo bulk-sender requirements that apply regardless of which side handles the outbound boundary.

This deployment guide is provided in English. Exchange on-premises and Microsoft 365 UI labels (Exchange Management Shell, Exchange Admin Center on-prem and cloud, Hybrid Configuration Wizard, Microsoft 365 Defender portal Email & Collaboration > Policies & rules > Threat policies > Email authentication settings > DKIM and ARC tabs) and DNS-record syntax (v=spf1 include:spf.protection.outlook.com, selector1._domainkey CNAME, Set-DkimSigningConfig, Set-ArcConfig) do not translate. We keep the body in the source language so technical terms remain consistent with Microsoft documentation and the underlying RFCs.

TL;DR

  • Hybrid Exchange means outbound mail can flow through either Exchange on-premises or Exchange Online - or both. The DMARC story is harder than cloud-only because alignment must hold regardless of which side wrote and signed the message.
  • The cleanest hybrid DMARC topology is Centralized Mail Transport (CMT): on-prem Exchange relays all outbound through Exchange Online, only the cloud signs DKIM, SPF lists only spf.protection.outlook.com, and DMARC alignment is unambiguous. Enable via the Hybrid Configuration Wizard or Set-HybridConfiguration -CentralizedTransportEnabled $true.
  • SPF in classic hybrid must include BOTH sides: v=spf1 ip4:<onprem-NAT-range> include:spf.protection.outlook.com -all. Stay under the 10-DNS-lookup limit (RFC 7208 §4.6.4) - consolidate on-prem IPs into a single ip4: CIDR block when possible.
  • The dual-signer DKIM problem is the #1 hybrid DMARC failure mode: both on-prem (via Exclaimer, GFI, or Zix transport agent) AND Exchange Online sign the same message under different d= domains, and receivers pick the wrong signature for alignment. Fix: choose ONE signing side; disable the other via Set-DkimSigningConfig -Identity your-domain.com -Enabled $false or uninstall the on-prem agent.
  • ARC sealing (RFC 8617) is the standards-track way to preserve original SPF and DKIM verdicts across the on-prem-to-cloud relay. Configure Defender for Office 365 Trusted ARC Sealers via Set-ArcConfig -ArcTrustedSealers <your-onprem-fqdn>. The cloud trusts the on-prem ARC seal and re-evaluates DMARC using the original verdicts the on-prem boundary captured.
  • The Default Frontend Connector DKIM strip is the classic hybrid gotcha: Exchange Online's inbound connector from on-prem strips existing DKIM signatures before transport, so on-prem DKIM is lost at the relay. Set Set-Connector -PreserveSmtpHeaders $true on the matching inbound connector, OR migrate to CMT so on-prem never signs in the first place.
  • Send Connector relay loops occur when on-prem Send Connectors and cloud inbound connectors form a cycle. Symptom: NDR 5.4.6 Hop count exceeded. Prevention: accept the Hybrid Configuration Wizard's connector pair as-is, set accepted-domain DomainType correctly (Authoritative vs InternalRelay), and verify Get-MessageTrace shows exactly one cloud hop on outbound.
  • DMARC rollout in hybrid takes longer than cloud-only: budget 4-8 weeks at p=none (vs 2-6 weeks cloud-only) because more sender paths surface in reports - one per hybrid mail-flow combination multiplied by every legitimate SaaS sender, application relay, and on-prem-only mailbox.
  • The Feb 2024 Google/Yahoo bulk-sender requirements apply regardless of which side of hybrid handles outbound. Any domain sending >5000 messages/day to gmail.com or yahoo.com needs SPF + DKIM alignment, DMARC at minimum p=none, RFC 8058 one-click List-Unsubscribe, and a spam-complaint rate under 0.3%.
  • The endgame for most hybrid deployments is full Exchange Online (cloud-only) mail flow, with on-prem retained for legacy public-folder access, on-prem journaling, or geographic compliance. The CMT topology is the operational stepping stone - eliminates the dual-signer problem without retiring on-prem servers.

1. What this guide covers

This is the operator-implementation walkthrough for deploying SPF, DKIM, ARC, and DMARC on a domain whose mail flow is split between Exchange on-premises and Exchange Online (Microsoft 365) - the topology Microsoft calls "hybrid Exchange" and the operator-pain segment the cloud-only DMARC for Microsoft 365 guide intentionally deferred. The guide assumes you are the administrator of a hybrid Exchange organisation and have access to:

  • The Exchange Management Shell on the on-prem Exchange server (for Get-HybridConfiguration, Set-AcceptedDomain, Get-SendConnector, Get-TransportConfig, and related cmdlets).
  • The Exchange Online PowerShell V3 module on a workstation (for Connect-ExchangeOnline, Set-DkimSigningConfig, Set-ArcConfig, Set-Connector -PreserveSmtpHeaders, and related cmdlets).
  • The Microsoft 365 Defender portal at security.microsoft.com - the modern UI for DKIM management, Trusted ARC Sealers configuration, and anti-spoof policy.
  • The on-prem Exchange Admin Center (typically at https://<exchange-fqdn>/ecp) for accepted-domain configuration, mail flow rules, and connector management on the on-prem side.
  • Your domain's DNS provider (Cloudflare, Route 53, on-prem AD-integrated DNS, etc.) - used to publish SPF, the DKIM CNAMEs that route to your tenant's <tenant>.onmicrosoft.com key infrastructure, and the DMARC TXT record.
  • A working email mailbox on the domain to receive DMARC aggregate reports (or a third-party report-ingestion service - DMARC Analyzer is one option).

The guide is structured as four sequential deployment steps (SPF for hybrid → dual-signer DKIM → ARC sealing the relay → DMARC rollout) plus a hybrid topology overview, an outbound mail-flow decision tree, Send Connector / Default Frontend connector pitfalls, hybrid-specific gotchas, common mistakes, and migration paths from classic hybrid through Centralized Mail Transport to fully cloud-routed mail flow.

What this guide does not cover:

  • On-premises Exchange Server in isolation (no cloud component). Pure on-prem Exchange runs its own outbound boundary, signs DKIM via a transport agent like Exclaimer or Zix, and publishes SPF for its perimeter outbound IPs only. spf.protection.outlook.com is not part of the SPF.
  • Exchange Online in isolation (no on-prem component). The DMARC for Microsoft 365 sibling page is the complete reference - this hybrid page explicitly defers cloud-only mechanics to it.
  • Migration tooling from third-party platforms (Google Workspace to M365, Lotus Notes to Exchange Online, on-prem Exchange to Google Workspace). Those are separate migration projects with their own DMARC implications during the cutover window.
  • Mailbox migration mechanics (move-mailbox cmdlets, MRS proxy, batch moves). The hybrid topology supports mailbox migration in both directions but mailbox migration itself does not affect DMARC - only the OUTBOUND mail flow topology does.

2. The hybrid topology spectrum

"Hybrid Exchange" is not a single topology - it spans a spectrum of configurations that differ in WHICH side handles outbound mail delivery, HOW mail is routed between the sides, and WHERE accepted domains are authoritative. The DMARC implementation follows from the topology, so identifying YOUR specific topology is the prerequisite for every other step in this guide.

2.1 Classic Hybrid (HCW-configured, on-prem outbound by default)

The default output of running the Hybrid Configuration Wizard (HCW) against an on-prem Exchange 2013+ organisation with at least one Exchange Online tenant. After HCW:

  • On-prem Exchange is the outbound boundary for accepted domains that remain Authoritative on-prem.
  • Exchange Online is the outbound boundary for cloud-mailbox users with accepted domains marked Authoritative in the cloud.
  • The bidirectional Send Connector pair configured by HCW handles internal mail flow between the two sides with mutual TLS authentication via the on-prem certificate.

DMARC implications of classic hybrid: both sides need DKIM signing under the same custom domain (or you accept the dual-signer problem), SPF must include both sides (ip4: on-prem ranges plus include:spf.protection.outlook.com), and ARC sealing is essential for messages that traverse the on-prem-to-cloud relay. This is the highest-complexity hybrid topology from a DMARC perspective.

2.2 Centralized Mail Transport (CMT, cloud outbound boundary)

A Microsoft 365 feature that overrides the classic hybrid default: even mail composed on on-prem Exchange relays to Exchange Online for outbound delivery. Enabled via:

Set-HybridConfiguration -CentralizedTransportEnabled $true

or by selecting the "Centralized Mail Transport" checkbox during HCW. After CMT:

  • Exchange Online is the single outbound boundary for ALL accepted domains - regardless of where mailboxes live.
  • On-prem Exchange remains operational but only for internal mail and on-prem-to-cloud relay.
  • DKIM signing happens only on the cloud side under the standard selector1 / selector2 CNAME-delegation workflow.

DMARC implications of CMT: this is the operator-friendliest hybrid topology. SPF drops the on-prem ip4: ranges (only include:spf.protection.outlook.com remains), only the cloud signs DKIM, and ARC sealing is optional because the relay leg from on-prem to cloud happens INSIDE the trust boundary. The dual-signer problem is eliminated by construction. The trade-off is bandwidth and latency: every outbound message round-trips through the cloud regardless of recipient location.

2.3 Split-domain coexistence

A non-HCW topology where the same SMTP domain has some mailboxes on-prem and some on Exchange Online, with mail routing decided per-mailbox via accepted-domain configuration and InternalRelay address spaces. Common during phased migration when you want to move mailboxes one batch at a time without changing the MX record. After split-domain configuration:

  • The domain's accepted-domain DomainType is set to InternalRelay on both sides (not Authoritative).
  • Each side has a complete address list and forwards mail for "unknown" local recipients to the other side.
  • Outbound mail can leave either side depending on which mailbox sent it.

DMARC implications of split-domain: identical to classic hybrid because both sides independently handle outbound. The operational pain is amplified because every accepted domain effectively has two "homes" and operators must track which mailboxes are where.

2.4 Edge Transport servers

An on-prem topology where dedicated Edge Transport role servers sit at the perimeter (DMZ) and handle SMTP relay to and from the internet, with the internal Exchange Mailbox role servers sitting behind them. EdgeSync replicates accepted-domain and recipient information from the internal AD to the Edge servers.

Edge Transport is orthogonal to hybrid - you can run Edge Transport on top of classic hybrid or CMT. DMARC implications: SPF lists the Edge Transport perimeter IPs (NOT the internal Mailbox role IPs), DKIM signing is typically configured at the Edge Transport role (so messages leave the perimeter signed), and any on-prem ARC sealer runs at Edge Transport to capture the last verdict before the perimeter SMTP egress.

2.5 Identifying YOUR topology

From the Exchange Management Shell on the on-prem Exchange server, run:

Get-HybridConfiguration | Format-List
Get-AcceptedDomain | Format-Table DomainName, DomainType, AddressBookEnabled
Get-SendConnector | Format-Table Name, AddressSpaces, SmartHosts
Get-IntraOrganizationConnector | Format-Table Name, TargetAddressDomains, Enabled

Key fields to inspect:

  • Get-HybridConfiguration .Features: contains CentralizedTransport if CMT is enabled.
  • Get-HybridConfiguration .EdgeTransportServers: non-empty if Edge Transport is in use.
  • Get-AcceptedDomain .DomainType: Authoritative means this side handles outbound for the domain; InternalRelay means split-domain coexistence.
  • Get-SendConnector whose AddressSpaces match *: the connector handling all external outbound. If its SmartHosts point at *.mail.protection.outlook.com, you have CMT; if not, classic hybrid.

Once you know your topology, the decision tree in section 3 prescribes the SPF / DKIM / ARC / DMARC implementation steps for your specific case.

3. The outbound mail-flow decision tree

Use this decision tree to identify the SPF construction, DKIM signing side, and ARC sealing requirement for your hybrid topology. Answer the questions in order; the first match wins.

3.1 Question 1: Is Centralized Mail Transport enabled?

From the Exchange Management Shell:

(Get-HybridConfiguration).Features -contains "CentralizedTransport"

If True: you have CMT. Skip to 3.1.1 Implementation for CMT. Mail flow is cloud-out regardless of where messages originate.

If False: you have classic hybrid or split-domain. Proceed to Question 2.

3.1.1 Implementation for CMT
  • SPF: v=spf1 include:spf.protection.outlook.com -all (plus any additional SaaS sender includes - see SPF explained).
  • DKIM: cloud-side only. Use the standard selector1 / selector2 CNAME-delegation workflow from the DMARC for Microsoft 365 sibling page.
  • ARC sealing: optional. The on-prem-to-cloud relay leg is inside the trust boundary; on-prem does not need to seal because the cloud is the only outbound boundary that emits Authentication-Results to external receivers.
  • DMARC: identical to cloud-only deployment - publish v=DMARC1; p=none; rua=mailto: at _dmarc.<your-domain> and advance through the standard rollout phases.

3.2 Question 2: Does on-prem Exchange sign DKIM?

On the on-prem Exchange server, check for an installed DKIM transport agent:

Get-TransportAgent | Format-Table Identity, Enabled, Priority
Get-Module -ListAvailable | Where-Object Name -like "*Exclaimer*","*GFIMailEssentials*","*Zix*","*Symantec*"

Inspect the Authentication-Results header on a sample outbound message from an on-prem mailbox: if dkim=pass header.d= points at your custom domain, on-prem is signing. If dkim=none or no DKIM-Signature header is present, on-prem is NOT signing.

If on-prem signs AND cloud signs under the same custom domain: you have the dual-signer pattern. Proceed to section 5 and pick ONE side to disable.

If on-prem signs AND cloud is NOT signing: this is the cleanest classic hybrid pattern for DMARC purposes. Keep on-prem signing, ensure ARC sealing is configured for the on-prem-to-cloud relay (see section 6), and leave Set-DkimSigningConfig -Identity your-domain.com -Enabled $false on the cloud side.

If on-prem does NOT sign and cloud signs: the cleanest topology for DMARC. ARC sealing is unnecessary for outbound (since on-prem doesn't sign there's no original verdict to preserve) and you can treat the cloud-side DKIM workflow as cloud-only. However, you still need on-prem ARC sealing for INBOUND mail that traverses on-prem before reaching cloud mailboxes - the cloud needs original verdicts to apply spoofing protections.

If neither side signs: you have no DKIM at all. Start with the DKIM explained pillar then return here.

3.3 Question 3: Do messages traverse the on-prem-to-cloud relay?

Almost always yes in a hybrid topology - INBOUND mail to cloud mailboxes from external receivers either lands at on-prem first (if on-prem holds the MX record) or at cloud first (if cloud holds the MX record). The MX is typically at cloud after HCW unless explicitly reconfigured.

If MX points at cloud first (*.mail.protection.outlook.com): the cloud is the inbound boundary, Exchange Online evaluates SPF + DKIM + DMARC, and relays to on-prem only for on-prem mailboxes. ARC sealing across the cloud-to-on-prem hop is rarely needed because on-prem already trusts the cloud.

If MX points at on-prem first: on-prem is the inbound boundary, on-prem evaluates SPF + DKIM + DMARC, and relays to cloud for cloud mailboxes. ARC sealing is essential here: without it, cloud sees mail relayed from on-prem with rewritten Received headers and no surviving verdicts, and cloud-side anti-spoofing applies wrong dispositions.

4. Step 1: Configure SPF for the hybrid topology

Publish a single SPF TXT record at the domain apex (the root of your zone) that authorises EVERY legitimate outbound IP range AND every nested include for SaaS senders the domain uses. The defining hybrid challenge is including both sides while staying under the 10-DNS-lookup limit defined in RFC 7208 §4.6.4.

4.1 SPF for CMT (cloud outbound boundary)

With CMT enabled, on-prem Exchange does not talk to external receivers directly - it relays through the cloud. The SPF record therefore needs only the cloud include:

your-domain.com.   IN TXT  "v=spf1 include:spf.protection.outlook.com -all"

During the migration window before enforcement, use ~all (soft-fail) instead of -all:

your-domain.com.   IN TXT  "v=spf1 include:spf.protection.outlook.com ~all"

4.2 SPF for classic hybrid (both sides outbound)

Without CMT, both on-prem and cloud need SPF authorisation. Identify the on-prem outbound IPs - typically the perimeter firewall NAT pool for the Exchange Send Connector, NOT the Exchange server's internal IP:

# On the perimeter firewall, identify the outbound NAT range used
# by Exchange Send Connectors. This is the public IP set seen by
# external receivers in their Received: headers and the IP that
# SPF must authorise. Common pattern: a /29 or /28 CIDR block
# dedicated to the Exchange perimeter.
your-domain.com.   IN TXT  "v=spf1 ip4:203.0.113.0/29 include:spf.protection.outlook.com -all"

If on-prem outbound spans multiple IP ranges or geographic regions, consolidate into a single CIDR block when network addressing allows. Each separate ip4: token does NOT consume a DNS lookup, but readability and operational clarity favour consolidation. Example with multiple ranges:

your-domain.com.   IN TXT  "v=spf1 ip4:203.0.113.0/29 ip4:198.51.100.16/28 include:spf.protection.outlook.com include:sendgrid.net -all"

4.3 The 10-DNS-lookup limit in hybrid

spf.protection.outlook.com itself resolves to multiple nested includes and consumes more than one lookup. In hybrid topologies that also include SaaS senders (transactional ESPs, marketing platforms, on-prem application relays via SendGrid), the limit fills quickly. Use the Domain Security Checker to report the live lookup count against your SPF record - if the count exceeds 10, SPF evaluation will return permerror and DMARC fails.

Mitigation strategies for hybrid:

  • Migrate to CMT: eliminates the on-prem ip4: entries entirely because on-prem no longer talks to external receivers directly. The single largest SPF simplification you can make.
  • SPF flattening: resolve nested include: entries down to raw ip4: CIDRs - reduces lookups but breaks when the underlying provider changes IPs. Use only as a last resort with operational monitoring to detect drift.
  • Subdomain delegation: delegate high-volume SaaS senders to dedicated subdomains (marketing.your-domain.com, transactional.your-domain.com) each with their own SPF - the apex SPF stays clean. The trade-off is operational complexity at the SaaS provider side (each provider must be configured to use the delegated subdomain as the visible From:).

Verify the record with dig +short txt your-domain.com after publication, or via the Domain Security Checker.

5. Step 2: Configure DKIM signing (and resolve the dual-signer problem)

DKIM signing in hybrid Exchange is the single highest-leverage operational decision in this guide. The cloud-only M365 page documents the standard selector1 / selector2 CNAME-delegation workflow - that workflow applies unchanged in hybrid on the cloud side. The hybrid-specific complexity is whether on-prem ALSO signs and, if so, under which d= domain.

5.1 The cloud-only signing pattern (preferred)

Strongly recommended for new hybrid deployments and required for CMT topology. Configuration:

  1. On the cloud side, enable DKIM for the custom accepted domain per the standard M365 workflow:
    Connect-ExchangeOnline
    Set-DkimSigningConfig -Identity your-domain.com -Enabled $true
    Get-DkimSigningConfig -Identity your-domain.com
  2. On the on-prem side, ensure NO DKIM transport agent is installed:
    Get-TransportAgent | Format-Table Identity, Enabled, Priority
    # Inspect for Exclaimer / GFI / Zix / Symantec DKIM agents.
    # If present, decide whether to uninstall (recommended) or
    # disable + remove from the signing pipeline.
  3. Verify by sending a test message from an on-prem mailbox to a Gmail or Yahoo address. Inspect the message source - the DKIM-Signature header must show d=your-domain.com (the cloud signature, captured on the on-prem-to-cloud relay leg and carried out by Exchange Online to external).

5.2 The on-prem-only signing pattern (acceptable)

Acceptable for classic-hybrid topologies where on-prem is the outbound boundary AND you have a working on-prem DKIM signer. Configuration:

  1. On the on-prem side, install and configure a DKIM transport agent. Common choices: Exclaimer Mail Signatures (commercial), GFI MailEssentials (commercial), Zix DKIM (commercial), or the open-source DKIM transport agent project. Each signer's UI is different; all need the same five inputs: the signing domain (d=your-domain.com), the selector (a label of your choice - convention is onprem or exchange), the RSA private key (generate via OpenSSL), canonicalisation modes (use relaxed/relaxed), and the list of headers to sign (canonical set: From, To, Subject, Date, Message-ID).
  2. Publish the corresponding public-key TXT record at <your-selector>._domainkey.your-domain.com:
    onprem._domainkey.your-domain.com.   IN TXT  "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxxx...IDAQAB"
  3. On the cloud side, DISABLE DKIM signing for the same accepted domain to prevent the dual-signer problem:
    Connect-ExchangeOnline
    Set-DkimSigningConfig -Identity your-domain.com -Enabled $false
    Get-DkimSigningConfig -Identity your-domain.com  # Confirm Enabled=False
  4. Configure ARC sealing on the on-prem side (see section 6) so the on-prem DKIM verdict is preserved across the on-prem-to-cloud relay.

5.3 The dual-signer problem (avoid)

Occurs when BOTH on-prem and cloud sign outbound messages from the same custom domain - typically because the operator set up cloud-side DKIM but forgot (or did not know) that an on-prem DKIM transport agent was also installed and signing. The operational symptom:

  • Outbound messages from on-prem mailboxes arrive at receivers with TWO DKIM-Signature headers - one from on-prem (d=your-domain.com, s=onprem) and one from cloud (d=<tenant>.onmicrosoft.com, s=selector1 or s=selector2).
  • Outbound messages from cloud mailboxes have only ONE signature (cloud).
  • Receivers iterate through both signatures looking for one that passes AND aligns with the From: header. The on-prem signature aligns (matches your-domain.com) but may be broken because the cloud Default Frontend connector modified the message body before relaying; the cloud signature passes but does NOT align (onmicrosoft.com ≠ your-domain.com).
  • The receiver's DMARC verdict depends on implementation details of how the receiver iterates DKIM signatures - the outcome is non-deterministic and varies between gmail.com, yahoo.com, microsoft.com, and others.

Resolution: pick ONE signing side per section 5.1 or 5.2. The cloud-only pattern is strongly preferred unless you have a hard requirement to sign on-prem (typically a compliance signature-content requirement that the cloud signer cannot meet).

5.4 The onmicrosoft.com signing pattern (avoid)

Documented in the cloud-only M365 guide section 7 as the #1 cloud-only DMARC failure mode - the same failure mode applies in hybrid. If cloud signs under d=<tenant>.onmicrosoft.com instead of your custom domain, DMARC alignment fails regardless of what on-prem does. Fix: confirm both selector1._domainkey and selector2._domainkey CNAMEs resolve via:

dig +short cname selector1._domainkey.your-domain.com
dig +short cname selector2._domainkey.your-domain.com

Both must return selectorN-your-domain-com._domainkey.<tenant>.onmicrosoft.com. If they resolve but DKIM is still under onmicrosoft.com, the operator forgot to enable signing for the custom accepted domain - run Set-DkimSigningConfig -Identity your-domain.com -Enabled $true.

6. Step 3: ARC sealing the on-prem-to-cloud relay (RFC 8617)

ARC (Authenticated Received Chain, RFC 8617) is the standards-track mechanism for preserving original SPF / DKIM / DMARC verdicts across mail-relay hops that would otherwise break authentication. The canonical hybrid use case: a legitimate external message arrives at on-prem Exchange, on-prem evaluates SPF + DKIM + DMARC and captures verdicts, on-prem relays to Exchange Online for a cloud mailbox recipient, Exchange Online needs the original verdicts to apply correct anti-spoofing dispositions even though its own SPF / DKIM evaluation against the on-prem relay will fail.

6.1 ARC sealing on the on-prem side

On-prem Exchange does NOT include native ARC sealing - it must be installed via a third-party transport agent. The most common options:

  • Exclaimer Mail Signatures with ARC module: commercial product, integrates with Exchange Transport pipeline at the on-prem side.
  • The open-source ARC sealer for Exchange Transport: community-maintained PowerShell-based transport agent.
  • Defender for Office 365 ARC Sealer in trusted-intermediary mode: Microsoft's first-party tool when the on-prem path is configured as a known relay.

The ARC sealer needs the same five inputs as a DKIM signer: signing domain (your-domain.com), selector (convention: arc), RSA private key, canonicalisation mode (relaxed/relaxed recommended), and the list of headers to seal. Additionally, the ARC sealer reads the Authentication-Results header on the inbound message (which on-prem Exchange writes itself) and captures those verdicts into the ARC-Authentication-Results header it inserts.

After configuration, every inbound message that on-prem will relay outward or to cloud gains three new headers inserted in the order ARC-Seal, ARC-Message-Signature, ARC-Authentication-Results - the "ARC set" that downstream hops can verify and extend.

6.2 Trusted ARC Sealers on the cloud side

Exchange Online does NOT automatically trust ARC seals from arbitrary intermediaries - the operator must explicitly configure WHICH ARC-signing domains the cloud should trust. This is the Defender for Office 365 Trusted ARC Sealers feature:

Connect-ExchangeOnline
Set-ArcConfig -ArcTrustedSealers <your-onprem-fqdn>
Get-ArcConfig | Format-List

<your-onprem-fqdn> is the fully-qualified domain name of your on-prem Exchange ARC sealer - typically something like mail.your-domain.com. This is the domain in the d= field of the ARC-Seal header the on-prem sealer inserts.

Available to Defender for Office 365 Plan 1 or Plan 2 tenants (formerly Microsoft Defender for Office 365 P1/P2). E5 includes Plan 2 by default. After configuration, Exchange Online verifies the ARC seal on every inbound message; if the seal is valid AND the sealer is in the trusted list, the cloud re-evaluates DMARC using the verdicts the on-prem sealer recorded rather than its own (broken-by-relay) evaluation.

The portal-side equivalent: in the Microsoft 365 Defender portal (security.microsoft.com), navigate to Email & Collaboration > Policies & rules > Threat policies > Email authentication settings > ARC. Add the on-prem ARC-signing domain to the trusted-intermediaries list.

6.3 Verifying ARC across the relay

Send a test message from an external sender (a personal Gmail account works) to an on-prem-hosted mailbox in your hybrid org. After delivery, inspect the message source from Outlook or OWA. The headers should include:

  • An Authentication-Results header written by on-prem Exchange showing the original SPF / DKIM / DMARC verdicts from the external sender.
  • An ARC set (ARC-Seal, ARC-Message-Signature, ARC-Authentication-Results) inserted by the on-prem sealer, with d=<your-onprem-fqdn> and cv=none for the first hop.

Then send a test message from the same external sender to a CLOUD-hosted mailbox. The headers should additionally show that Exchange Online accepted the on-prem ARC seal and re-evaluated DMARC using the recorded verdicts - arc=pass in the cloud-side Authentication-Results header.

See the ARC (Authenticated Received Chain) explained pillar for the full protocol mechanics including ARC-Seal cv= chain validation, the i= instance numbering, and the recommended ARC signature scope.

7. Step 4: DMARC rollout in the hybrid context

With SPF, DKIM (one side, the other disabled), and ARC configured, the DMARC rollout itself follows the same five-phase pattern as cloud-only deployment - but takes 4-8 weeks at p=none instead of 2-6 weeks because more sender paths surface in aggregate reports.

7.1 Phase 1: Publish at p=none

_dmarc.your-domain.com.   IN TXT  "v=DMARC1; p=none; rua=mailto:dmarc-reports@your-domain.com; fo=1"

Wait 24-48 hours for first reports to arrive. Never skip from p=none to p=reject - the intermediate p=quarantine phase is where you discover legitimate senders that are still misaligned, and the cost of jumping straight to reject is the loss of legitimate mail.

7.2 Phase 2: Inventory hybrid sender paths

For hybrid topology, the sender-path inventory has more distinct entries than cloud-only. Typical entries surfaced in the first 4 weeks of aggregate reports:

  • Exchange Online direct: cloud mailbox users sending to external. Aligned if cloud-side DKIM is enabled for the custom domain.
  • Exchange on-prem direct: on-prem mailbox users sending to external when on-prem is the outbound boundary. Aligned if on-prem-side DKIM is configured under the custom domain.
  • On-prem to cloud relay (classic hybrid without CMT): on-prem mailbox user sends to external; mail traverses on-prem then cloud (or vice versa depending on Send Connector routing). Alignment depends on WHICH side signs.
  • CMT relay (CMT enabled): on-prem mailbox user sends to external; mail relays through cloud regardless. Aligned via cloud DKIM.
  • Application relay via on-prem: a CRM, ticketing system, or monitoring tool sends SMTP to on-prem Exchange as an anonymous relay client; on-prem relays externally. Alignment depends on whether the relay path signs DKIM for the custom domain (often it doesn't, surfacing as a high-volume DMARC failure pattern).
  • SaaS senders: SendGrid, Mailgun, SES, Mailchimp, Salesforce Marketing Cloud, etc. Each sender path needs its own DKIM CNAME delegation - see the DMARC for SaaS senders sibling page.
  • Edge Transport perimeter outbound: if Edge Transport is in use, the perimeter IPs appear as a distinct source. Alignment via whichever signer runs at the Edge Transport role.

Use DMARC Analyzer's dashboard to drill into each sender IP / sender domain combination. The per-reporter drill-down and per-source-IP drill-down views are the workhorses for hybrid inventory.

7.3 Phase 3: Advance to p=quarantine

After 4-8 weeks at p=none with every hybrid sender path inventoried and aligned (or quarantine-acceptable), advance:

_dmarc.your-domain.com.   IN TXT  "v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@your-domain.com; fo=1"

Common pattern: a monthly cron job in an on-prem application relay surfaces only in the first month after quarantine enforcement. Watch reports closely for the first 30 days.

7.4 Phase 4: Advance to p=reject

After 1-3 months at p=quarantine without unexpected failures:

_dmarc.your-domain.com.   IN TXT  "v=DMARC1; p=reject; rua=mailto:dmarc-reports@your-domain.com; fo=1"

The DMARC policy rollout guide covers the Week 0 → Week 26 timeline in detail - the same pattern applies in hybrid with elongated intervals.

7.5 Subdomain policy in hybrid

Hybrid environments commonly have subdomains routed differently than the apex (a marketing subdomain at a SaaS sender, a transactional subdomain at another ESP, an internal-only subdomain at on-prem). Use the DMARC sp= tag to set the subdomain policy explicitly:

_dmarc.your-domain.com.   IN TXT  "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@your-domain.com; adkim=r; aspf=r; fo=1"

Without sp=, subdomain policy inherits the p= value. The DMARC alignment guide covers the organizational-domain / PSL boundary in detail.

8. Send Connector and Default Frontend Connector pitfalls

Exchange transport connectors are the plumbing of hybrid mail flow. Four specific connector misconfigurations cause the most common hybrid DMARC failures.

8.1 The Default Frontend Connector DKIM strip

The Default Frontend Connector on Exchange Online is the receive connector that accepts anonymous SMTP from on-prem Exchange in a hybrid topology. Older Exchange Online behaviour - and certain misconfigurations in current builds - cause this connector to STRIP existing DKIM-Signature headers from incoming messages, so when Exchange Online relays the message externally it re-signs under <tenant>.onmicrosoft.com and the on-prem DKIM signature is lost.

Symptom: every hybrid-relayed outbound message fails DMARC at external receivers because the visible From: domain (your-domain.com) has no aligning DKIM signature - the on-prem signature got stripped, and the cloud signature is under onmicrosoft.com.

Mitigation:

  • Preserve SMTP headers explicitly:
    Connect-ExchangeOnline
    Get-InboundConnector | Where-Object ConnectorType -eq "OnPremises" | Format-List
    Set-InboundConnector -Identity "Inbound from your-onprem-exchange" -RequireTls $true
    # Note: PreserveSmtpHeaders is the parameter on the corresponding
    # inbound connector. Verify via Get-InboundConnector and adjust per
    # Microsoft's current Exchange Online PowerShell schema.
  • Migrate to CMT: eliminates the problem by ensuring on-prem doesn't sign in the first place - cloud is the only signer and there's no stripping step.
  • Use ARC sealing: even if the DKIM signature is stripped, the ARC chain preserves the original verdict so DMARC alignment can be reconstructed at the receiver. See section 6.

8.2 Send Connector relay loops

Occur when on-prem Send Connectors and cloud inbound connectors form a cycle. Symptom: NDR 5.4.6 Hop count exceeded after the message bounces between the two boundaries until Exchange transport detects the loop via Received-header count (default 20-30 in Exchange 2019; configurable via Set-TransportConfig).

Root causes:

  • Manually created Send Connectors on on-prem that duplicate the HCW- generated connector pair.
  • Accepted-domain DomainType set incorrectly: a domain marked Authoritative on BOTH sides causes each side to think it owns the domain and forward to the other.
  • Inbound connector on Exchange Online routing based on hostname patterns that overlap with internal addressing.
  • HCW interrupted mid-run leaving a partial connector configuration.

Prevention:

  1. Accept the HCW-generated connector pair as-is. Do not manually create overlapping Send Connectors.
  2. Confirm DomainType per accepted domain:
    Get-AcceptedDomain | Format-Table DomainName, DomainType, AddressBookEnabled
    Domains where the cloud is the canonical mailbox host should be Authoritative on the cloud side and InternalRelay on the on-prem side (or absent from on-prem accepted domains entirely).
  3. Verify outbound mail exits cleanly with Get-MessageTrace on Exchange Online and Get-MessageTrackingLog on on-prem - a single sample message should show exactly one cloud hop before delivery to the external recipient.

8.3 TLS requirements on hybrid connectors

The HCW-configured Send Connector pair uses mutual TLS authentication via the on-prem Exchange certificate. If the on-prem certificate expires or the common name changes, the TLS handshake fails and mail flow halts. Symptom: 451 4.7.500 Server busy or 421 4.4.2 Connection dropped due to ConnectionReset in transport logs.

Prevention: monitor the on-prem certificate via Get-ExchangeCertificate and schedule renewals at least 60 days before expiry. Update the cloud-side inbound connector's TlsSenderCertificateName parameter if the certificate CN changes.

8.4 Anonymous SMTP relay through on-prem

Common in hybrid environments where legacy applications (printers, ticketing systems, CRM connectors, monitoring tools) authenticate as anonymous SMTP clients to on-prem Exchange and rely on on-prem to relay externally. The on-prem Receive Connector that accepts these clients usually has ExternalAuthoritative permission group granted, allowing relay without authentication.

DMARC implication: messages from anonymous relay clients arrive at on-prem WITHOUT pre-existing DKIM signatures. If on-prem is the outbound boundary AND on-prem signs DKIM, the messages get signed and pass DMARC. If on-prem doesn't sign (or if you're using cloud-only signing with CMT), the messages relay externally unsigned and fail DMARC.

Mitigation: identify every anonymous relay client (typical inventory: a few dozen items at a small enterprise, a few hundred at large) via Get-ReceiveConnector inspection and message-tracking logs. For each client, decide: (a) reconfigure to authenticate as a mailbox user and route through Exchange Online (cleanest for DMARC), (b) migrate to a SaaS sender via API integration, or (c) accept that on-prem signs all anonymous-relayed mail and configure DKIM signing on-prem.

9. Hybrid-specific gotchas

  • Public folders on on-prem: if you still have public folders hosted on on-prem Exchange (a common long-tail in hybrid environments where modern Outlook public-folder migration to cloud has not completed), they generate outbound mail when configured for email delivery. Public-folder mail flows through the same Send Connectors as regular mailbox mail - if the on-prem outbound path doesn't sign DKIM, public-folder outbound fails DMARC.
  • Microsoft 365 Direct Send: a feature that lets applications send SMTP directly to your-domain-com.mail.protection.outlook.com from any internet IP without authentication, as long as the recipient domain is hosted in the same tenant. Common in hybrid for scanner-to-email and other appliance outbound. Direct Send bypasses cloud-side DKIM signing - messages leave the cloud unsigned. If you rely on Direct Send for any sender path, those messages must either be routed through an alternate authenticated path or accepted as DMARC failures.
  • SMTP AUTH submission via the cloud: applications that authenticate as a mailbox user and submit via Office 365 SMTP AUTH (smtp.office365.com:587 with TLS) get the same cloud-side DKIM signing as Outlook clients - no special configuration needed. Prefer this over Direct Send and anonymous on-prem relay for new application deployments.
  • Mailbox migration during DMARC rollout: moving a batch of mailboxes from on-prem to cloud (or vice versa) changes the outbound path of every message those users send. If you're in the middle of DMARC rollout, plan the migration so the moved mailboxes all use the SAME side's DKIM signing as before - otherwise DMARC reports show a spike of alignment failures from the moved batch on day one of the move.
  • The on-prem Authentication-Results header domain: on-prem Exchange writes its own Authentication-Results header tagged with the on-prem FQDN, not the public domain. If the ARC sealer reads this header to capture original verdicts, ensure the FQDN it expects matches the on-prem Exchange Authentication- Results identifier (configurable via Set-TransportConfig -Identity parameters).
  • Defender for Office 365 license dependency: the Trusted ARC Sealers feature requires Defender for Office 365 Plan 1 or Plan 2 (formerly known as Microsoft Defender for Office 365 P1/P2). E5 includes Plan 2 by default. Without Defender, ARC sealing on the on-prem side is wasted - the cloud will not trust the seal.
  • HCW re-run side effects: re-running the Hybrid Configuration Wizard regenerates the Send Connector pair and may revert manual customisations made via Set-SendConnector. If you've customised connectors post-HCW, document the changes so you can re-apply them after each HCW run.
  • Exchange 2013 end-of-life: Exchange 2013 reached end-of-support in April 2023 and cannot host a modern hybrid topology - Microsoft removed support for HCW against Exchange 2013 in late 2023. If your on-prem Exchange is still 2013, the hybrid topology is unsupportable and you must either migrate fully to Exchange Online or upgrade on-prem to Exchange 2016 or 2019 first.

10. Common hybrid + DMARC mistakes

  1. Both sides sign under the same custom domain: the dual-signer problem documented in section 5.3. Receivers iterate non-deterministically across the two signatures and DMARC pass/fail becomes a coin flip. Fix: pick ONE side and disable signing on the other.
  2. Forgetting to add the on-prem outbound NAT range to SPF: classic hybrid where SPF lists only include:spf.protection.outlook.com but on-prem also delivers outbound directly. Outbound mail from on-prem fails SPF at external receivers (the connecting IP is your on-prem perimeter NAT pool, which is not in spf.protection.outlook.com). Fix: add the on-prem range via ip4: or migrate to CMT.
  3. Exceeding the SPF 10-DNS-lookup limit: hybrid environments that also use multiple SaaS senders quickly hit the limit. Symptom: SPF returns permerror and DMARC fails. Fix: migrate to CMT to drop on-prem from SPF, consolidate senders, or delegate high-volume senders to subdomains.
  4. Not configuring Trusted ARC Sealers when on-prem signs ARC: the on-prem ARC seal gets inserted but Exchange Online does not trust the sealer, so the seal is effectively ignored. Spoofed mail forwarded from on-prem to cloud still gets the wrong disposition. Fix: run Set-ArcConfig -ArcTrustedSealers <your-onprem-fqdn> on the cloud side.
  5. Setting DomainType to Authoritative on BOTH sides: causes Send Connector relay loops (NDR 5.4.6). Fix: exactly one side is Authoritative; the other is InternalRelay or absent from accepted domains.
  6. Trusting MX changes to propagate instantly: hybrid migrations often involve changing the MX record from on-prem to cloud. DNS propagation can take 24-48 hours per recursive resolver TTL. During the window, mail arrives at BOTH MX targets. If you decommission the old target before propagation completes, the inbound mail to the old target is bounced.
  7. Anonymous SMTP relay clients that the operator forgot about: a legacy application from 2015 still relays through on-prem Exchange anonymously and nobody remembers it exists. Found only in DMARC aggregate reports when the cloud-only DKIM enforcement breaks it. Fix: inventory before rolling out DMARC enforcement; use the per-reporter drill-down in the DMARC Analyzer dashboard to find them.
  8. Skipping p=quarantine: the keystone safety guardrail. Never skip from p=none to p=reject. Hybrid environments have more sender paths than cloud-only and skipping quarantine guarantees operational pain.
  9. Trusting CMT to migrate seamlessly: enabling CMT immediately changes outbound routing for every on-prem mailbox. SPF must already be configured for cloud-only outbound BEFORE you enable CMT, otherwise outbound mail bypasses on-prem's already-authorised IP set and starts failing SPF (cloud is in SPF via the include, so this is usually fine - but verify with a test message before the cutover).
  10. Defender for Office 365 anti-spoof policy collisions: Defender's "spoof intelligence" feature flags messages that fail DMARC implicitly even before your DMARC policy reaches p=reject. If a legitimate sender path is misaligned but flagged by spoof intelligence, the message gets quarantined even under your p=none DMARC. Tune via the Defender portal anti-spoof policy.

11. Migration paths: from classic hybrid to cloud-only

Most hybrid Exchange deployments evolve toward fully-cloud-routed mail flow (Exchange Online as the single outbound boundary, on-prem retained only for legacy components like public folders, journaling, or geographic compliance). The recommended migration sequence minimises operational risk by moving in discrete, reversible phases.

11.1 Phase A: Classic hybrid (baseline)

The starting state. Mail flow is split between on-prem and cloud. Both sides can deliver outbound directly. DKIM signing happens on whichever side handles a given message. ARC sealing preserves verdicts across the on-prem-to-cloud relay.

Operational focus: get DMARC to p=quarantine at minimum, inventory every sender path, document every anonymous relay client.

11.2 Phase B: Centralized Mail Transport (CMT)

Enable CMT to route all outbound through Exchange Online while keeping on-prem mailboxes operational. After CMT:

  • SPF simplifies to include:spf.protection.outlook.com only (no on-prem ip4: ranges).
  • DKIM signing happens on the cloud side only. Disable any on-prem DKIM transport agent.
  • ARC sealing for outbound becomes optional - the on-prem-to-cloud relay is inside the trust boundary.
  • The dual-signer problem is eliminated by construction.

Configuration:

Connect-ExchangeOnline
Set-HybridConfiguration -CentralizedTransportEnabled $true
Get-HybridConfiguration | Format-List Features

Trade-off: every outbound message round-trips through the cloud regardless of recipient location. Bandwidth and latency increase. For most enterprises this is invisible; for high-volume on-prem-to-on-prem inter-organisation flows it can be a measurable cost.

11.3 Phase C: Migrate remaining mailboxes to cloud

With CMT handling outbound routing, the on-prem mailboxes themselves are the next migration target. Use New- MoveRequest, batch moves via the Exchange Online Migration UI, or third-party migration tools (Quest, BitTitan, CodeTwo) to move mailboxes in batches. DMARC implications: minimal, because CMT already routes outbound through cloud regardless of where the mailbox lives.

11.4 Phase D: Decommission on-prem Exchange

The endgame. With all mailboxes migrated, on-prem Exchange becomes a candidate for decommission. Tasks:

  1. Migrate any remaining public folders to cloud (or to a SharePoint / Teams equivalent).
  2. Retire on-prem journaling - replace with Microsoft Purview compliance features or a third-party compliance archive.
  3. Reconfigure every anonymous SMTP relay client to authenticate to Exchange Online via SMTP AUTH or migrate to a SaaS sender.
  4. Run the Hybrid Configuration Wizard one last time in "remove hybrid configuration" mode to deconfigure the connector pair and federation trust.
  5. Update MX records to point only at your-domain-com.mail.protection.outlook.com. Remove the on-prem MX.
  6. Simplify SPF to remove on-prem ip4: ranges (already done in CMT phase but re-verify).
  7. Decommission on-prem Exchange servers per Microsoft's documented decommission procedure.

11.5 Phase E: Long-term hybrid (when on-prem stays)

Some organisations have hard requirements to keep on-prem Exchange indefinitely: regulatory compliance requiring on-prem mail flow for certain domains, geographic data-sovereignty constraints (jurisdictions where Microsoft 365 is not available), or operational integration with legacy systems that only speak on-prem Exchange APIs. For these organisations, the CMT topology is the recommended long-term steady state - it gives the operational simplicity of cloud-only DMARC while keeping on-prem Exchange operational.

12. Troubleshooting hybrid DMARC failures

12.1 Identifying which side a message left from

The fastest hybrid debugging step: determine WHICH side of hybrid a failing message left through. Inspect the source-IP column in the DMARC aggregate report (or the per-source-IP drill-down in DMARC Analyzer):

  • If the source IP is in Microsoft's outbound range (resolves under protection.outlook.com rDNS or matches the IPs in spf.protection.outlook.com): the message left through Exchange Online.
  • If the source IP is your on-prem perimeter NAT pool: the message left through on-prem Exchange.
  • If the source IP is a SaaS sender (SendGrid, Mailgun, etc.): the message was sent by a SaaS integration, not through your hybrid Exchange topology.

12.2 SPF failing for one side

Symptom: aggregate reports show SPF pass for cloud-source messages but SPF fail for on-prem-source messages (or vice versa). Cause: SPF record lists only one side's IPs. Fix: add the missing IP set or migrate to CMT.

12.3 DKIM failing for one side

Symptom: aggregate reports show DKIM pass for cloud-source messages but DKIM fail for on-prem-source messages. Cause: cloud signs DKIM but on-prem does not. Fix: configure on-prem DKIM signing OR migrate to CMT so on-prem doesn't deliver outbound directly OR accept that on-prem-source messages rely on SPF-only alignment (DMARC passes if SPF passes and aligns).

12.4 ARC seal not trusted by cloud

Symptom: on-prem ARC sealer inserts the ARC set but Exchange Online still re-evaluates DMARC using its own (broken-by-relay) verdicts. Cause: the on-prem ARC-signing domain is not in the cloud's trusted-sealers list. Fix:

Connect-ExchangeOnline
Get-ArcConfig | Format-List ArcTrustedSealers
Set-ArcConfig -ArcTrustedSealers <your-onprem-fqdn>

12.5 NDR 5.4.6 (hop count exceeded)

Send Connector relay loop. Causes and fixes documented in section 8.2. Quick diagnostic:

Get-MessageTrace -SenderAddress test@your-domain.com -StartDate (Get-Date).AddHours(-1) -EndDate (Get-Date)
# On the on-prem side:
Get-MessageTrackingLog -Sender test@your-domain.com -Start (Get-Date).AddHours(-1) -End (Get-Date) | Format-Table Timestamp, Sender, Recipients, EventId

Trace a sample message and confirm it exits to the external receiver after exactly ONE cloud hop. Multiple cloud hops = configuration drift.

12.6 Direct Send messages bypassing DKIM

Symptom: a subset of messages from your domain consistently fail DMARC at external receivers, the source-IP is NOT your hybrid Exchange topology, and the user-agent or application name suggests an appliance (multifunction printer, scanner, monitoring tool). Cause: the appliance is using M365 Direct Send (smtp to your-domain-com.mail.protection.outlook.com) which bypasses tenant-side DKIM signing. Fix: reconfigure the appliance to authenticate via SMTP AUTH to smtp.office365.com:587 using a service-account mailbox - this routes the message through the cloud-DKIM-signing path. Alternative: relay through on-prem Exchange (if on-prem signs) or through a SaaS transactional sender configured for your domain.

12.7 Using DMARC Analyzer for hybrid troubleshooting

The DMARC Analyzer dashboard surfaces every sender IP / sender domain combination present in your aggregate reports. For hybrid troubleshooting, the key views are:

  • Source IP drill-down: per-IP breakdown showing which IPs are cloud, which are on-prem, and which are SaaS senders. Filter for DMARC failures to surface misaligned senders.
  • Reporter drill-down: per-receiver breakdown. Google and Microsoft each report on different aggregate cadences and report coverage; the reporter view helps separate "my domain doesn't send to this receiver" from "this receiver isn't sending reports".
  • Per-report records view: drill into a single report file to see message-level disposition, alignment, and Authentication- Results data. The richest data for diagnosing a specific failure pattern.
  • Email Header Analyzer: paste the full headers of a failing message and see the SPF, DKIM, DMARC, and ARC verdict breakdown. Use this when a user forwards a "this should have worked" example.

13. Frequently asked questions

How do I set up DMARC on a hybrid Exchange topology?
Four steps. (1) Choose ONE outbound boundary. The cleanest hybrid DMARC story has Exchange Online as the single outbound boundary via Centralized Mail Transport (CMT) - on-prem servers relay through the cloud, the cloud signs DKIM under your custom domain, and DMARC alignment is unambiguous. (2) Publish SPF with include:spf.protection.outlook.com PLUS your on-prem outbound IP set if on-prem still delivers directly. Stay under the 10-DNS-lookup limit. (3) Configure DKIM signing on whichever side is the outbound boundary. If CMT, only Exchange Online signs. If classic hybrid with on-prem outbound, install an on-prem DKIM signer and publish ARC seals. (4) Publish DMARC at p=none and advance through p=quarantine to p=reject over 4-8 weeks.
What is Centralized Mail Transport in a hybrid Exchange topology?
Centralized Mail Transport (CMT) is a Microsoft 365 feature that routes outbound mail from on-prem Exchange THROUGH Exchange Online before external delivery. From a DMARC alignment perspective, CMT is the most operator-friendly hybrid topology: only Exchange Online needs to DKIM-sign mail, only Exchange Online needs to be in SPF, and the relay leg from on-prem to cloud happens inside the trusted boundary so ARC sealing across that hop is optional. Enable via Set-HybridConfiguration -CentralizedTransportEnabled $true.
What is the dual-signer DKIM problem in hybrid Exchange?
Occurs when BOTH Exchange on-prem and Exchange Online attempt to DKIM-sign a single outbound message - typically under different d= domains - causing DMARC alignment ambiguity at the receiver. Most common manifestation: on-prem has an Exclaimer / GFI / Zix DKIM transport agent signing under d=your-domain.com, the message relays to Exchange Online which ALSO signs under d=<tenant>.onmicrosoft.com. Receivers iterate non-deterministically across signatures. Fix: choose ONE signing side and disable the other.
How does ARC sealing work in a hybrid Exchange relay?
ARC (RFC 8617) lets each hop along the mail relay record the SPF / DKIM / DMARC verdicts it observed and cryptographically seal them so the final receiver can reconstruct the original verdicts even after intermediate header modifications. In hybrid: on-prem evaluates an inbound external message, captures verdicts, relays to Exchange Online with an ARC seal. Exchange Online verifies the seal, trusts on-prem as a configured intermediary via Defender Trusted ARC Sealers (Set-ArcConfig -ArcTrustedSealers), and applies disposition based on the recorded verdicts.
What is the Default Frontend Connector DKIM strip problem?
Older Exchange Online behaviour - and certain misconfigurations - cause the Default Frontend Connector that accepts on-prem SMTP to STRIP existing DKIM-Signature headers before transport, so when Exchange Online relays the message externally it re-signs under <tenant>.onmicrosoft.com and the operator's on-prem DKIM signature is lost. Mitigation: configure PreserveSmtpHeaders on the matching inbound connector, migrate to CMT (so on-prem never signs), or use ARC sealing to preserve the original DKIM verdict independently of header survival.
How do I avoid Send Connector relay loops in hybrid Exchange?
Occur when on-prem Send Connectors and cloud inbound connectors form a cycle. Symptom: NDR 5.4.6 "Hop count exceeded". Prevention: accept the HCW-generated connector pair as-is, set accepted-domain DomainType correctly (Authoritative on the canonical side, InternalRelay on the other), verify with Get-MessageTrace that a sampled outbound message exits cleanly after exactly one cloud hop, and monitor Defender portal Mail Flow > Message Trace for unexpected repeated hops.
Should I keep on-prem Exchange or move fully to Exchange Online for DMARC?
From a DMARC simplicity perspective, fully cloud-routed mail flow is unambiguously preferable: single DKIM signing side, single SPF include, uniform Defender anti-phishing application. That said, fully eliminating on-prem Exchange is a multi-quarter project. Reasons to keep hybrid include public-folder migration not yet complete, on-prem journaling for legal hold, compliance frameworks requiring on-prem mail flow, or geographic data-sovereignty constraints. If you must keep hybrid, the recommended target is Centralized Mail Transport (CMT).
What does the Hybrid Configuration Wizard configure for DMARC?
HCW configures the bidirectional Send Connector / Receive Connector pair, the inbound connector on Exchange Online that recognises mail from your on-prem org as trusted, and accepted-domain registration on both sides. HCW does NOT configure DKIM signing (run Set-DkimSigningConfig manually), DMARC TXT records, on-prem ARC sealing, or Trusted ARC Sealers on the cloud side. The HCW configures the plumbing; DMARC alignment requires post-HCW work.

Deploy DMARC for your hybrid Exchange topology now

DMARC Analyzer parses the daily aggregate reports Microsoft, Google, Yahoo, and other receivers send to your rua= mailbox, deduplicates by report_id + org_name, and surfaces the per-sender / per-IP / per-day breakdown needed to drive the hybrid sender-path inventory. Live DNS verification for every SPF / DKIM / DMARC record on your domain runs through includes/DnsChecker.php; the Email Header Analyzer at header_analyzer.php diagnoses individual message failures by parsing the full Authentication-Results stack via includes/EmailHeaderParser.php.

Sign up — Free plan Check my hybrid Exchange domain