What the parts of a message are, and which of them a sender controls.
Received fields and the trust boundary
Each mail server that accepts a message adds a Received field at the top. Only the ones added by the recipient’s own provider are its observations; earlier ones are the sender side’s claims.
Received fields stack up newest-first: the top one was written by the last server to touch the message, normally your own provider; the bottom one was written first. Reversed, they give the delivery route.
They are not equally trustworthy. Your provider recorded what it saw when it accepted the message from outside — that hand-off is the trust boundary, and the connecting server’s address there is the most reliable outside address in the headers. Every field below the boundary existed before your provider saw the message, so a forger can write anything there. This tool marks the boundary and labels everything beyond it as claimed.
SPF
Sender Policy Framework: a domain lists which servers may send its mail; the receiver checks the connecting server against that list.
SPF lets a domain publish, in DNS, the servers allowed to send mail for it. The receiving server checks the connecting server against the list for the envelope sender (the Return-Path / bounce address) — not the From address you see. That gap is why SPF alone does not stop spoofing.
Results: pass, fail (the domain asks for rejection), softfail (treat with suspicion), neutral, none (no policy), and temporary or permanent errors. Forwarding routinely breaks SPF, because the forwarder is not on the original sender’s list.
DKIM
DomainKeys Identified Mail: a cryptographic signature proving a domain’s owner sent the message and that the signed parts were not altered.
The sending system signs selected headers and the body with a private key; the receiver fetches the public key from DNS (at selector._domainkey.domain) and verifies. A pass shows the signing domain vouched for this exact content.
This tool does not re-verify signatures. Verification needs the exact bytes that were signed, and copying a message out of a mail app changes them, so a re-check here would “fail” honest mail. The verdict shown is the one the receiving server recorded at delivery.
DMARC
The check that ties SPF and DKIM to the From address you actually see — and the domain’s instruction for what to do when it fails.
DMARC passes when SPF or DKIM passes for a domain that matches (“aligns with”) the visible From domain. It is the strongest single sign that the From address was not forged. The domain also publishes a policy — none, quarantine or reject — telling receivers what to do on failure.
A DMARC pass proves who sent a message, not that it is safe: a lookalike domain, a compromised account or a legitimate service abused by a scammer all pass. A DMARC failure is strong evidence the From address is unverified, but mailing lists and forwarding cause honest failures too.
ARC
Authenticated Received Chain: a forwarder or mailing list records the authentication results it saw before it changed the message.
Forwarders and lists modify messages (a footer, a new envelope) and so break SPF and DKIM downstream. ARC lets each intermediary seal what it saw. An ARC pass alongside a DMARC failure usually points to forwarding rather than forgery — if the intermediary is one you trust.
Alignment
Whether the domain SPF or DKIM vouched for matches the From domain. Without alignment, a pass can belong to somebody else’s domain.
A message “From: bank.example” can pass SPF for the envelope domain bulk-sender.example and pass DKIM for bulk-sender.example — neither of which says anything about bank.example. DMARC requires alignment for exactly that reason. Where no DMARC result was recorded, this tool compares the domains itself and says it computed the answer.
Spoofing
Forging the sender: putting someone else’s address or name in the From line, or using a domain built to look like theirs.
Email’s original design lets any sender write any From line. Spoofing takes several forms: forging a real domain exactly (which DMARC with a reject or quarantine policy defeats), registering a lookalike domain (paypa1.example, a Cyrillic letter in place of a Latin one), putting a trusted name in the display name over an unrelated address, or setting a Reply-To so that answers go to the attacker.
Authentication catches the first. The others need a reader — or a tool — to compare names and domains carefully, which is what the sender checks here do.
Time zones and the sender’s clock
The Date line carries the offset the sender’s software was set to. An offset matches several real time zones at any moment, and +0000 usually means a server stamped it.
Mail apps on phones and computers write the Date line from the device’s own clock and time-zone setting, so “−0600” says the device was set six hours behind UTC when the message was written. On a given date that fits several places at once — in October, Alberta (on daylight time) and Saskatchewan (which never changes) are both at −06:00 — so the tool lists every zone that matched at that moment, using the runtime’s time-zone database, and narrows the list only when the header names the zone too (“MDT”).
Webmail and many servers stamp the Date in UTC (+0000) whoever the writer is, so that offset says little. Comparing the Date with the first server’s timestamp shows whether the sender’s clock was accurate, behind or ahead — or whether the message sat in an outbox before it was sent.
Device and software fingerprints
Mail software leaves recognisable traces — in X-Mailer, the Message-ID, the MIME boundary, the name it announces to the server, and default signatures. All of them can be edited or forged.
Apple’s mail apps introduce themselves to servers as “smtpclient.apple” and write “Mime-Version: 1.0 (1.0)” on iPhone; Gmail creates Message-IDs ending “@mail.gmail.com”; Outlook adds a Thread-Index; Thunderbird, Roundcube, PHPMailer and others each format the MIME boundary their own way; and phones often append “Sent from my iPhone”. X-Mailer or User-Agent, when present, names the program and sometimes the operating system version.
None of this is proof: the sender’s software writes all of it, and a forger who copies a real message copies its fingerprints too. The tool shows each clue with its confidence and names a device only when several independent clues agree.
Lookalike domains and punycode
Domains registered to resemble a familiar one — a swapped letter, a digit for a letter, or a character from another alphabet.
Internationalised domain names are stored in an ASCII form beginning “xn--” (punycode). That lets a domain mix in, say, a Cyrillic “а” that renders exactly like a Latin “a”. Other lookalikes swap “rn” for “m”, “1” for “l”, or bolt a brand onto another domain (brand-secure-login.example).
This tool compares domains against a short list of commonly imitated brands. A match is a heuristic: coincidental resemblance exists, and the list is not exhaustive.