Skip to content

Email Header Analyzer

Paste the headers of a message. You get the route it really took, how long each hop took, and what the receiving server concluded about it.

These headers are read in the request and thrown away: they are not stored, not queued and not logged. There is a check in the project that fails if this ever stops being true.

Where to find them

  • Gmail: open the message, the three dots, “Show original”.
  • Outlook: open the message, File, Properties — they are in “Internet headers”.
  • Apple Mail: View, Message, “All Headers”.
  • Thunderbird: open the message and press Ctrl+U, or View, “Message Source”.

Read it from the top down

Each server adds its line above the previous one, so the file reads backwards: the last hop is at the top. Here it is turned around, which is why the first row is the machine the message actually left from.

What this does not tell you

Headers below your own server can be written by anyone: a forged chain is a copy-paste away. What is solid is the part your own machine added, at the top. Times depend on clocks that are not synchronised, and that is said when they disagree.

If what you want is for your mail to arrive

This explains one message that already travelled. Scoring one you send, with the signature verified against that exact body, is what Mail Tester does.

See Mail Tester →

Frequently asked questions

Where are the headers in my mail app?
They are always behind something like “show original”, “view source” or “message properties” — never in the normal view. If you forward the message, the headers of the original are lost: you need the original message itself.
Can the route be faked?
Below your own server, yes: anyone can write Received lines that look real. That is why the only one worth trusting is the top one, added by the machine that delivered it to you — and the same goes for the authentication results.
One hop took an hour. Where was it stuck?
Almost always greylisting: the receiving server refuses the first attempt on purpose and waits to see if the sender tries again, which spam rarely does. The delay is the sender’s retry interval, not a network problem.