Message Loupe

Methodology

What Message Loupe actually checks, and what it deliberately doesn't.

The signals we read

Every email carries a set of routing headers that travel with it from the sender's mail server to yours. They're invisible by default but preserved in the file you save. We read them locally in your browser and evaluate four broad categories:

How we get to a verdict

We don't score-and-threshold; we apply a small set of rules that mirror how an analyst triages a phish:

The money & credential cap

If the message body mentions money, banking changes, wires, gift cards, credentials, or login info, we never let the verdict rise above "Caution: verify by phone." Even a perfectly-authenticated email can be malicious if an attacker has compromised a real account at a real vendor. Header analysis is structurally blind to that case. The cap is our way of being honest about that blind spot.

The forwarded-message guard

Regular forwarding replaces the original headers with the forwarder's own, which destroys the evidence we need. If we detect a forward (by subject prefix, by a forward-separator block in the body, or by a Received chain that looks like a Sent-Items export), we short-circuit with a request to use "Save Original" or "Show Original" instead. We'd rather refuse to answer than answer wrong on a forwarded phish.

What we deliberately don't do

Standards and fraud guidance

Authentication parsing follows the published specifications for SPF, DKIM, DMARC, and Authentication-Results. The recommendation to verify suspicious requests through a known channel matches CISA guidance.

For payment-redirection and text-only scams, read the BEC and wire-fraud email guide.

How we test ourselves

The rule engine ships with a regression suite: synthetic fixtures and selected representative messages that exercise each verdict path (authentication failures, brand and role impersonation, link flags, the money/credential cap, the job-offer-plus-document-request pair, the forwarded-message guard, and known-good ESP-routed mail). The tests run on every change to make sure refactors don't silently move a verdict from "danger" to "caution" on a scenario we've already documented. These cases prove the engine still produces the documented verdict for each rule path. The full known-fake corpus remains private and is checked separately.

If you find a real-world email where we get the wrong answer, email the saved file (never just the body, since the headers are the evidence) to [email protected] and we'll turn it into a fixture.