RFC 8601 — Authentication-Results

Message Header Field for Indicating Message Authentication Status

Status
Proposed Standard
Published
2019
Obsoletes
RFC 7601

RFC 8601 defines the Authentication-Results header field. If you have ever opened a message’s source to find out why DMARC failed, this is the document describing what you were reading.

It is probably the most-encountered specification on this list, and the least often cited.

What one looks like

Authentication-Results: mx.example.net;
  spf=pass smtp.mailfrom=yourdomain.com;
  dkim=pass header.d=yourdomain.com header.s=google;
  dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=yourdomain.com

Read left to right: the authserv-id (mx.example.net) says which server performed the checks, then one clause per method with its result and the properties it was evaluated against.

The properties matter more than the results. dkim=pass header.d= tells you which domain signed — and if that is your email provider rather than you, the signature is valid and still fails alignment. Likewise spf=pass smtp.mailfrom= names the envelope domain, not the visible From:.

Why you cannot trust one you did not add

The header is plain text with no signature. Anything upstream can write one, and a forged Authentication-Results claiming dmarc=pass costs an attacker nothing.

The rule the RFC is explicit about: a receiver must delete any Authentication-Results header bearing its own authserv-id before adding its own. You can trust the header your own boundary added. Everything above it in the stack is hearsay, which is exactly the problem ARC tries to address for legitimate intermediaries.

Where you will meet it

In raw message source, and in the reasoning behind aggregate reports — the report tells you a source failed DMARC, the header on an actual message tells you which mechanism and against which identifier. When a report is confusing, finding one real message and reading its Authentication-Results is usually faster than any amount of theorising.

Read it: rfc-editor.org/rfc/rfc8601