Anatomy of an Email Header
A phishing investigation usually starts with a header. Learn to read one from the bottom up, and to know what a header can't tell you.
On this page
Almost every phishing investigation begins with the same artefact: a block of headers the recipient pasted into a ticket. Read them in the wrong order and you will believe a forged From: line.
Read from the bottom up
Headers are appended by each server that handles the message. The oldest hop is at the bottom, the newest at the top. Start at the lowest Received: line and work upward to reconstruct the actual path the message took.
Each hop looks like this:
Received: from mail.example.com (mail.example.com [203.0.113.10]) by mx.recipient.net with ESMTPS id abc123 for <user@recipient.net>; Tue, 13 Oct 2026 09:14:22 +0000
That gives you the sending host name, the IP it connected from, the receiving server, and a timestamp. Discrepancies between the hostname and the IP are a strong signal.
The fields that matter
- From vs Return-Path vs Reply-To. These do not have to agree. Attackers routinely set
From:to a trusted brand whileReply-To:points somewhere else entirely. - Authentication-Results. The receiving server's verdict on SPF, DKIM and DMARC.
spf=passonly means the sending IP was authorised for the envelope domain — not that the message is trustworthy. - Message-ID. Usually generated by the originating client or gateway. An internal-looking Message-ID on a message that arrived from the internet is suspicious.
- X-Mailer / User-Agent. Bulk mailers and phishing kits leave distinctive strings. Not proof of anything, but a useful pivot.
- Received-SPF. The raw SPF evaluation, useful when
Authentication-Resultshas been stripped.
What you can and cannot conclude
Can. The chain of servers that handled the message, within the limits of what they chose to log. Whether the envelope domain authorised the sending IP. Whether the DKIM signature covers the body — and whether the body changed in transit.
Cannot. That the From: address is genuine (it is a header, and headers can be forged). That the sender is a particular person — you have an IP and possibly a compromised account, not an identity. Anything at all about hops whose logs you do not have.
A quick triage order
- Extract the full header block, not a screenshot.
- Walk the
Received:chain bottom-up and note each IP. - Check
Authentication-Resultsfor SPF, DKIM and DMARC. - Compare
From,Return-PathandReply-To. - Extract every URL and hash the attachments — never open them on a workstation.
- Record what the headers do show, and explicitly state what they do not.
That last step is the difference between a report and a guess.
Cite this work
Forensyra (2026). "Anatomy of an Email Header". FORENSYRA.
https://www.forensyra.in/writeups/anatomy-of-an-email-header
