Guide & Reference β how to read email headers and what this tool does
Every email carries a set of hidden metadata fields called headers. They are written by every mail server the message passes through and record the full journey from sender to recipient. Most email clients hide them by default β you usually only see From, To, Subject, and Date β but the raw headers contain significantly more information.
Headers are written in RFC 5322 format: one field per line, starting with the field name followed by a colon and the value. Multi-line values are continued with leading whitespace (folding). The most recent header is at the top; older ones are below.
Each Received: header is added by one mail server handing the message to the next.
Reading them from bottom to top gives you the complete delivery path.
Most header analyzers display the raw header values in a table or parse them into a flat list. This tool goes further: it resolves live DNS records, traces authentication chains, and decodes proprietary Microsoft 365 headers to explain not just what happened but why β and where exactly something went wrong.
The tool fetches the sender domain's live SPF record and renders each mechanism
as a color-coded token. The exact mechanism that matched the sending IP address β
whether a direct ip4:, an a: record, or a nested
include: β is highlighted in the record so you can see at a glance
why SPF passed or which rule caused it to fail.
When the matching mechanism is an include: directive the tool follows
the chain recursively, resolving each referenced domain's SPF record in turn until
it reaches the leaf mechanism that matched. The full include path is displayed
(e.g. include:spf.protection.outlook.com β ip4:40.92.0.0/15),
so you can confirm exactly which IP range authorized the sender.
When DMARC fails, the tool shows an alignment table: the From: header
domain is compared against the DKIM signing domain (d=) and the
SPF envelope-from domain. Each pair is labelled aligned or not aligned, so you can
see immediately whether the failure is a DKIM alignment issue, an SPF alignment issue,
or both. Remediation hints (e.g. configure a custom Return-Path CNAME) are shown inline.
For each DKIM-Signature: header the tool resolves
selector._domainkey.domain in real time to check whether the public key
still exists in DNS, has been revoked (empty p=), or was never published.
If the current DNS state differs from the delivery-time result the tool flags the
discrepancy β useful for diagnosing whether DKIM failed because of a signing error or
a key rotation that happened after delivery.
ARC (Authenticated Received Chain) allows intermediate mail handlers β mailing lists,
forwarding services β to preserve the original authentication results after they modify
a message. The tool displays the full ARC chain as a visual sequence of nodes
(i=1, i=2, β¦), each showing the chain-validation value
(cv=none/pass/fail) and the independent SPF/DKIM/DMARC results recorded
at that hop β separate from the final delivery authentication.
Microsoft 365 adds several proprietary headers that most analyzers ignore.
This tool decodes X-Forefront-Antispam-Report,
X-Microsoft-Antispam, and X-MS-Exchange-Organization-*
to show: whether Exchange classified the message as internal or external (AuthAs),
the Spam Confidence Level (SCL) and Bulk Complaint Level (BCL) with their meanings,
the spam filter verdict (SFV), and the message category (CAT). It also detects
hybrid on-premises scenarios from the FromEntityHeader value.
The delivery path is rendered as an interactive diagram showing each hop: the sending and receiving hostnames, IP addresses, timestamps, and delay between hops. IP addresses are classified as internal (RFC 1918 / link-local), Microsoft 365 infrastructure, or external. DNS resolution fills in missing IP addresses for hostnames that appear without one.
When a message arrives from an on-premises Exchange server through a Microsoft 365
hybrid connector, Exchange Online can misclassify it as anonymous (external) even
though it originates internally. The tool detects this pattern β
AuthAs=Anonymous combined with FromEntityHeader=HybridOnPrem
β and shows a warning with the likely causes and the impact on mail flow policies.
Every Received: header names the protocol and often the TLS version and cipher of that transfer (Postfix, Exim, sendmail, Google and Microsoft formats, plus the RFC 3848 keywords ESMTPS and ESMTPSA). The tool shows a padlock per hop in the flow diagram and the routing timeline, sums up the encryption in one line and warns about unencrypted transfers between organizations and about TLS 1.0/1.1, which RFC 8996 deprecates. Hops that hand the message back to a server already shown (a gateway re-injecting via localhost) appear as a badge on that server.
Mailbox forwarding and inbox rules in Microsoft 365, Gmail forwarding filters, Resent-* headers, Delivered-To chains and SRS-rewritten Return-Paths (standard SRS0= and the Microsoft 365 +SRS= format) are recognized and the original sender is decoded. The validation explains why SPF fails on forwarded mail while DKIM and ARC still carry the original authentication, and it stops treating the From/Return-Path mismatch as a warning when SRS explains it.
X-Microsoft-Antispam-Mailbox-Delivery is stamped when Exchange Online files the message into a mailbox. The Exchange section shows the destination folder code (Inbox, Junk or a custom folder, meaning derived from observation), the override reason and the Network Message ID that Microsoft Defender for Office 365 uses in Explorer and Advanced Hunting.
The card at the top condenses authentication, transport and the validation findings into one state and offers a plain-text summary for tickets and chats. Findings come in three severities: failures, warnings and informational notes. Checks include lookalike and homograph domains (including Punycode), freemail Reply-To addresses on corporate senders, Date headers that deviate from the first Received timestamp, headers that belong to an inline-forwarded copy rather than the original message, and SPF failures on an intermediate hop that are healed again by the time the message is delivered (relaying and forwarding). That note keeps the overall verdict from reading βNo findingsβ while the report further down shows a failed SPF hop.
Beyond matching the sending IP, the SPF record is audited: DNS lookups across all includes and redirects against the limit of 10 (RFC 7208 Β§4.6.4), includes without a record (void lookups), +all and ?all, the discouraged ptr mechanism, multiple records and the record length. The summary line sits under the record header, details open with the record.
For list and newsletter mail the tool checks the requirements that Google and Yahoo publish for bulk senders: SPF and DKIM, a published DMARC record and an aligned From domain, one-click unsubscribe per RFC 8058, reverse DNS that resolves back to the sending IP, TLS on delivery and a Message-ID.
Mail security products leave their verdicts in the headers. The tool reads SpamAssassin (X-Spam-Status, X-Spam-Report with per-rule scores), Rspamd (X-Spamd-Result symbols and the action), Proofpoint spam details and anti-virus, Mimecast spam score and impersonation protection checks, Barracuda status and report, and the Cisco Secure Email (IronPort) anti-virus and ThreatScanner verdict. Vendors without a documented format, such as Hornetsecurity, NoSpamProxy, Retarus, Trend Micro, Sophos, Kaspersky, ESET and Amavis, are listed with their raw headers.
Load a second message next to the first one and the tool shows the facts side by side: authentication results, hops and transit time, TLS, Exchange verdicts (SCL, CAT, SFV), delivery folder, forwarding and gateway verdicts, with differences highlighted and the findings that exist in only one message. Typical use: a delivered versus a quarantined copy, or a message before and after a connector or rule change. Either message can be shown in full detail below.
"Share link" in the summary heading builds a URL that carries the message text itself, compressed, in the fragment after the # sign (#share=z.<base64url of deflate-compressed UTF-8>). Browsers never send the fragment to the server and the tool stores nothing, so the privacy promise holds: whoever has the link can open the analysis, nobody else. By default only the headers are included, which keeps the link short enough for chats and tickets; the body can be added when needed. Other tools can build such links themselves, for example a shortcut that shares the clipboard.
The most common fields you will encounter in email headers:
| Header | What it contains |
|---|---|
| Received: | Added by each mail server in the delivery path. Reading bottom-to-top gives the route. Contains sending host, receiving host, protocol, and timestamp. |
| Authentication-Results: | Summary of SPF, DKIM, and DMARC checks performed by the receiving server. The authoritative source for authentication pass/fail results. |
| DKIM-Signature: | Cryptographic signature over selected headers and the message body. Contains the signing domain (d=), selector (s=), algorithm (a=), and signed header list (h=). |
| ARC-Seal: | Part of the ARC set. Seals the ARC headers added at a given hop (i=) and carries the chain validation value (cv=). |
| ARC-Message-Signature: | Like a DKIM signature added by the intermediate handler, covering the message at the point of forwarding. |
| ARC-Authentication-Results: | Snapshot of authentication results (SPF, DKIM, DMARC) as seen by the intermediate handler before it modified or forwarded the message. |
| Return-Path: | The envelope sender (SMTP MAIL FROM) address. Used for SPF checking and bounce handling. May differ from the visible From: address. |
| Message-ID: | Globally unique identifier assigned by the originating server. Used for threading and tracing a specific message in logs. |
| X-Originating-IP: | IP address of the client that submitted the message to the first mail server. Useful for tracing the true origin of webmail-sent messages. |
| X-Forefront-Antispam-Report: | Microsoft 365 proprietary header. Contains the spam filter verdict (SFV), spam confidence level (SCL), category (CAT), client IP (CIP), country (CTRY), and several other filtering signals. |
| X-Microsoft-Antispam: | Microsoft 365 proprietary header. Contains the Bulk Complaint Level (BCL), used to classify bulk/newsletter mail separately from spam. |
| X-MS-Exchange-Organization-SCL: | The Spam Confidence Level as set or overridden by Exchange Online transport rules. Values range from -1 (bypass) to 9 (definite spam). |
| X-MS-Exchange-Organization-AuthAs: | Whether Exchange classified the sender as Internal or Anonymous (external). Used by mail flow rules to apply different policies to internal vs. external mail. |
SPF lets a domain owner publish, in DNS, which mail servers are authorized to send mail
on behalf of that domain. The receiving server checks the sending IP against the
TXT record at the domain used in the SMTP MAIL FROM command
(the envelope sender). Common mechanisms:
ip4:1.2.3.0/24 β authorize an IPv4 address or rangeip6:2001:db8::/32 β authorize an IPv6 address or rangea: / mx: β authorize IPs listed in A or MX recordsinclude:other.domain β pull in another domain's SPF record (used by ESPs like Microsoft 365, Google, SendGrid)~all β softfail: IPs not listed are probably not authorized (still delivered, tagged)-all β hardfail: IPs not listed are not authorized (should be rejected)
SPF alignment for DMARC: the envelope-from domain (checked by SPF)
must match the From: header domain at the organizational level.
Many ESPs send with their own return-path domain by default, breaking SPF alignment
unless you configure a custom Return-Path CNAME.
DKIM provides a cryptographic signature over the message. The sending server signs
selected headers and the body with a private key, and publishes the public key in DNS
at selector._domainkey.domain. Receiving servers verify the signature.
DKIM survives relaying and forwarding (as long as the signed headers and body are not
modified), unlike SPF which is tied to the sending IP.
DKIM alignment for DMARC: the signing domain (d= tag)
must match the From: header domain at the organizational level.
If your ESP signs with their own domain, DKIM alignment will fail even if the signature
is cryptographically valid.
DMARC ties SPF and DKIM together. A domain publishes a DMARC policy in DNS at
_dmarc.domain specifying what receivers should do with mail that fails
both SPF alignment and DKIM alignment: p=none (monitor only),
p=quarantine (move to spam), or p=reject (discard).
DMARC passes if at least one of SPF or DKIM passes with correct alignment.
When a mailing list or forwarding service re-sends a message it breaks SPF (new sending
IP) and often DKIM (modified subject or footers). ARC allows these intermediaries to
record a signed snapshot of the original authentication results. Each intermediate server
adds a set of three headers (ARC-Seal, ARC-Message-Signature,
ARC-Authentication-Results) with an instance number. The final receiver can
evaluate the ARC chain to decide whether to trust the original authentication even if
SPF and DKIM now fail.
.eml, .msg or .txt file
directly, or use the clipboard button.
All processing runs entirely in your browser. No email header data is sent to any server.
The only external requests are DNS lookups via Cloudflare's DoH endpoint
(cloudflare-dns.com), which resolve domain names but do not transmit the
header contents.
Ready to analyze your headers?
Open Email Header Analyzer