ARC (Authenticated Received Chain) Explained: RFC 8617, ARC-Seal, AMS, AAR, Chain Validation, and the Forwarding Survival Story

The complete reference for ARC (Authenticated Received Chain, RFC 8617): the email-authentication standard that preserves SPF / DKIM / DMARC results across forwarding hops. Covers the three ARC headers (ARC-Authentication-Results, ARC-Message-Signature, ARC-Seal), the chain-validation algorithm with cv= states, receiver support across Google Workspace, Microsoft 365, Yahoo, Fastmail, and major mailing-list platforms, the trust model that gates local-policy override, and worked multi-hop examples. The standard that makes DMARC at p=reject operationally feasible without silently dropping legitimate mailing-list mail.

This reference is provided in English. ARC is specified in English-language RFCs and the canonical syntax (ARC-Seal:, ARC-Message-Signature:, ARC-Authentication-Results:, cv=pass, i=N, c=relaxed/relaxed, AAR, AMS, AS) does not translate. We keep the body in the source language so technical terms remain consistent with the specifications.

TL;DR

  • ARC (Authenticated Received Chain) is the email-authentication standard that preserves the original SPF / DKIM / DMARC results across forwarding hops. Defined in RFC 8617.
  • The problem ARC solves: forwarding (mailing lists, .forward redirects, security gateways) typically rewrites the envelope MAIL FROM and may modify headers — both of which break SPF and DKIM at the downstream receiver. Without ARC, DMARC enforcement would reject legitimate forwarded mail.
  • ARC is the only email-authentication standard with NO DNS record — the protocol consists entirely of three per- message header fields plus a chain-validation algorithm at the receiver. The signing key IS published in DNS (DKIM-style at <selector>._domainkey.<domain>), but no _arc.<domain> record exists.
  • The three ARC headers: AAR (ARC-Authentication-Results) — snapshot of the receiving hop's verdict, AMS (ARC-Message-Signature) — DKIM-style signature over the message as it leaves this hop, AS (ARC-Seal) — DKIM-style signature over AAR + AMS + every prior ARC-Seal, cryptographically chaining the hops.
  • The chain-validation state lives in the cv= tag of the most recent ARC-Seal: cv=pass (every hop validated cleanly), cv=fail (at least one hop broke), or cv=none (this is the first hop). Only cv=pass chains are usable for local-policy override.
  • ARC is added by forwarders, not by sending domains. As a domain owner publishing SPF + DKIM + DMARC, you do NOT configure ARC on your domain. You only configure ARC when you OPERATE a forwarder (mailing list, security gateway, transactional relay).
  • Receiver support is broad: Google (Gmail / Workspace) since 2017, Microsoft (Outlook / Office 365) since 2021, Yahoo, Fastmail, and many smaller providers. ARC has reached the deployment threshold where DMARC at p=reject is operationally feasible without silently dropping legitimate mailing-list mail.
  • DMARC Analyzer's includes/EmailHeaderParser.php recognises every Authentication-Results family header (including ARC-Authentication-Results) so operators can inspect a forwarded message's chain via the Email Header Analyzer.

1. What is ARC?

ARC (Authenticated Received Chain) is an email-authentication protocol defined in RFC 8617 that preserves the original SPF / DKIM / DMARC authentication results across forwarding hops. When a message is forwarded — by a mailing list, a .forward redirect, a security gateway, or any other intermediate handler — the forwarder adds three header fields that cryptographically attest to the authentication state the forwarder observed at its hop. A downstream receiver validates the chain and may grant local-policy override based on a trusted upstream pass, even when SPF and DKIM break at the current hop.

ARC is unique in the email-authentication ecosystem in three ways:

  • No DNS record at the protected domain. Every other standard (SPF / DKIM / DMARC / BIMI / MTA-STS / TLS-RPT / CAA) requires a DNS record at a well-known location. ARC requires only per-message headers; the signing key is published as a DKIM-style record under the forwarder's own domain, not the protected sender's.
  • Added by intermediaries, not senders. The original sender never adds ARC headers. ARC is the responsibility of every party in the FORWARDING path. The sender's job ends with SPF + DKIM + DMARC; the forwarder's job begins with adding ARC.
  • Cumulative across hops. Unlike DKIM (one signature, anchored to the sender) or SPF (one evaluation per hop with no history), ARC builds a CHAIN — every hop appends a new ARC-Seal that cryptographically commits to every prior hop's verdict, so the chain itself cannot be silently rewritten by a malicious intermediate.

ARC's place in the email-authentication ecosystem is auxiliary but operationally critical: without ARC, DMARC enforcement at p=quarantine or p=reject would silently break every mailing list, every .forward redirect, and every security-gateway pipeline. ARC is the standard that makes DMARC enforcement coexistent with the realities of how email actually flows.

2. Why ARC exists: the forwarding problem

A message that traverses a forwarder typically breaks two of the three core authentication-trio results:

  • SPF breaks because the forwarder typically rewrites the envelope MAIL FROM. A message originally sent from alice@university.example via MAIL FROM alice@university.example arriving at list@mailman.example gets forwarded out with MAIL FROM bounces@mailman.example. The downstream receiver's SPF check evaluates the new envelope (mailman.example) — the original university.example SPF record is no longer relevant.
  • DKIM may break if the forwarder modifies headers or body. A mailing list adding a List-Id header, prepending [list-name] to the Subject, or appending an unsubscribe footer all invalidate the original DKIM signature. Strict canonicalization (c=simple/simple) breaks on any whitespace change; relaxed (c=relaxed/relaxed) tolerates more but still breaks on body modification.
  • DMARC fails because DMARC requires at least one of SPF or DKIM to pass AND align with the From: header. With SPF on the new envelope and DKIM broken, DMARC at the receiver returns fail — triggering the policy (p=quarantine → spam folder, p=reject → SMTP bounce).

Pre-ARC, three workarounds existed:

  • From: rewriting. The forwarder replaces the From: header with its own domain (From: alice via list <list@mailman.example>). DMARC now evaluates against mailman.example which the forwarder controls. But From: rewriting breaks user trust signals (the recipient sees the forwarder, not the original sender) and breaks reply-by-name in many mail clients.
  • DMARC at p=none forever. The domain owner never advances past reporting-only, leaving spoofing wide open in exchange for forwarding survival. Operationally unacceptable for security-conscious senders.
  • Special-case allowlisting. Downstream receivers maintain manual lists of trusted forwarders and skip DMARC evaluation for those entities. Doesn't scale and is brittle.

ARC is the standardised fourth option: the forwarder cryptographically attests to the authentication state IT observed, the downstream receiver validates the chain, and legitimate forwarded mail flows even under strict DMARC enforcement at the original sender.

3. How ARC works: the chain mechanism

  1. The original sender publishes SPF + DKIM + DMARC and sends the message normally. The sender does NOT add any ARC headers.
  2. The first forwarder receives the message and validates SPF / DKIM / DMARC normally. The forwarder then adds three new headers stamped with i=1:
    • ARC-Authentication-Results: i=1; ... — captures the forwarder's verdict (the same content the forwarder would put in its Authentication-Results header per RFC 8601).
    • ARC-Message-Signature: i=1; ... — DKIM-style signature over the message headers and body as the forwarder passes them on, anchored to the forwarder's DKIM key.
    • ARC-Seal: i=1; cv=none; ... — DKIM-style signature over the AAR + AMS at this hop. The cv=none indicates this is the first hop and no prior chain exists.
  3. The second forwarder (if any) receives the message including the first hop's ARC headers. It validates the existing chain (the prior ARC-Seal + ARC-Message-Signature), adds its own three headers stamped with i=2, and the cv= tag in its ARC-Seal becomes cv=pass if the prior chain validated cleanly, or cv=fail if it did not. The ARC-Seal at i=2 signs over ALL prior ARC headers (i=1 AAR + i=1 AMS + i=1 AS) PLUS the new AAR + AMS at i=2.
  4. Each subsequent forwarder (i=3, i=4, ...) repeats step 3, building an ever-longer chain. RFC 8617 §4.2.1 caps the chain at 50 hops; practical chains rarely exceed 3.
  5. The final receiver validates the entire chain by starting at the highest i= value and walking backwards. Each ARC-Seal must validate against its signer's DKIM key; the most recent ARC-Message-Signature must validate against the message as received (older ones usually stop matching after a later modification, and that does not invalidate the chain). If every link in the chain validates AND every prior cv= was pass or none, the chain has integrity. The receiver may then apply a local policy granting delivery override based on the trusted upstream DMARC pass.

The crucial property: an intermediate forwarder that wanted to lie about an earlier hop's verdict cannot — the prior ARC-Seal is cryptographically bound to its own AAR + AMS content. Any tampering with prior hops breaks the chain at validation time. The chain is only as trustworthy as its signers, but the chain itself cannot be silently rewritten.

4. The three ARC headers

The keystone reference for this page. Every ARC-aware forwarder adds exactly three header fields per hop.

Header Role Signed by Content
ARC-Authentication-Results
(AAR)
Snapshot of the receiving party's SPF / DKIM / DMARC verdict at this hop. Plain header — NOT a signed cryptographic field on its own. Protected indirectly via the AS (ARC-Seal) signature. The same content the receiver would put in a normal Authentication-Results: header per RFC 8601, prefixed with the hop instance identifier (i=N).
ARC-Message-Signature
(AMS)
DKIM-style signature over the message headers and body as they leave this hop. The hop's DKIM key (d= + s= tags identify the domain + selector; the key is published as a DKIM-style TXT record at <selector>._domainkey.<domain>). Tags identical to DKIM-Signature: i=N, a=rsa-sha256, b=<sig>, bh=<body-hash>, c=relaxed/relaxed, d=<domain>, s=<selector>, h=<header-list>.
ARC-Seal
(AS)
DKIM-style signature over the AAR + AMS at this hop PLUS every prior ARC-Seal. The cryptographic chain-binding mechanism. The hop's DKIM key (same as AMS, typically the same selector). Tags: i=N (hop number), cv=pass|fail|none (chain validation result observed by THIS hop), a=rsa-sha256, b=<sig>, d=, s=, t=<timestamp>. NO bh= tag — Seal does not sign body, only header chain.

The three headers together form one ARC-Set per hop. RFC 8617 §4 defines the exact serialisation. A 3-hop chain has 9 ARC headers (3 sets × 3 fields).

5. ARC chain validation — the cv= states

The chain-validation state lives in the cv= tag of each ARC-Seal. Three values are defined by RFC 8617 §4.4:

  • cv=none — This is the first hop in the chain (i=1). No prior chain exists, nothing to validate. cv=none only appears at i=1; any non-first ARC-Seal with cv=none is malformed and treated as cv=fail.
  • cv=pass — The sealer validated the chain it found on the message: the structure is correct, the most recent ARC-Message-Signature matches the message, every ARC-Seal validated cleanly against its signer's DKIM key, AND the prior chain's own cv= was either pass (intermediate hops) or none (first hop). The chain has integrity from i=1 through the current hop.
  • cv=fail — Validation of the chain found on the message failed. Once cv=fail appears in the chain, it cannot be continued or repaired (RFC 8617 §5.1.3): a sealer that finds the most recent seal at cv=fail adds no further ARC Set. Receivers MUST treat a message with such a chain like a message with no ARC at all, so cv=fail never supports a local policy override.

The validation algorithm at the final receiver (RFC 8617 §5.2):

  1. Locate the most recent ARC-Seal (highest i= value).
  2. If cv=fail, abort. The chain is unusable.
  3. Check the structure: every ARC Set holds exactly one AAR, one AMS and one AS, and the i= values run from i=1 upwards without gaps or repeats. Then validate the most recent ARC-Message-Signature against the message as received; older AMS signatures are optional and their failure does not invalidate the chain. Any failure → mark chain as fail.
  4. For each ARC-Seal from highest i= down to i=1: validate the AS signature against the signer's DKIM key. Any failure → mark chain as fail.
  5. If every link validated, the chain has integrity. The receiver MAY apply a local policy that grants delivery override based on the trusted upstream DMARC pass recorded in the AAR at the appropriate hop.

Note: ARC chain validation alone does NOT deliver the message. It produces a verdict that the receiver MAY use, weighted against the trust the receiver places in the signers of the chain. A cryptographically-clean chain signed only by untrusted intermediaries is not a delivery green light.

6. A worked multi-hop chain example

Scenario: alice@university.example posts to list@discuss.mailman.example, which fans out to subscribers including bob@gmail.com. The path is sender → mailman forwarder → Gmail receiver.

At the Gmail receiver, the message headers relevant to ARC look approximately like this (whitespace folding omitted for clarity):

Authentication-Results: mx.google.com;
   dkim=fail header.d=university.example
   spf=fail (sender IP is 198.51.100.5) smtp.mailfrom=bounces@mailman.example
   dmarc=fail header.from=university.example;
   arc=pass (i=1 spf=pass dkim=pass dmarc=pass)
ARC-Seal: i=2; a=rsa-sha256; cv=pass; d=google.com; s=arc-20160816;
   t=1715900000; b=<base64-signature-2>
ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed;
   d=google.com; s=arc-20160816; t=1715900000;
   h=From:To:Subject:Date:Message-ID:List-Id;
   bh=<body-hash-as-gmail-received-it>;
   b=<base64-signature-2>
ARC-Authentication-Results: i=2; mx.google.com;
   dkim=fail header.d=university.example
   spf=fail smtp.mailfrom=bounces@mailman.example
   dmarc=fail header.from=university.example
ARC-Seal: i=1; a=rsa-sha256; cv=none; d=mailman.example; s=arc1;
   t=1715899000; b=<base64-signature-1>
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
   d=mailman.example; s=arc1; t=1715899000;
   h=From:To:Subject:Date:Message-ID;
   bh=<body-hash-as-mailman-sent-it>;
   b=<base64-signature-1>
ARC-Authentication-Results: i=1; mailman.example;
   dkim=pass header.d=university.example
   spf=pass smtp.mailfrom=alice@university.example
   dmarc=pass header.from=university.example
DKIM-Signature: ... d=university.example ... (BROKEN — body modified by mailman)
From: Alice <alice@university.example>
List-Id: <discuss.mailman.example>
Subject: [discuss] Re: meeting notes

Walking through the chain at Gmail:

  • Current-hop verdict (top Authentication-Results): dkim=fail, spf=fail, dmarc=fail. Without ARC, Gmail would reject under DMARC p=reject.
  • Chain walk from highest i= downward:
    • ARC-Seal i=2 (Gmail's own seal): cv=pass — Gmail asserts the prior chain validated. Gmail's signature on the i=2 Seal + AMS validates against Gmail's own DKIM key.
    • ARC-Seal i=1 (mailman's seal): cv=none — first hop, no prior chain. Mailman's signature validates against arc1._domainkey.mailman.example.
    • ARC-Message-Signature i=1 (mailman): covers the message as mailman sent it out, with the List-Id header and the Subject prefix already added, which is why Gmail can validate it although the original DKIM signature is broken.
    • ARC-Authentication-Results i=1 (mailman): records spf=pass, dkim=pass, dmarc=pass at university.example.
  • Chain verdict: arc=pass. The university's original DMARC pass is cryptographically attested by mailman, attested in turn by the chain integrity through Gmail's own validation.
  • Local policy at Gmail: because mailman.example is a trusted ARC signer and the chain validated, Gmail's policy may override the current-hop DMARC fail and deliver the message to bob's inbox.

7. ARC trust model: who you trust to sign and why

ARC chain validation produces a cryptographically- sound chain, but cryptographic soundness alone is not sufficient for local policy override. The receiver must also trust the signers of the chain. A bad-actor forwarder that signs an ARC chain claiming spf=pass dmarc=pass for a message they fabricated would produce a valid chain — but the receiver should not trust that chain.

The trust model rests on three pillars:

  • Signer reputation. Receivers maintain implicit or explicit reputation signals for ARC signers. Established mailbox providers (Google, Microsoft, Yahoo, Fastmail) carry high reputation; unknown one-off signers carry low. A chain signed only by low-reputation signers is rarely sufficient for local-policy override.
  • Chain coverage. The receiver evaluates which hop in the chain originally observed the DMARC pass. A chain where the FIRST hop is a high- reputation signer that observed dmarc=pass against the original sender's record is the strongest signal. A chain where the first hop is unknown and only later hops are trusted is weaker — the trusted signers have no first-hand observation of the original DMARC state.
  • Consistency with declared forwarder identity. The d= in the ARC-Seal should match the receiving entity's identity at that hop (e.g. d=mailman.example for a message that traversed mailman.example). Mismatched d= values are a chain-integrity signal worth flagging.

Practical implication for receivers: ARC is one input to a local policy, not a delivery decision on its own. Most operators implement ARC override only when the chain is signed by a known high-reputation forwarder AND the upstream verdict in the AAR shows a DMARC pass.

8. Receiver support and the local-policy-override expectation

  • Google (Gmail / Workspace) — implemented ARC validation on inbound mail in 2017 and outbound signing on every forwarded message. Gmail's Authentication-Results header includes an arc= field summarising the chain. Operators inspecting forwarded mailing-list mail in their Gmail account see the chain state in the message's "Show original" view.
  • Microsoft (Outlook.com / Office 365) — implemented ARC validation on inbound mail in 2021 and outbound signing on Office 365 transport- rules forwarding. Microsoft's Authentication-Results header similarly carries an arc= field. The "Trusted ARC sealers" feature in Defender for Office 365 lets administrators explicitly allowlist ARC signers whose chains should be honoured for local- policy override.
  • Yahoo (Verizon Media) — ARC signing on outbound forwarded mail since shortly after the RFC was finalised.
  • Fastmail, Zoho, ProtonMail — ARC support has been added to most major IMAP-based providers in the years since RFC 8617 was published.
  • Mailing-list software — Mailman 3 supports ARC natively; Mailman 2.x deployments typically lack ARC and rely on From: rewriting for DMARC survival instead. Sympa, GNU Mailman 3, mlmmj, and most commercial mailing-list platforms added ARC over 2019-2023.
  • Security gateways (Proofpoint, Mimecast, Barracuda) — most added ARC support over 2020-2023 so gateway-relayed mail can survive downstream DMARC enforcement.

Deployment threshold: receiver support is now broad enough that DMARC at p=reject on a sending domain is operationally feasible without ARC-aware forwarders silently dropping legitimate mailing-list mail. Specific exceptions remain (legacy Mailman 2.x deployments, smaller corporate gateways) but they no longer block enforcement strategy at scale.

9. Ten best practices

  1. If you SEND mail, do not configure ARC on your domain. ARC is added by forwarders, not senders. Your job ends with SPF + DKIM + DMARC properly configured. RFC 8617 §5.1.4 lets any mail handler seal, but a seal from the original sender tells receivers nothing.
  2. If you FORWARD mail (mailing list, security gateway, relay), implement ARC signing. Without it, your forwarded mail will be rejected by downstream receivers enforcing DMARC on the original sender's domain.
  3. Use a dedicated ARC selector separate from your DKIM selector. Convention: arc1._domainkey.<domain> for the ARC signing key. This keeps key rotation independent and lets you publish an explicit "ARC signer" identity.
  4. Use RSA-2048 minimum for ARC keys (the same RFC 8301 guidance as for DKIM: signers MUST use at least 1024 bits and SHOULD use 2048). RSA-1024 ARC keys produce chains that receivers progressively downgrade.
  5. Always sign with c=relaxed/relaxed canonicalization. Simple canonicalization on body content breaks on any whitespace change downstream.
  6. Cover the full standard header set in the AMS h= tag: From, To, Subject, Date, Message-ID, Reply-To, Cc, and any List-* headers. Missing headers leave attack surface for downstream modification.
  7. Validate inbound ARC before you forward. If you forward a message with an existing ARC chain that fails validation, your outgoing ARC-Seal MUST carry cv=fail. Don't paper over upstream chain breakage.
  8. Monitor your outbound ARC chains for receiver acceptance. Google Postmaster and similar feedback channels surface receiver-side ARC validation outcomes — anomalies indicate a signing misconfiguration.
  9. Rotate ARC keys on the same schedule as DKIM — at least annually for high-value forwarding infrastructure. Use dual-key publication during rotation.
  10. Document your ARC trust decisions. If you operate a receiver applying ARC-based local-policy override, keep an auditable list of which signers are trusted and why. Trust decisions accumulate silently and become invisible legacy without explicit documentation.

10. Nine common mistakes

  1. Configuring ARC on a SENDING domain. ARC is added by forwarders. Senders do not need ARC; senders need SPF + DKIM + DMARC. A seal added by the sender does not violate RFC 8617 (§5.1.4 lets any mail handler seal), but it fixes nothing and replaces none of the three.
  2. Using c=simple/simple canonicalization on AMS. Simple body canonicalization breaks on any whitespace change. Use c=relaxed/relaxed.
  3. Missing the AS Seal entirely. A forwarder that adds AAR + AMS but no AS produces an incomplete ARC-Set. Receivers discard incomplete sets.
  4. Out-of-order i= numbering. Hops must be numbered consecutively starting from i=1. Gaps (i=1, i=3) or duplicates (i=1, i=1) break chain validation.
  5. Including a bh= tag in the ARC-Seal. AS signs only the header chain, not the body — there is no body hash on AS. Some early implementations got this wrong.
  6. Forwarding a cv=fail chain with a cv=pass seal. If the chain you received fails validation, your seal MUST carry cv=fail and cover only your own ARC Set (RFC 8617 §5.1.2). Lying about chain integrity is the canonical ARC violation; receivers detect it immediately on validation.
  7. Sharing the ARC selector with DKIM. Same key works cryptographically but mixes operational concerns. Use arc1._domainkey.<domain> for ARC, <dkim-selector>._domainkey.<domain> for DKIM.
  8. Relying on ARC to fix a broken DMARC deployment. ARC handles the forwarding edge case; it does NOT fix misaligned SaaS senders or missing DKIM. The sending domain must still publish working SPF + DKIM + DMARC; ARC is the chain-preservation layer on top.
  9. Assuming every receiver honours ARC. Receiver support is broad but not universal. Smaller corporate gateways may still ignore ARC entirely and apply DMARC at p=reject to forwarded mail. From: rewriting remains an option for mailing lists that cannot rely on universal ARC support.

11. Troubleshooting

  • "My mailing-list mail is being rejected by Gmail / Microsoft". Inspect the rejection bounce — if it mentions DMARC, the cause is almost certainly that the forwarder is not ARC-signing AND the sending domain is at p=reject. Fix: upgrade the forwarder (Mailman 3+, Sympa with ARC plugin) or enable From: rewriting as a fallback.
  • "My ARC chain shows cv=fail at receivers". Run your forwarder's outbound mail through the email header analyzer and inspect the AS validation. Common causes: key mismatch (the published DKIM-style record at the ARC selector does not match the private key used to sign), missing prior-Seal coverage in the AS header list, body modification between AMS computation and message dispatch.
  • "The receiver reports arc=none on my forwarded mail". The forwarder is not adding ARC headers at all. Check your forwarding software's ARC configuration — some platforms require explicit per-domain enablement (Mailman 3, Postfix with milter, OpenARC).
  • "My ARC signature validates but the receiver still rejects". Cryptographic chain validation is one input; signer reputation is the other. Receivers may decline local-policy override for low-reputation signers even on a clean chain. Build delivery reputation via Google Postmaster / Microsoft SNDS / Outlook smart-network.
  • "Where do I publish the ARC public key?" Same place as a DKIM key: as a TXT record at <arc-selector>._domainkey.<your-forwarder-domain>. ARC reuses the DKIM key-publication mechanism — there is no separate ARC DNS record format.
  • "My Authentication-Results shows arc=pass but DMARC still fails — what now?" ARC pass does not auto-override DMARC fail; it is an INPUT to the receiver's local policy. Whether the receiver applies override is their decision. Most do for trusted forwarders.
  • "Where can I debug a multi-hop chain end-to-end?" Use the Email Header Analyzer in DMARC Analyzer and paste the full message headers. The analyser surfaces every Authentication-Results-family header including the ARC chain so you can walk each hop.

12. Frequently asked questions

What is ARC in email authentication?
ARC (Authenticated Received Chain, RFC 8617) is an email-authentication standard that preserves the original SPF / DKIM / DMARC results across forwarding hops. The forwarder cryptographically attests to the original results in three per-message headers (ARC-Authentication-Results, ARC-Message-Signature, ARC-Seal), letting a downstream receiver grant local-policy override based on the trusted chain.
Why does email forwarding break SPF and DMARC?
Forwarding typically rewrites the envelope MAIL FROM (breaking SPF) and may modify headers or body (breaking DKIM). With both SPF and DKIM failing, DMARC at p=quarantine or p=reject rejects the forwarded message — even though it is legitimate. ARC solves this by letting the forwarder vouch for the original authentication state.
What are the three ARC headers?
ARC-Authentication-Results (AAR) captures the receiving party's SPF / DKIM / DMARC verdict at this hop. ARC-Message-Signature (AMS) is a DKIM-style signature over the message headers and body as they leave this hop. ARC-Seal (AS) is a DKIM-style signature over the AAR + AMS + every prior ARC-Seal, cryptographically chaining the hops.
How does ARC chain validation work?
A receiver checks the structure of the chain and validates the most recent ARC-Message-Signature (highest i=) against the message as received, then every ARC-Seal, from the most recent back to the first, against its signer's key. The cv= tag of a seal records the result: pass (chain has integrity), fail (at least one link broke), or none (this is the first hop).
Does ARC replace DMARC?
No — ARC complements DMARC by handling the forwarding edge case. DMARC remains the policy + alignment standard the original domain owner publishes; ARC is the chain-preservation mechanism that lets DMARC enforcement coexist with legitimate forwarding.
Which mailbox providers support ARC?
Google (Gmail, Workspace) since 2017, Microsoft (Outlook, Office 365) since 2021, Yahoo, Fastmail, Zoho, and most commercial mailing-list platforms (Mailman 3, Sympa) and security gateways (Proofpoint, Mimecast, Barracuda) added ARC support between 2019 and 2023.
Do I need to configure ARC on my domain?
No — only if you OPERATE a forwarder. As a sending domain owner publishing SPF + DKIM + DMARC, you do not configure ARC. ARC is added by the entities that FORWARD your mail (mailing lists, security gateways, transactional relays).
What is the difference between ARC and DKIM?
Both use DKIM-style signatures, but DKIM signs ONCE at the original sender, while ARC signs at EVERY forwarding hop. DKIM does not survive header / body modification; ARC explicitly tracks modifications across the chain. They use the same cryptographic primitives (RSA-2048 or Ed25519 with relaxed canonicalization) but solve different problems.

Inspect an ARC chain now

DMARC Analyzer's includes/EmailHeaderParser.php recognises every Authentication-Results family header including ARC-Authentication-Results, ARC-Message-Signature, and ARC-Seal. Paste any forwarded message's raw headers into the Email Header Analyzer and walk the chain hop-by-hop — every AAR shows the receiving entity's verdict, every AMS / AS records the signer and selector, and the chain validation state surfaces in the top-level Authentication- Results.

Sign up — Free plan Analyze an ARC chain