Cybersecurity

What are common email phishing indicators I can find in

Learn the most common phishing indicators to look for in email headers, including authentication failures, suspicious routing, and red flag patterns that signal malicious intent.

By Inventive HQ Team

The Critical Role of Headers in Phishing Detection

The most reliable phishing indicators live in three places in an email header: the authentication results (SPF, DKIM, and especially DMARC), the alignment between the visible From address and the domain that actually authenticated, and the Received chain that records the message's true path. A textbook spoofed email fails DMARC because the domain in the From header does not match any domain that passed SPF or DKIM — the one thing an attacker cannot forge without controlling your DNS or your mail servers. Everything else in a phishing email (the logo, the display name, the urgent tone) can be copied perfectly; the cryptographic and routing metadata cannot. The practical detection method is to stop reading the message body and start reading the Authentication-Results line and the Received chain from the bottom up.

That is the summary an AI Overview will give you. Here is what it can't show you: which failures actually mean phishing versus which are just forwarding artifacts, how the pieces combine into a confidence score, and how to walk a real header top to bottom. Below is a decision map of every indicator ranked by weight, an animated diagram of how DMARC alignment defeats spoofing, a copy-paste reference table of legitimate-versus-phishing header patterns, and a live email header analyzer that parses raw headers and flags the authentication verdict for you.

Understanding what email headers are and why they're important for security is fundamental to detecting phishing attacks. Email remains the primary attack vector for cybercriminals because it offers a direct pathway to victims and is notoriously difficult to secure. Phishing emails—fraudulent messages designed to trick users into revealing sensitive information, downloading malware, or transferring money—arrive by the billions daily. While modern email security solutions use machine learning and content analysis to detect phishing, understanding the indicators visible in email headers provides an additional layer of detection that even sophisticated attacks struggle to hide.

The challenge for attackers is that while they can craft convincing email bodies and fake domain names, the technical metadata embedded in email headers is much harder to fabricate completely. By understanding what legitimate emails look like and learning to spot authentication failures, suspicious routing patterns, and authentication header anomalies, security professionals and educated users can identify phishing attempts before clicking dangerous links or attachments.

How DMARC Alignment Defeats Spoofing

The single concept that separates real anti-spoofing from theater is alignment. SPF and DKIM only prove that some domain authorized the message. DMARC adds the rule that the authorized domain must match the domain a human sees in the From line. The animation below shows why a spoofer who owns attacker.com still fails, even when their own SPF and DKIM pass.

How DMARC alignment blocks a spoofed email SPF and DKIM pass for attacker.com, but the visible From is company.com, so the alignment check fails and DMARC rejects the message. A spoofed email tries to pass DMARC What the user sees From: ceo@ company.com Subject: Urgent wire transfer The visible identity being impersonated What actually authenticated spf=pass smtp.from=attacker.com dkim=pass header.d=attacker.com Attacker owns this domain, so both pass compare DMARC alignment check company.com ≠ attacker.com dmarc=fail → rejected Alignment is the check the spoofer cannot pass

Indicators Ranked by Weight

Not every red flag carries the same weight. Treat header analysis as evidence-stacking, not a single pass/fail gate. This table ranks the indicators covered below by how strongly they point to phishing on their own.

IndicatorWeightWhat it proves aloneBest confirmed by
DMARC fail + domain misalignmentVery highVisible sender is not who authenticatedComparing From vs header.d / smtp.from
All checks fail (SPF + DKIM + DMARC)Very highNo authorized server or valid signatureChecking claimed sender's real SPF policy
DKIM header.d ≠ From domainHighSignature belongs to a foreign domainCross-referencing From header
Spoofed internal-server hostname in ReceivedHighFake "mail.company.com" from external IPReverse DNS / WHOIS on the IP
Auth passes but behavior is off (BEC)High (contextual)Possible account compromiseBaseline of sender's normal pattern
SPF softfail / noneMediumWeak or absent sender policyWhether the domain normally publishes SPF
Excessive Received hops or loopsMediumUnusual routingExpected path for that sender
Unexpected X-Originating-IPLow–mediumGeographic anomaly (easily forged)Combining with auth + timing signals
Generic / duplicate Message-IDLowSloppy or automated sendingOther structural anomalies
Missing / odd User-AgentLowNon-standard clientOverall pattern
Which should I trust most?DMARC alignment is the anchor; everything else adjusts your confidence up or down

Foundational Phishing Indicators

Foundational Phishing Indicators

1. Complete Authentication Failures (SPF, DKIM, DMARC All Fail)

The most obvious phishing indicator is when an email claiming to be from a legitimate domain fails all authentication checks:

Authentication-Results: company.com;
    spf=fail smtp.from=company.com;
    dkim=fail header.d=company.com reason="no key for signature";
    dmarc=fail header.from=company.com policy=reject

What this means: The email claims to be from company.com, but:

  • No authorized mail servers sent it (SPF fail)
  • There's no valid cryptographic signature or it's invalid (DKIM fail)
  • The entire DMARC policy fails, and the domain requested rejection

Phishing probability: Extremely high. This is a textbook spoofed email.

Caveat: Legitimate emails from certain service providers (notification systems, older applications) might also fail authentication. The key is comparing it to what you'd expect from the claimed sender.

2. SPF Soft Fail or Missing SPF

An email from a domain that shows SPF softfail or no SPF record:

spf=softfail smtp.from=company.com

or

spf=none smtp.from=attacker.com

What this means:

  • Softfail: The domain's policy says "probably not authorized, but don't reject"
  • None: The domain hasn't published an SPF policy at all

Phishing probability: Medium to high, especially for spoofed domains.

Legitimate context: Older domains or organizations with complex email routing might have softfail policies. Review the complete context before flagging.

3. Domain Misalignment Between Return-Path and From Header

The DMARC alignment check ensures the authentication domain matches what users see:

Example suspicious case:

From: ceo@company.com
Return-Path: <bounces.attacker.com>
DKIM-Signature: d=attacker.com

Authentication-Results: company.com;
    spf=pass smtp.from=attacker.com;
    dkim=pass header.d=attacker.com;
    dmarc=fail header.from=company.com

What this means: The visible sender is company.com, but authentication passed for attacker.com. This is a classic alignment failure.

Phishing probability: Very high. The email authenticated via a different domain than what users see.

Suspicious IP and Routing Indicators

4. X-Originating-IP from Unexpected Locations

The X-Originating-IP header shows the IP address of the device that initially sent the message:

X-Originating-IP: [203.0.113.45]

Geolocating this IP shows the sender's location:

Phishing indicator: An email claiming to be from your CEO in New York but originating from a datacenter in Romania, combined with other suspicious indicators.

Legitimate context: Employees traveling, using VPNs, or connecting from cloud services will show unexpected IPs. This indicator requires context.

Investigation technique: Compare to the employee's normal location baseline and cross-reference with whether they mentioned traveling.

Advertisement

5. Unusual Received Header Chains

The Received headers trace the email's path through mail servers. Phishing emails often show unusual routing:

Suspicious pattern - Too many hops:

Received: from mail.attacker.com ...
Received: from relay1.third-party.com ...
Received: from relay2.third-party.com ...
Received: from relay3.third-party.com ...
Received: from mail.company.com ...

Why would a phishing email from company.com route through three external relays? It shouldn't. Legitimate company emails should go directly from company.com to the recipient's mail server, maybe with one or two intermediate hops.

Suspicious pattern - Loops or backtracking:

Received: from mail.company.com ...
Received: from external-relay.com ...
Received: from mail.company.com ...

An email shouldn't leave a mail server and then re-enter it. This suggests routing manipulation.

Suspicious pattern - Spoofed internal mail server:

Received: from mail.company.com (mail.company.com [203.0.113.45])

When you WHOIS this IP, it resolves to an external hosting provider, not your company. The attacker is using a fake hostname claiming to be your internal mail server.

6. No Reverse DNS Match

For each IP in a Received header, check if reverse DNS matches:

Received: from mail.company.com (mail.company.com [203.0.113.45])

Legitimate mail servers usually have reverse DNS that matches their hostname. If:

  • The IP's reverse DNS is "generic-hosting-123.amazonaws.com"
  • But the hostname claims to be "mail.company.com"
  • This is a mismatch suggesting spoofing

Authentication Header Anomalies

7. DKIM Signature from Unexpected Domain

A legitimate email from your domain should have a DKIM signature from your domain:

dkim=pass header.d=company.com

Suspicious cases:

dkim=pass header.d=google.com (if email claims to be from company.com)

or

From: ceo@company.com
dkim=pass header.d=attacker.net

The domain field in DKIM doesn't match the From: header. This is a domain mismatch suggesting impersonation.

8. Multiple DKIM Signatures with Mismatched Domains

Some forwarding services add multiple DKIM signatures. However, see multiple signatures from different domains for the same sender is suspicious:

DKIM-Signature: v=1; a=rsa-sha256; d=attacker1.com; s=selector1; b=...
DKIM-Signature: v=1; a=rsa-sha256; d=attacker2.com; s=selector2; b=...
From: company.com

Multiple signatures from different attacker domains suggests the email was signed by intermediaries trying to add legitimacy.

9. ARC Failures

ARC (Authenticated Received Chain) headers are added by forwarding services to preserve authentication information:

ARC-Seal: i=1; cv=none; ...
ARC-Authentication-Results: i=1; ...; dmarc=fail

If ARC shows upstream authentication failures (cv=none or cv=fail), but the message still arrived, it's suspicious.

Content-Based Header Indicators

10. Mismatched Subjects and Sender Information

Phishing emails often use common subject lines that don't match the sender:

Subject: Verify Your Account
From: ceo@company.com
Date: Wed, 1 Jan 2025 00:30:00 +0000

A CEO sending "Verify Your Account" urgently at 12:30 AM is highly suspicious.

11. Suspicious Message-ID Patterns

Each email has a unique Message-ID:

Message-ID: <aaa1111@example.com>

Phishing emails often have:

  • Generic Message-IDs: <message@localhost>
  • Fabricated or duplicate Message-IDs: Multiple emails with the same ID
  • No Message-ID at all

Legitimate mail servers always generate unique Message-IDs.

12. Missing or Suspicious User-Agent Headers

The User-Agent header shows what software sent the email:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

Suspicious patterns:

  • Missing User-Agent entirely
  • User-Agent showing outdated software (Outlook 2003)
  • User-Agent contradicting the claimed sender (personal email client for a corporate account)

Advanced Pattern Combinations

13. Authentication Passes but Content is Suspicious

The most sophisticated phishing attacks compromise legitimate accounts or use legitimate infrastructure:

spf=pass smtp.from=company.com
dkim=pass header.d=company.com
dmarc=pass header.from=company.com

All authentication passes, but:

  • X-Originating-IP is from Romania
  • Timestamp is 3 AM
  • Email is requesting urgent wire transfer to new vendor
  • Recipient is finance team, not normal communication pattern

This indicates: Likely compromised account (Business Email Compromise rather than spoofing).

14. Timezone Inconsistencies Across Headers

Date: Wed, 1 Jan 2025 10:00:00 -0500 (Eastern Time)
X-Originating-IP: [202.0.113.100] (Singapore ISP)
Received: ... [timestamp UTC] (Processing in Asia timezone)

The email claims to originate from Eastern Time but the IP is from Singapore and processing timestamps are in different timezone. Timezone mismatches suggest location spoofing.

15. Encoding and Language Inconsistencies

Content-Type: text/plain; charset=iso-8859-1 (Western European)
Content-Language: zh-CN (Chinese)
From: ceo@american-company.com
Subject: [Contains Cyrillic characters]

The email from an American company has mixed character encodings and languages. This suggests mass phishing campaigns translated poorly or using compromised systems.

Time-Based Phishing Indicators

16. Unusual Send Times for the Sender

Build a baseline of when legitimate users typically send emails:

  • Your CEO normally sends emails 9 AM - 6 PM New York time
  • An urgent "verify your account" email arrives at 2 AM New York time
  • Combined with other indicators, this suggests phishing

Investigation: Check the user's Outlook/Gmail activity logs to see if they were actually active at that time.

17. Processing Delays Between Hops

Each Received header has a timestamp. Look at the time progression:

Received: from server1.com ... Wed, 1 Jan 2025 10:00:00 -0500
Received: from server2.com ... Wed, 1 Jan 2025 10:00:01 -0500
Received: from server3.com ... Wed, 1 Jan 2025 10:00:02 -0500

Normal (quick processing - seconds between hops). But:

Received: from server1.com ... Wed, 1 Jan 2025 10:00:00 -0500
Received: from server2.com ... Wed, 1 Jan 2025 12:00:00 -0500
Received: from server3.com ... Wed, 1 Jan 2025 10:00:05 -0500

2-hour delay between hops, then a hop with earlier timestamp? This suggests timestamp manipulation or unusual routing.

Visual Red Flag Summary

When analyzing headers, look for this combination pattern:

IndicatorLegitimatePhishing
SPFPass or SoftfailFail
DKIMPass or None (if no DKIM)Fail or Neutral
DMARCPassFail
Domain alignmentFrom = Auth domainFrom ≠ Auth domain
X-Originating-IPMatches employee baselineUnknown location, datacenter
Received chain2-3 hops5+ hops or loops
Reverse DNSMatches hostnameMismatch
Message-IDUnique formatGeneric or duplicate

The more indicators that point to phishing, the higher the confidence in your assessment.

Reading the Received Chain From the Bottom Up

The Received headers are the message's flight recorder. Each server that touches the email prepends its own line to the top, so the oldest hop sits at the bottom and your inbound gateway sits at the top. Reading bottom-to-top replays the true journey — the direction in which extra relays, loops, and lying hostnames become obvious.

Reading Received headers from the bottom up to trace an email's true path Three Received lines stacked with the newest on top and the original submitting server at the bottom, showing the read direction and where the true originating IP lives. Trace the path: read bottom to top Received: by inbound-gw.yourco.com (newest hop — your gateway) Top line = last stop before your inbox Received: from relay.example.net [198.51.100.9] Intermediate hop — check for extra external relays here Received: from unknown [203.0.113.45] (original submit) Bottom line = the IP to geolocate and reputation-check read direction

Watch for: a hop that re-enters a server it already left (loop), more relays than the sender needs, or a hostname claiming to be "mail.company.com" from an unrelated IP.

Check Any Header in Seconds

Manual reading builds intuition, but for a fast, error-free verdict, paste the full raw headers into the analyzer below. It parses the Received chain, extracts the Authentication-Results line, and reports SPF, DKIM, DMARC, and alignment status so you can focus your judgment on the content and context.

Loading interactive tool...

Practical Response Actions

When you identify multiple phishing indicators:

  1. Don't click links: Even if it looks legitimate, phishing indicators in headers are a strong warning
  2. Report to security: Forward the email to your security team
  3. Request full headers: Forward with complete headers to your security/IT team
  4. Warn the organization: If it's impersonating an executive, alert the team
  5. Check if credentials were compromised: If it's BEC (passes auth but suspicious patterns), check for account compromise
  6. Preserve evidence: Don't delete the email, it may be needed for investigation

Conclusion

Email headers contain a wealth of forensic indicators that can identify phishing attempts before users click malicious links. Authentication failures (SPF, DKIM, DMARC) are the most obvious indicators. Domain misalignment, unusual routing patterns, geographic anomalies, and timing inconsistencies provide additional evidence.

The most sophisticated attacks (Business Email Compromise) may pass all authentication checks but reveal themselves through patterns like unusual timestamps, unexpected originating IP addresses, or content requesting unusual actions. By learning to recognize these header-based indicators and combining them with user awareness training, organizations can dramatically reduce successful phishing attacks. The combination of technical header analysis and user judgment provides the most effective defense against email-based threats.

Frequently Asked Questions

What is the single strongest phishing indicator in an email header?

The strongest single indicator is a DMARC failure caused by domain misalignment: the visible From address (for example ceo@company.com) does not match the domain that actually passed SPF or DKIM. A spoofed message can make SPF or DKIM "pass" using an attacker-owned domain, but DMARC alignment requires that passing domain to match the From domain. When you see dmarc=fail header.from=company.com while SPF/DKIM passed for a different domain, treat it as spoofing until proven otherwise.

Does SPF, DKIM, or DMARC failure always mean an email is phishing?

No. Legitimate mail can fail authentication because of forwarding (which breaks SPF), mailing lists that modify the body (which breaks DKIM), misconfigured third-party senders, or a domain that simply never published records. A single failure is a flag, not a verdict. Phishing confidence comes from stacking indicators: authentication failure plus domain misalignment plus an unexpected originating IP plus an urgent money request is far more conclusive than any one signal alone.

Can a phishing email pass SPF, DKIM, and DMARC?

Yes, and this is the most dangerous case. In Business Email Compromise (BEC) the attacker controls a real, authenticated account or sends from legitimate infrastructure, so all three checks pass cleanly. Detection then shifts from authentication to behavioral context: unusual send times, an originating IP in an unexpected country, a first-time wire-transfer request, or a reply-to address that quietly differs from the From address.

What is domain alignment in DMARC and why does it matter?

Alignment is the DMARC rule that the domain which passed SPF or DKIM must match the domain in the visible From header (either exactly or as a parent domain in relaxed mode). SPF and DKIM on their own only prove that some domain authorized the message, not that it was your domain. Alignment is what turns those checks into real anti-spoofing protection, so an alignment failure is a high-severity indicator.

How do I find the true originating IP of a suspicious email?

Read the Received headers from the bottom up. The bottommost Received line is usually the original submitting server; each line above it is the next hop toward you. Look for the first external, non-trusted IP and geolocate it, then compare it to the sender's normal baseline. Note that X-Originating-IP is optional and easily forged, so trust the Received chain over any single X- header.

Why do Received headers get read from the bottom up?

Each mail server prepends its Received line to the top of the header block as the message passes through, so the oldest hop ends up at the bottom and the most recent (your own inbound gateway) at the top. Reading bottom-to-top reconstructs the message's actual journey in chronological order, which is how you spot extra external relays, loops, or hostnames that lie about being internal servers.

What does an X-Originating-IP from an unexpected country prove?

On its own, very little. Employees travel, use VPNs, and connect through cloud services, so a foreign IP is context, not proof. It becomes meaningful only alongside other signals, such as an authentication failure, an off-hours timestamp, or an urgent financial request that breaks the sender's normal pattern. Treat geolocation as one input to a weighted judgment, not a trigger.

What is the fastest way to check email headers for phishing?

Paste the full raw headers into an email header analyzer, which parses the Received chain and the Authentication-Results line and flags SPF, DKIM, DMARC, and alignment status automatically. Then apply human judgment to the content and context. Manual reading matters for edge cases, but a parser removes transcription errors and surfaces the authentication verdict in seconds.

Are ARC headers a reliable phishing signal?

ARC (Authenticated Received Chain) preserves upstream authentication results across forwarders so a legitimate forwarded message that broke SPF or DKIM can still be trusted. ARC becomes a warning sign when the sealed upstream results themselves show failures (cv=fail) yet the message was still delivered, or when the ARC-signing intermediary is one you have no reason to trust.

What should I do after I confirm an email is phishing?

Do not click links or open attachments. Report it to your security team with the full raw headers attached (forwarding as an attachment preserves them; inline forwarding often strips them). If the message impersonates an executive, warn the targeted team directly. If it passed authentication but looks like BEC, treat it as a possible account compromise and start incident response. Preserve the message as evidence rather than deleting it.

email securityphishingthreat detectionemail headerssecurity awareness