skip to content

A reported message passes SPF, DKIM and DMARC - what does that prove during triage?

level: juniorimportance: must knowfreq 78%

answer

  1. evidence about a domain, not a verdict
  2. attackers own domains and publish records too
  3. a compromised real mailbox passes cleanly
  4. forwarding and mailing lists fail benignly
  5. the pass tells you which domain to judge

basics

~20 s

Only that the sending domain authenticated and the signed parts were not altered in transit. It says nothing about intent. An attacker who registers a lookalike domain publishes his own records and passes all three cleanly.

solid answer

~50 s

Sender authentication results are evidence about a domain, not a verdict about a message. A pass means the mail really came from infrastructure the claimed domain authorises, and that the signed headers and body were not modified on the way. An attacker who registered `invoices-example.net` yesterday controls that domain's DNS, so his mail passes everything; so does mail from a genuinely compromised partner mailbox, because it really is the partner's domain. The inverse trap is just as common: benign mail fails routinely, since forwarding sends the message from a relay the original domain never authorised, and mailing lists that append a footer break the signature over the body. So I use the result for one thing - to establish which domain I am actually dealing with - and then judge that domain: how old it is, whether we have ever received mail from it, whether `From` and `Reply-To` disagree, and what the message asks the reader to do.

code

text · 10 lines
text
Authentication-Results: mx.corp.example;
  spf=pass smtp.mailfrom=billing.invoices-example.net;
  dkim=pass header.d=billing.invoices-example.net;
  dmarc=pass header.from=billing.invoices-example.net
Received: from mail.billing.invoices-example.net (198.51.100.24)
  by mx.corp.example; Mon, 24 Aug 2026 09:12:03 +0000
...
From: "Accounts Payable" <[email protected]>
Reply-To: <[email protected]>
Subject: Updated remittance details for invoice 4471

go deeper

for a junior

Be ready to state plainly what a pass and a fail each mean, and to name one everyday reason perfectly benign mail fails, such as being forwarded through a relay or a mailing list.

for a middle

Explain which identifier each check is about, and why a domain registered yesterday passes all three. Show the pivot: from the result to judging the domain's age, history and the request in the body.

for a senior

Demonstrate reading the whole header block with its trust boundary in mind - your hops versus sender-written ones - and reaching a verdict from the request, the domain's history and who else received it.

for a principal

Own the message to the business about what sender authentication can and cannot buy, and where you spend instead, given that authenticated mail from a compromised supplier is the case that actually costs money.

## The queue this question lives in A report-phish button in the mail client sends a copy of a suspicious message into a queue that an analyst works. Unlike a detection, nobody has claimed the message is malicious - a human found it odd. The first artefact you look at is the header block, and the most common junior mistake is to treat the sender-authentication line as the answer rather than as one piece of evidence. ## What a pass actually asserts The three checks answer questions about **domains and integrity**, not about intent: - An SPF pass says the machine that handed the message to your mail server is listed by the envelope sender's domain as allowed to send for it. - A DKIM pass says a signature over a set of headers and the body validates against a key published by the signing domain, so those parts were not altered after signing. - A DMARC pass says the domain in the visible `From` line lines up with one of the above, and the domain owner's published policy was satisfied. Every one of those statements is about the **sender's domain**. None of them is about whether a human should trust the message. The protocols were built to stop one thing - a stranger putting *your* domain in the `From` line - and they do that well. They were never able to say whether a domain that legitimately authenticated is run by someone who means you harm. ## The two directions people get wrong **Pass does not mean safe.** Two everyday cases produce fully authenticated malicious mail. First, the attacker's own domain: registering a plausible name, publishing SPF and DKIM records and signing outbound mail costs nothing and is the default on every bulk-sending platform, so most competent phishing arrives with a clean result. Second, and worse, a **compromised legitimate mailbox** at a supplier or a colleague: that mail is sent by the real infrastructure of the real domain, so it authenticates perfectly, and the authentication result is simply irrelevant to the verdict. **Fail does not mean malicious.** A message forwarded by a mailing list or an alumni-style relay is re-sent from a host the original domain never authorised, and body modifications such as an appended list footer invalidate the signature. Newsletters relayed through a third party fail for the same reason. If you close reported messages as malicious because a check failed, you will be wrong most of the time. ## How far you can trust the rest of the header block The `Received` chain is prepended by each machine that handles the message, newest first. Only the hops added **by your own boundary and inward** are trustworthy; everything below them is text written by whoever sent the mail and can be fabricated wholesale to invent a plausible path. Read the chain to find where the message entered your estate and from what address, and treat the earlier lines as claims. The `From` display name is free text chosen by the sender and matches nothing - a message whose display name is a director's and whose address is a webmail account is a classic. A `Reply-To` pointing at a different domain from `From` is where a reply-chasing lure gives itself away. One more practical point: an inline forward from a reporter's mail client usually rewrites or drops the original headers, so the copy you receive can be useless for this read. The value of a report button over a manual forward is that it submits the original message intact. ## What the result is actually for Use it to fix the identity of the thing you are judging. Once you know the message genuinely came from `invoices-example.net`, the useful questions start: when was that domain registered, have we ever received or sent mail there, does the URL in the body live on the same infrastructure, does the request in the message - change these bank details, approve this application, open this document - make sense from this sender, and above all, who else in the estate received it. The verdict comes from those answers. The authentication line only tells you whose name to type into them.

  • How much of the Received chain can you actually trust?
    Only the hops written by your own mail infrastructure, from your boundary inward. Everything earlier is text supplied by the sending side and can be fabricated to invent a convincing path. Use the chain to find where the message entered your estate and from which address, and treat anything below that as an unverified claim rather than a route.
  • A long-standing partner domain passes every check and asks finance to change its bank details - what now?
    Authentication cannot distinguish the partner from a compromised partner mailbox, so it contributes nothing to this verdict. Judge the request: an out-of-band call to a known number, never one from the message, plus a check of whether the same sender hit other recipients here and whether the reply address diverges. Treat the authenticated status as neutral, not reassuring.
  • Why is a copy forwarded from the reporter's client often unusable for this read?
    An inline forward re-sends the text as a new message from the reporter, so the original Received chain and authentication results are rewritten or lost and attachments may be re-encoded. Ask for the message as an attachment, or use the report button, which submits the original intact. Otherwise you are reading headers your own colleague generated.

It is a passport check. It tells you the document is genuine and matches the person holding it. It tells you nothing at all about why they came.

saying these in an interview costs you the question

  • Says a DMARC pass means the message is legitimate
  • Treats an SPF failure as proof of spoofing
  • Assumes attackers cannot publish their own SPF and DKIM records
  • Trusts every Received header as a record of the true path
  • Judges the sender by the From display name

context