How to Check If an Email Is Spoofed

Read an email's raw headers to see whether it really came from the domain in the From line: SPF, DKIM, DMARC alignment and the Received chain.

Last reviewed:

AdSense Placeholder
Slot: header_reference_page
On this page

Steps

  1. Copy the full raw headers

    Open the message source in your mail program: Show original in Gmail, View message source in Outlook, View > Message > Raw Source in Apple Mail. Copy everything above the body, or save the whole message as an .eml file.

  2. Paste them into the header analyzer

    Paste the headers into the Email Header & Security Analyzer and press Analyze Headers. The Message Summary shows the Subject, From and Message-ID, and Authentication Results shows the verdicts your provider recorded.

  3. Check SPF, DKIM and DMARC alignment

    Look for spf=, dkim= and dmarc= in the Authentication-Results line. A pass only counts if the authenticated domain (smtp.mailfrom, header.d) matches the domain in header.from. dmarc=fail means it does not.

  4. Trace the Received chain to the first outside server

    The Routing Highlights table lists the Received headers as they appear: hop 1 is your own provider, the highest number is the origin. Look up the IP of the first server outside your provider with the IP Address Lookup and ask whether it fits the claimed sender.

  5. Check what the real domain publishes

    Enter the From domain in the Email Deliverability Checker. It shows whether SPF, DMARC and MX records are found and their raw text, including the DMARC policy (p=none, quarantine or reject).

  6. Open the .eml in Email Forensics for a deeper look

    Drop the saved message into Email Forensics. Use Header Chain for the timeline, Authentication for the recomputed DKIM body hash, Sender Analysis for lookalike domains and Attachments for disguised files.

What you need

The message itself (do not reply, click links or open attachments), a way to view its source in your mail program, and five minutes. Everything on the analysis side runs on this site: the header analyzer parses pasted text, and Email Forensics reads a saved .eml or Outlook .msg without uploading it.

Reading the result

Here is a trimmed set of headers from a typical spoof, as the analyzer would show them:

Authentication-Results: mx.example.org;
       spf=pass smtp.mailfrom=bounce.example.net;
       dkim=pass header.d=example.net;
       dmarc=fail (p=NONE) header.from=example.com
From: "Example Bank Security" <[email protected]>
Return-Path: <[email protected]>
Reply-To: <[email protected]>

At first glance SPF and DKIM both pass. But they pass for example.net, a domain the attacker controls, while the reader sees example.com in the From line. DMARC is the check that compares the two, and it failed. The policy p=NONE explains why the message was delivered anyway: example.com has published DMARC in monitoring mode only. The Reply-To pointing at yet another domain is a second red flag, because your answer would go to the attacker.

A genuine message from the same bank would read spf=pass smtp.mailfrom=example.com or dkim=pass header.d=example.com, and dmarc=pass header.from=example.com.

For the Received chain, read the table from the bottom up. The bottom hop is where the message entered the mail system. If a message claiming to come from a European bank first appears on a residential IP address on another continent, that is worth more than any single header.

Common pitfalls

  • Trusting the display name. "Example Bank Security" is free text. Only the address and the authentication results matter.
  • Trusting any Authentication-Results line. Only the one stamped by your own provider counts. It is normally the topmost one and names your provider's server (mx.example.org above). An attacker can add a fake "all pass" line further down.
  • Treating "pass" as "safe". A criminal can register a lookalike domain such as examp1e.com and set up perfect SPF, DKIM and DMARC for it. Compare the domain letter by letter; the Sender Analysis tab in Email Forensics flags punycode and confusable characters.
  • Reading the analyzer's summary as a verdict. The Security card only counts which authentication headers are present, not whether they passed. Always read the actual spf=, dkim= and dmarc= values.
  • Blaming forwarding on attackers. Forwarded mail often fails SPF, and mailing lists that edit the subject break DKIM. A failure on a newsletter you forward to yourself is not proof of spoofing.

Going further

If you own the domain being spoofed, publish SPF and DKIM, then DMARC, and tighten the policy from p=none to p=reject as explained in How Email Authentication Works: SPF, DKIM and DMARC. Report the message to your provider's phishing button so its filters learn from it.

Try these tools

See also

  • Guide How Email Authentication Works: SPF, DKIM and DMARC
    What SPF, DKIM and DMARC each check, what their DNS records look like.
  • Glossary SPF
    SPF (Sender Policy Framework) is a DNS record listing which servers may send email for a domain.
  • Glossary DKIM
    DKIM (DomainKeys Identified Mail) adds a digital signature to outgoing email that receivers verify with a public key published in DNS.
  • Glossary DMARC
    DMARC is a DNS policy that tells receivers what to do with email that fails SPF and DKIM alignment, and where to send reports about it.
  • Glossary Phishing
    Phishing is a scam in which attackers pose as a trusted organisation or person, usually by email or text.

Frequently Asked Questions

Yes. The From line is just text the sender types. SPF, DKIM and DMARC exist to catch this, but only if the real domain publishes them and the receiving server enforces them. That is why you check the headers rather than the address you see.

The domain owner decides what happens to failing mail. With a DMARC policy of p=none the receiver only reports the failure and delivers the message anyway. Some providers also deliver failing mail to the spam folder instead of rejecting it.

AdSense Placeholder
Slot: footer_leaderboard