MailDingo

Worked example 6 of 11

A spoofed 'bank security alert'

A forged From address that fails every check. It only reached the inbox because the bank's DMARC policy is still p=none.

Open in the analyser

What to notice

The From line says security@examplebank.example, and nothing in the headers backs that up:

Any one of these is a reason not to click. Together, they're a textbook forgery.

The analysis

Produced by the same code that runs in the analyser.

Suspicious

Warning signs: treat this message as suspicious

MailDingo found 1 serious warning sign. Don't click links, open attachments or reply until you've checked with the sender another way.

  • Fromexamplebank.example
  • Sent from203.0.113.77
  • Hops3
  • In transit2 s
  • ViaGoogle

Red flags 3

  • High
    DMARC failed

    Your provider recorded dmarc=fail: nothing proved that this message really comes from examplebank.example. Unless it came through a mailing list or forwarder, treat it as a forgery. Learn more show in headers

  • Medium
    Replies go to a different domain

    Reply-To is examplebank.helpdesk@webmail.test, so hitting Reply sends your answer to webmail.test, not to examplebank.example. That is normal for some newsletters and help desks, and a favourite trick in invoice and CEO fraud. Learn more show in headers

  • Low
    Date is later than delivery

    The Date: header is 1 h 0 min after the first server received the message. The sender's clock is wrong, or the header was made up. Learn more show in headers

Authentication

Checked by mx.google.com, the server that added the top Authentication-Results field: normally your own provider. show in headers

DMARC DMARC asks: did SPF or DKIM pass for a domain that matches the From address you see? That match is called alignment.

dmarc=fail From domain examplebank.example

Neither SPF nor DKIM passed for a domain aligned with the From domain, and that domain publishes DMARC: the From address is not authenticated.

domain policy p=none · applied: none

What dmarc=fail means

SPF SPF checks whether the server that delivered the message was allowed to send for the envelope (bounce) domain.

spf=fail envelope examplebank.example

The envelope domain says this server is NOT allowed to send its mail (a hard "-all" fail).

google.com: domain of security@examplebank.example does not designate 203.0.113.77 as permitted sender

What spf=fail means

Alignment with the From address

From domainexamplebank.exampleorganisation: examplebank.example
  • SPF examplebank.example failSPF fail, so it can't count

No passing check is aligned with the From domain, so DMARC can't pass. Alignment is shown in relaxed mode (same organisation); a domain can demand strict mode (exact match) in its DMARC record, which this tool can't look up.

Who it claims to be from

From
Example Bank Security security@examplebank.example ↧
Reply-To
examplebank.helpdesk@webmail.test different organisation ↧
Return-Path
security@examplebank.example ↧
Subject
Unusual sign-in attempt: verify your account within 24 hours (decoded from utf-8) ↧
Date
Mon, 19 Oct 2026 13:20:33 +0000 = 2026-10-19 13:20:33 UTC ↧
Message-ID
<20261019122033.8E2F14A0C1@vps-77.cheaphost.test> ↧
Services seen
Google (Gmail / Google Workspace) mailbox

Route 3 hops

Oldest first. Each server adds a Received line on top, so this is the header list read from the bottom up. Times are converted to UTC.

  1. Written Date header: 2026-10-19 13:20:33 UTC (sender's clock +0000)
  2. clock skew −1 h 0 min
    vps-77.cheaphost.test
    from localhost 127.0.0.1 private
    ESMTP · no TLS recorded
    2026-10-19 12:20:33 UTC (+0000 local) ↧
  3. +1 s
    mx.google.com Google
    from mail.examplebank.example 203.0.113.77
    ESMTP · no TLS recorded
    2026-10-19 12:20:34 UTC (−0700 local) ↧
    Probably where your provider took the message in from the outside world. The IP here was seen by the receiving server, so it is the most trustworthy origin address in the headers.
  4. +1 s
    2001:db8:4a5:10::77
    SMTP · no TLS recorded
    2026-10-19 12:20:35 UTC (−0700 local) ↧

First to last server: 2 s. Reading delays

The headers 16 fields

sender route authentication ARC

Delivered-To: casey.nguyen@example.com
Received: by 2001:db8:4a5:10::77 with SMTP id z3csp2210874pxq; Mon, 19 Oct 2026 05:20:35 -0700 (PDT) explained ↑
Return-Path: <security@examplebank.example> explained ↑
Received: from mail.examplebank.example (vps-77.cheaphost.test. [203.0.113.77]) by mx.google.com with ESMTP id 5b1f17b1804b1-4316a1b2c3dsi88123.401.2026.10.19.05.20.34 for <casey.nguyen@example.com>; Mon, 19 Oct 2026 05:20:34 -0700 (PDT) explained ↑
Received-SPF: fail (google.com: domain of security@examplebank.example does not designate 203.0.113.77 as permitted sender) client-ip=203.0.113.77; explained ↑
Authentication-Results: mx.google.com; spf=fail (google.com: domain of security@examplebank.example does not designate 203.0.113.77 as permitted sender) smtp.mailfrom=security@examplebank.example; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=examplebank.example explained ↑
Received: from localhost (localhost [127.0.0.1]) by vps-77.cheaphost.test (Postfix) with ESMTP id 8E2F14A0C1 for <casey.nguyen@example.com>; Mon, 19 Oct 2026 12:20:33 +0000 (UTC) explained ↑
From: "Example Bank Security" <security@examplebank.example> explained ↑
Reply-To: examplebank.helpdesk@webmail.test explained ↑
To: casey.nguyen@example.com
Subject: =?UTF-8?B?VW51c3VhbCBzaWduLWluIGF0dGVtcHQ6IHZlcmlmeSB5b3VyIGFjY291bnQgd2l0aGluIDI0IGhvdXJz?= explained ↑
Date: Mon, 19 Oct 2026 13:20:33 +0000 explained ↑
Message-ID: <20261019122033.8E2F14A0C1@vps-77.cheaphost.test> explained ↑
MIME-Version: 1.0
Content-Type: text/html; charset="UTF-8"
X-Mailer: Microsoft Outlook 16.0

All names, domains and addresses on this page are fictional: domains under example.com/.net/.org and the reserved .example and .test names (RFC 2606, RFC 6761), IPv4 addresses from the documentation ranges in RFC 5737 and IPv6 from 2001:db8::/32 (RFC 3849). Signatures are placeholders and won't verify.