When you encounter a 'cv=fail' result in an email's ARC (Authenticated Received Chain) headers, it's a signal that something has gone wrong with the email's chain of custody. ARC was designed to solve a common problem in the world of email authentication: legitimate emails being modified by intermediaries, like mailing lists or forwarders, which in turn breaks their DMARC alignment. As Proton explains, these modifications can cause legitimate emails to appear tampered with and fail DKIM checks, leading to DMARC failure.
ARC works by creating a new, verifiable chain of trust. Each server that handles the email can add its own cryptographic seal, attesting to the authentication results it saw when it received the message. This creates a sequence of verified hand-offs.
To understand 'cv=fail', we first need to look at the ARC-Seal header. This header is added by each ARC-participating intermediary, or 'hop', in the email's journey. It contains several tags, but the most important for our discussion is the cv tag, which stands for 'chain validation'.
When a server adds its seal, it first validates the existing chain of ARC seals that came before it. The cv tag records the outcome of this validation. The possible values are pass, fail, or none. A value of none is used for the very first seal in the chain (i=1), since there is no prior seal to validate.
A cv=fail result is an explicit statement that the ARC chain is broken and cannot be trusted. It means that the validating server was unable to verify the cryptographic signature of the previous ARC seal in the chain. According to the protocol specification, once a chain is marked as invalid, subsequent validators should not attempt to repair or ignore the failure; they should continue to propagate the 'fail' state.
There are several reasons why this might happen:
When a final receiving mail server sees an ARC chain that ends in cv=fail, it knows it cannot trust any authentication results preserved by ARC. The server will disregard the entire chain and fall back to evaluating only the most recent SPF, DKIM, and DMARC results. For forwarded mail, this often means DMARC will fail.
The consequence is a significantly higher likelihood of the email being sent to the spam folder or rejected outright. Some providers, like Microsoft, are known to be particularly sensitive to ARC failures. A broken ARC chain removes the layer of trust that ARC was designed to provide, making your legitimate forwarded email look suspicious and increasing its chances of landing on a blocklist or blacklist.
One of the most frustrating aspects of a cv=fail result is its lack of detail. The status tells you that the chain is invalid, but it doesn't specify *why*. Was it a hash mismatch on the body? A header change? A missing public key? The protocol itself doesn't provide a mechanism for this granular feedback, a pain point noted by developers working with email protocols.
In summary, cv=fail is a critical failure in the email authentication process. It indicates that the trusted chain of custody has been broken, and as a result, the receiving server will likely treat the email with suspicion. The only way to fix it is to identify which intermediary server is breaking the chain and correct its configuration, which is often easier said than done.