As enterprise email systems enforce strict DMARC p=reject policies across Microsoft 365, Google Workspace, and major enterprise security gateways, a long-standing architectural challenge has reached critical priority: indirect mail flow.
When an email passes through intermediate systems—such as mailing lists, CRM relays, helpdesk ticketing platforms, or multi-tenant email security gateways (e.g., Proofpoint, Mimecast, Cisco CES)—the message headers and body are frequently modified. This breaks SPF (due to relay IP mismatch) and DKIM (due to footer additions or body modification), causing the receiving mail server to fail DMARC and bounce legitimate emails.
Authenticated Received Chain (ARC), defined in RFC 8617, provides the cryptographic chain of custody needed to solve this problem. In this guide, we dive into how ARC works under the hood, why DMARC needs it, and how modern MTAs evaluate ARC seals.
The Core Problem: Why Indirect Mail Flow Breaks DMARC
Under standard DMARC evaluation, a message passes authentication if either SPF or DKIM passes with domain alignment against the RFC 5322 From: header domain.
- SPF aligns with
contoso.com - DKIM signature valid & aligned
- DMARC Status: PASS
- Re-sends from new IP → SPF fails
- Appends unsubscribe footer → DKIM fails
- Envelope modified
- SPF: Fail (Relay IP not in SPF)
- DKIM: Fail (Hash mismatch)
- DMARC
p=reject: BOUNCED!
Why SRS Only Solves Half the Problem
The Sender Rewriting Scheme (SRS) rewrites the5321.MailFrom (envelope sender) to match the forwarding server's domain, preserving SPF. However:
- SRS does not fix DKIM if the body or subject was modified.
- DMARC requires SPF to align with the
5322.From(header sender), not the envelope sender. Therefore, SRS alone cannot achieve DMARC alignment if DKIM was stripped or broken.
How ARC Operates: Cryptographic Chain of Custody
ARC solves this by having each participating intermediary record the authentication state it observed at the time of receipt and sign that record with its own cryptographic key before forwarding.
i=<seq>: Instance sequence number- Records SPF, DKIM, and DMARC verdicts
- Captures raw authentication details
- Signs RFC 5322 headers & body hash
- Analogous to DKIM for this specific hop
- Protects content integrity across hops
- Signs all prior ARC-Seal headers
cv=none|pass|failchain validation status- Prevents tampering or insertion in transit
The Three ARC Headers Explained
For each hop i:
ARC-Authentication-Results (AAR):
The intermediate MTA runs standard authentication checks upon receiving the message and logs the result:
ARC-Authentication-Results: i=1; mx.microsoft.com 1;
spf=pass smtp.mailfrom=contoso.com;
dkim=pass header.d=contoso.com;
dmarc=pass action=none header.from=contoso.com;
arc=none
ARC-Message-Signature (AMS):
The MTA hashes the body and selected headers, signing them using its private domain key (similar to a standard DKIM signature):
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;
s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type;
bh=f2X...; b=K9L...
ARC-Seal (AS):
This is the critical header that locks the chain together. It binds all previous ARC-Seal headers together with the current instance's cv (Chain Validation) state:
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
b=W1q...
Chain Validation (cv) Logic: How Receivers Validate ARC
When a destination MTA evaluates an inbound email containing ARC headers, it follows a strict RFC 8617 verification routine:
- Count the Instances: The sequence
i=1, 2, ... Nmust be strictly contiguous. If any sequence number is skipped or duplicated, the chain is broken (cv=fail). - Validate Signatures:
- Verify every ARC-Seal signature from i=1 to i=N.
- Verify the most recent ARC-Message-Signature (i=N).
- Inspect the Chain Validation Flag (
cv):
- For i=1: cv must equal none.
- For all i > 1: cv must equal pass.
- If any hop reports cv=fail, all subsequent hops and the receiving MTA treat the entire chain as unverified.
Does ARC Override DMARC Automatically?
Key Rule: An ARC pass does not grant automatic entry into an inbox by itself.
RFC 8617 explicitly leaves trust to the receiving system's local policy. If ARC blindly overrode DMARC, an attacker could set up their own rogue server (attacker.com), sign an ARC header asserting dmarc=pass, and bypass SPF/DKIM protections on any target domain.
To prevent this exploit:
- Major Providers (Microsoft, Google): Combine ARC with extensive domain sender reputation metrics.
- Enterprise Tenants: Use Trusted ARC Sealers (AAR list). In Microsoft 365, you explicitly specify which third-party intermediaries (e.g., your inbound email security gateway, partner relays) are trusted to override DMARC.
Example in Microsoft 365:
When a trusted third-party security service modifies inbound messages before handing them off to Exchange Online Protection (EOP), configure its domain as a trusted ARC sealer:# Connect to Exchange Online PowerShell
Connect-ExchangeOnline
# Inspect current Trusted ARC Sealers
Get-ArcConfig
# Add trusted intermediary domains (e.g., Proofpoint or Mimecast relays)
Set-ArcConfig -Identity Default -ArcTrustedSealers @{Add="proofpoint.com","mimecast.com"}
When EOP processes an email where DMARC fails, but the seal matches an entry in ArcTrustedSealers and the chain is valid, EOP issues a composite authentication pass:
Authentication-Results: ... compauth=pass reason=130
Comparing Email Authentication Technologies
| Protocol | RFC | What It Validates | Weakness | Role in Modern Mail Flow |
|---|---|---|---|---|
| SPF | RFC 7208 | Sending Server IP vs DNS | Fails on forwarding; no alignment with 5322.From | Base envelope authentication |
| DKIM | RFC 6376 | Cryptographic signature over body + headers | Breaks if body, footer, or subject is altered | Base message content integrity |
| DMARC | RFC 7489 | Alignment of SPF/DKIM to visible From: header | Rejects legitimate forwarded/mailing-list mail | Policy enforcement & reporting |
| ARC | RFC 8617 | Preserves historical SPF/DKIM/DMARC verdicts across hops | Relies on recipient trust / reputation of sealers | Custody validation for indirect mail |
Summary Checklist for IT Administrators
- Deploy DMARC
p=quarantineorp=reject: Do not let fear of forwarding breakage hold back your domain security. - Ensure Your Relays Support ARC: If your organization operates mailing lists, support ticketing systems, or outbound security proxies, ensure your software is configured to generate ARC sets (
AAR,AMS,AS). - Configure Trusted ARC Sealers: If you route external mail through a third-party security gateway before Microsoft 365, add the gateway's signing domain to Exchange Online via
Set-ArcConfig. - Audit Message Headers: Use native message detail inspectors or PowerShell header analyzers to ensure ARC chains maintain
cv=passstatus across all routing hops.