RFC 8617

ARC: Authenticated Received Chain

ARC lets a forwarder vouch for the authentication state of a message it received, so the next hop can trust the upstream verdict even when SPF and DKIM are broken by forwarding.

TL;DR

What it does

ARC is the answer to 'my mailing-list provider rewrites every message and DMARC fails because of it.' Without ARC, the final receiver sees broken SPF and broken DKIM and either rejects the message (at p=reject) or quarantines it.

With ARC, the upstream forwarder writes a signed record of what it observed before forwarding (e.g. 'when I received this, DKIM passed and aligned to yourdomain.com'). The final receiver can verify the ARC chain end-to-end and choose to honour that upstream verdict.

ARC is now widely supported on the receiving side (Google, Microsoft, Yahoo all add ARC headers and trust ARC chains from each other) and on the forwarding side (most modern mailing-list managers and many corporate forwarders).

How it works

  1. When a forwarder receives a message, it captures the current SPF/DKIM/DMARC verdict in an ARC-Authentication-Results header.
  2. The forwarder also signs a copy of the message with ARC-Message-Signature and seals the entire ARC chain with ARC-Seal.
  3. Each hop along the path increments the i= instance number on its own three headers.
  4. The final receiver walks the chain, verifies each seal, and reads the cv= (chain validation) result on the most recent seal. cv=pass means the chain is intact.
  5. If the chain validates AND the most upstream Auth-Results showed a pass aligned to your domain, the receiver can accept the message even though SPF/DKIM at the final hop fail.

Example record

(headers added per-message by forwarders)

No DNS record needed; ARC headers are added per-message by forwarders that support it.

Common pitfalls

Related tools

Want PhishFence to monitor ARC for your domains?

Sign up free, add a domain, and PhishFence will continuously check ARC (and the rest of the email-auth stack) for you.

Start free