Check my connection

Guides · Email & domains

How to read email headers and spot a phishing email

An email says it's from your bank, your boss or your supplier. Its visible From line is just text the sender typed. The headers underneath record what the mail servers actually saw, and those are much harder to fake.

Open the full headers

Every mail app hides them by default. Here's where they are (menu names change between versions, but these have been stable for a while):

Copy everything from the top down to the first empty line. That block is the header.

A worked example: the overdue invoice

This is the sample in iplover's email header analyzer. The domains are documentation domains (example.com, .org, .net) and the sending address is a public Tor exit, so no real company or person is involved, but every line is the kind you'll meet in real phishing:

Authentication-Results: mx.google.com;
       dkim=pass header.i=@example.org header.s=s1 header.b=Xy12;
       spf=pass (google.com: domain of bounce@mailer.example.org designates 198.51.100.25 as permitted sender) smtp.mailfrom=bounce@mailer.example.org;
       dmarc=fail (p=REJECT sp=REJECT dis=QUARANTINE) header.from=example.com
Return-Path: <bounce@mailer.example.org>
Received: from relay.mailer.example.org (relay.mailer.example.org. [198.51.100.25])
        by mx.google.com with ESMTPS id 5a1b2c3d4e
        for <you@example.net>
        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
        Tue, 03 Nov 2026 10:14:04 -0800 (PST)
Received: from webmail.example.org (unknown [185.220.101.7])
        by relay.mailer.example.org (Postfix) with ESMTPSA id 7C1A2B3;
        Tue,  3 Nov 2026 16:11:58 +0000 (UTC)
Received: from [10.0.0.12] (localhost [127.0.0.1])
        by webmail.example.org with ESMTP;
        Tue,  3 Nov 2026 16:11:55 +0000 (UTC)
From: "Example Billing" <billing@example.com>
Reply-To: payments-desk@example.net
Subject: Invoice 4471 is overdue
Message-ID: <20261103161152.4471@mailer.example.org>
X-Originating-IP: [185.220.101.7]

(Shortened; the full sample also has ARC headers, which record checks made by servers along the way.) The analyzer's verdict:

VerdictSuspicious Suspicious: be careful with this email.
ReasonsIt failed DMARC: example.com did not authorize it, so the From address may be forged. · It was sent through the Tor network (185.220.101.7), which hides the real sender. · Replies would go to example.net, a different domain from the sender's. Scam emails often do this. · It was held up for more than an hour on the way.
SPF, DKIM, DMARCSPF pass (for mailer.example.org) · DKIM pass (for example.org) · DMARC fail (for example.com, policy reject)

How to read it, line by line

1. Authentication-Results: the receiving server's verdict

The receiving server (here Google's) checked the message and wrote down the results. Read the topmost Authentication-Results line: it's the one your own mail provider added. Anything further down could have been written by anyone, including the sender.

The trick in this example is that SPF and DKIM both passed, just not for the right domain. SPF passed for mailer.example.org and DKIM for example.org, but the From address says example.com. DMARC is the check that ties the result to the From domain, and it failed. The owner of example.com even published a policy asking receivers to reject such mail. This pattern, passes everywhere except DMARC, is how most forged mail looks.

2. From, Reply-To and Return-Path: who it claims to be, and where answers go

The From line shows “Example Billing” at example.com. Reply-To, though, sends your answer to example.net. Help desks and mailing lists do this legitimately, but in an unexpected invoice it means: whoever wrote this wants your reply somewhere the real company doesn't control. Return-Path is where bounces go; a mail service's domain there is normal.

3. Received: the delivery path, read from the bottom up

Each server that handles a message adds a Received line at the top, so the oldest is at the bottom. Read upward: a device on a private network (10.0.0.12) handed the mail to webmail, which received it from 185.220.101.7, a Tor exit, before passing it to the relay and on to Google. That first public address is the closest you'll get to the sender, and here it's deliberately anonymous. X-Originating-IP, which some webmail services add, says the same.

The times tell a story too: two hours between the relay and Google. Delays happen for innocent reasons, but they're worth noticing.

If you see this, do this

In the headersWhat it meansWhat to do
dmarc=fail for the From domainThe domain's owner didn't authorise this senderTreat it as forged. Don't click, don't reply; report it as phishing in your mail app.
dmarc=pass, but the From domain is a lookalike (examp1e.com, example-billing.com)A real domain, registered by the attackerDMARC can't help here. Compare the domain letter by letter with the one you know.
Reply-To on a different domain, in an unexpected requestAnswers go to someone elseContact the company through a number or address you already have.
Display name of a known person, but an address you've never seenImpersonationCheck with the person through another channel.
Everything passes, and the address is the one you knowSent from that real accountProbably genuine, but accounts get hacked: an odd payment request still needs a phone call.
No Authentication-Results at allYour provider recorded no checksJudge it on content alone, and be careful.

What headers can't tell you

Headers prove where a message came from, not what it wants. A message from a hacked but genuine account passes every check. A lookalike domain passes DMARC for itself. And headers say nothing about the link or the attachment, which is where the harm usually is. So headers are one test among several: an unexpected request for money, passwords or a quick decision deserves suspicion whatever the headers say.

iplover's analyzer reads the results your provider recorded; it doesn't re-verify DKIM signatures or fetch SPF records for every hop itself. It tells you that at the end of each report, and it's worth keeping in mind with any tool.

Sources

Official documents we used to check the facts in this guide.