Writing & content

How to Read Email Received Headers Without Trusting Every Claim

Unfold message headers, understand Received order and separate raw trace information from verified sender authentication.

Photorealistic editorial photo for Read Email Received Headers
Writing & content · Practical ideas for your next build

The visible sender name in an email application is only a small part of the message source. Raw headers include addressing fields, trace entries and authentication-related claims. Reading those fields helps investigate delivery problems, but parsing text is different from establishing trust. Start with the original header block supplied by your mailbox provider and preserve the ordering of repeated fields before trying to draw conclusions.

Unfold wrapped fields before reading them

Internet message headers can continue onto following lines that begin with a space or tab. Those lines belong to the preceding field rather than representing new headers. A parser unfolds them to make the value easier to inspect. Stop at the empty line that separates the header block from the message body. Preserve repeated fields instead of merging them into a single map entry: doing so would lose the order and potentially discard information needed to understand a relay chain.

Read relay order with a trust boundary

Received fields are typically prepended by receiving systems, so the newest entry appears first. Reading downward moves toward earlier claimed hops. However, a sender can place misleading fields into a message before it reaches trusted infrastructure. Identify which entries were added by systems you trust before accepting a route or timing claim. Do not infer a verified geographic origin from a hostname alone. Our parser retains the raw order and makes no claim that the route or timestamps are authentic.

Keep authentication and interpretation separate

From, Return-Path and Authentication-Results answer different questions. A raw Authentication-Results value is useful only when you know which trusted system produced it and how your provider treats upstream fields. The local parser does not run SPF, DKIM or DMARC checks, decode encoded words or contact mail servers. It simply exposes unfolded field values. Before sharing a report, remove addresses, identifiers and other private details. For a delivery investigation, combine the parsed view with your provider’s trusted diagnostics and the actual received message.

Worked example

EXAMPLE
Received: from relay.example by mx.example.net;
 Tue, 3 Nov 2026 10:00:00 +0000
Received: from client.example by relay.example;
 Tue, 3 Nov 2026 09:59:58 +0000

Can a parsed From field prove who sent a message?

No. It is an asserted message field. Authentication depends on trusted verification and context outside simple header parsing.

Reference and further reading

Read the official documentation ↗