ARCAuthenticated Received Chain
ARC (Authenticated Received Chain) is an email-authentication standard, defined in RFC 8617, that preserves the original SPF and DKIM results when a message is forwarded. Forwarding and mailing lists usually break those checks, which can sink a message at a strict DMARC gate. ARC lets each hop record and cryptographically seal what it saw, so the final receiver can trust the chain.
- It rescues legitimate mail that loses SPF/DKIM during forwarding
- Each intermediary adds a sealed snapshot of the results it observed
- A receiver can honour a trusted ARC chain instead of failing DMARC
- ARC is advisory: it never forces delivery, it informs the decision
AAR · AMS · AS
i=1 to i=50
cv=none · pass · fail
The forwarding problem ARC solves
When a message is forwarded through a mailing list, an alumni address, or a security gateway, two things tend to happen. The new server sends from its own IP, so the original SPF authorisation no longer matches. And the intermediary often rewrites the subject or footer, which breaks the DKIM signature that covered the body. With both broken, a strict DMARC policy of p=reject tells the final receiver to throw the message away, even though it was perfectly genuine when it left the sender.
ARC fixes this by letting each handler in the path record the authentication results it saw before it touched anything, then sign that record. The final receiver reads the chain, decides whether it trusts the intermediaries, and can choose to deliver mail that would otherwise fail DMARC outright.
The three ARC header fields
Every ARC participant adds a numbered ARC set of three headers, tagged with an instance number (i=1 for the first hop, incrementing up to a maximum of 50):
ARC-Authentication-Results(AAR): a frozen copy of the SPF, DKIM, and DMARC results that hop observed on arrival.ARC-Message-Signature(AMS): a DKIM-style signature over the message as that hop saw it, so later receivers can confirm what was forwarded.ARC-Seal(AS): a signature that locks the whole chain together, including every earlier ARC set, and carries the chain-validation verdict.
The seal’s cv= tag reports the state of the chain so far: cv=none on the first hop (no prior chain), cv=pass when every earlier set validated, and cv=fail the moment any link is broken. Once a chain fails it cannot recover.
ARC-Seal: i=1; a=rsa-sha256; t=1718000000; cv=none;
d=lists.example.org; s=arc2026; b=Lk9c...AB==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;
d=lists.example.org; s=arc2026; h=from:to:subject; b=h7Qy...9d==
ARC-Authentication-Results: i=1; lists.example.org;
spf=pass smtp.mailfrom=sender.com;
dkim=pass header.d=sender.com; dmarc=pass header.from=sender.com
How receivers use ARC, and its limits
ARC is strictly advisory. It never overrides a sender’s DMARC policy on its own and it never guarantees delivery. What it does is hand the final receiver extra evidence: “this message passed authentication when it entered the chain, and a server I trust is vouching for that.” A receiver that trusts the sealing intermediary can then deliver mail that current SPF and DKIM would otherwise sink.
That trust is the catch. A receiver only honours an ARC chain from intermediaries it has reason to believe, so a forged seal from an unknown host buys nothing. ARC also doesn’t replace SPF, DKIM, or DMARC; it sits alongside them to handle the specific case of authenticated mail that gets modified in transit. If you run a mailing list or forwarding service, sealing with ARC is how you stop breaking your subscribers’ DMARC.
How ARC preserves authentication through a forward
ARC vs DKIM vs DMARC
| ARC | DKIM | DMARC | |
|---|---|---|---|
| What it does | Preserves results across forwarding | Signs each message | Sets the policy on failure |
| Survives forwarding? | Yes, that is its job | Often breaks | Inherits the broken result |
| Forces delivery? | No, advisory only | No | Yes, with p=reject |
| Who adds it | Each intermediary hop | The original sender | The domain owner |
Common mistakes
p=reject, and their mail to your list members gets bounced.Frequently asked questions
cv=fail mean in an ARC seal?cv=fail it cannot recover, and the receiver treats the chain as untrustworthy.