HackBlue

Tools · Email security · 11 / 18

Interpreting Authentication-Results: spf, dkim, dmarc, and compauth

Read the Authentication-Results header your provider adds, understand each result and the identifiers it refers to, and avoid trusting copies of the header added by others.

8 min read · practice only with authorization

What the header records

Your receiving server records its verdicts in Authentication-Results, naming itself first. Each method shows a result and the identity checked: smtp.mailfrom for SPF, header.d for DKIM, and header.from for DMARC. Microsoft 365 adds compauth, a composite verdict that also considers its own reputation signals.

Snippet
Authentication-Results: mx.example.org;
  spf=pass smtp.mailfrom=bounce.sender.example;
  dkim=pass header.d=sender.example header.s=s1;
  dmarc=pass action=none header.from=sender.example;
  compauth=pass reason=100

Which copy to trust

Senders and relays can insert their own Authentication-Results headers. Only trust the one whose first token is your own provider’s server name, and which sits above your trusted Received boundary. Well-run receivers strip incoming copies that claim to be from them.

Lab: compare two messages

Take one legitimate message and one message from your spam folder. For each, extract the Authentication-Results header added by your provider, and fill in the table below. Compare the header.from domain with the domain shown in the client. Note which checks failed for the spam sample and whether DMARC policy was none, quarantine, or reject.

Snippet
field | legitimate | spam sample
spf (smtp.mailfrom) | pass (bounce.sender.example) | softfail (random.example)
dkim (header.d) | pass (sender.example) | none
dmarc (header.from) | pass | fail (lookalike.example, p=none)
compauth | pass | fail reason=001

Results that mislead

dmarc=pass only means the From domain authenticated, not that the sender is trustworthy: an attacker who registers a lookalike domain can pass every check. Conversely, dkim=fail on a forwarded message is common and not by itself malicious. Always read results together with the domains they apply to.

  • Pass on a lookalike domain is still suspicious
  • Failures after forwarding can be benign
  • Check the identity next to each result

Diagram

Reading one Authentication-Results header

Each verdict is tied to a specific identity.

spfdkimdmarc

SPF

spf=pass smtp.mailfrom=bounce.sender.example
envelope domain authorized

DKIM

dkim=pass header.d=sender.example
signature valid

DMARC

dmarc=pass header.from=sender.example
aligned pass

Check yourself

1. Which identifier does the dmarc result refer to?

2. Which Authentication-Results header should you trust?

3. Does dmarc=pass prove a message is safe?