Where do I find the raw headers?
In Gmail, open the message, use the three-dot menu and choose 'Show original'. In classic Outlook, File → Properties shows them in the 'Internet headers' box. In new Outlook and Outlook on the web, the three-dot menu has 'View message details'. In Apple Mail, View → Message → Raw Source. The Subject and From lines shown in the reading pane are not enough — what matters is the Received and Authentication-Results lines, and those are only in the raw source.
Can email headers be forged?
The ones at the bottom of the chain, yes, completely. Each server adds its own Received line at the top, so the order is newest first. Everything below the first line added by infrastructure you control was written by a machine you do not control, and a sender can invent as many plausible-looking hops as it likes. This is why the analysis here is explicit about which part of the chain carries weight: the top. Forged lines are added to make a message appear to have come from somewhere reputable, and they are convincing if you read the chain as a single trustworthy record.
The headers say SPF and DKIM passed. Does that mean the message is genuine?
It means the domain in the envelope was authorised to send, and that the message was signed by the domain claimed in the signature and arrived unmodified. It does not mean the message is honest. An attacker who registers a lookalike domain passes SPF, DKIM and DMARC on their own domain perfectly — the authentication is real and the domain is theirs. It also says nothing about the display name, which is not covered by any of these checks and is the part your mail client shows you.
Why is there a delay of several minutes at one hop?
Usually greylisting — the receiving server temporarily refuses the first attempt from an unknown sender and accepts the retry, which costs whatever the sending server's retry interval is. Queue backlogs and content scanning look the same. Bear in mind the delay is computed from two different servers' clocks, so a few seconds either way is meaningless, and a negative delay means one of the clocks is wrong rather than that something was tampered with.
What is the l= tag in a DKIM signature, and why does it matter?
It limits the signature to the first n bytes of the message body. Anything appended beyond that point is unsigned, so a message can be modified in transit — content added to the end — and still verify as authentic. It exists for mailing lists that append footers, and it is a bad trade: RFC 6376 permits it and security guidance has recommended against it for years. If your own signing configuration sets it, remove it.
Is the message I paste sent anywhere?
No. The parser is JavaScript that runs in your browser, and this page is a static file with no server behind it to receive anything. You can disconnect from the network after the page loads and it will still work. That matters here more than for most tools: headers contain recipient addresses, internal hostnames, internal IP addresses and message identifiers, and every other analyser on the web posts all of it to somebody's server.