Tools / Guides / Reading email headers

How to read email headers to spot phishing

Where to find full email headers in Outlook, Gmail and Microsoft 365, how to read Received lines, SPF, DKIM, DMARC and compauth results, and the red flags of spoofing and business email compromise.

Updated 2026-11-03 · 8 min read

The body of a phishing email is designed to fool people. The headers are much harder to fake, because the receiving mail servers write most of them. Five minutes with the headers usually settles whether a message is spoofed.

Get the full headers

ClientWhere
Outlook (classic, Windows)Open the message > File > Properties > Internet headers
Outlook (new / web)Open the message > ⋯ > View > View message source (or message details)
Gmail⋮ next to Reply > Show original
Microsoft DefenderExplorer or the email entity page > Email headers
Reported phish as .emlThe headers are at the top of the file; open it in a text editor

Read the Received lines from the bottom up

Every server that handles the message adds a Received: line at the top. So the bottom Received line is the oldest hop, closest to the sender, and the top one is your own server.

Received: from mail.badsender.top (91.215.85.142) by AM9PR02MB7012.mail.protection.outlook.com ...
Received: from DESKTOP-7H2K (unknown [45.88.97.11]) by mail.badsender.top (Postfix) ...

Authentication results

Your receiving server records its verdicts in Authentication-Results (and Microsoft adds compauth):

Authentication-Results: spf=fail (sender IP is 91.215.85.142) smtp.mailfrom=badsender.top;
 dkim=none (message not signed) header.d=none; dmarc=fail action=quarantine header.from=contoso-finance.com; compauth=fail reason=000
CheckWhat it provesPitfall
SPFThe sending IP is allowed by the envelope domain (Return-Path)Checks the hidden envelope domain, not the From address you see
DKIMThe message was signed by domain d= and not changed sinceAny domain can sign; what matters is which domain
DMARCSPF or DKIM passed and lined up with the visible From domaindmarc=pass is the result that actually protects the From address
compauthMicrosoft's combined verdict, including implicit authenticationfail means Microsoft thinks the From domain is spoofed

Rule of thumb: dmarc=fail on a domain you recognise is the strongest single spoofing signal. dmarc=pass only proves the domain is real, not that it is the company you think it is: check for lookalike domains such as rnicrosoft.com or contoso-finance.com.

Sender fields and BEC red flags

A five-minute triage checklist

  1. Get the full headers or the .eml.
  2. Read DMARC and compauth first. Fail on a known brand: treat as phishing.
  3. Compare From, Reply-To and Return-Path domains.
  4. Find the originating IP (first public IP in the brackets) and check its reputation.
  5. Look at the links' real destinations and any attachment hashes, never by clicking.
  6. If it is phishing: purge similar messages from all mailboxes, block the sender domain and IPs, and check whether anyone clicked or replied.