MailDingo

Worked example 10 of 11

A genuine invoice from a badly configured small business

Not every failure is an attack. This invoice is real, but the firm's web host isn't in its SPF record, it doesn't sign with DKIM and it has no DMARC record.

Open in the analyser

What to notice

A plumbing firm's invoicing plugin sends mail straight from its web-hosting server. Nobody told the domain's SPF record about that server, so:

MailDingo's verdict is "not fully authenticated", not "suspicious": nothing contradicts the sender, there's no Reply-To trick and no look-alike domain. But nothing proves it either, and that's exactly the gap a fraudster exploits with fake invoices. Check any change of bank details by phone, using a number you already have.

The Subject is Q-encoded in ISO-8859-1 (f=FCr is "für"), and the Date header leaves out the day of the week, which RFC 5322 allows.

The analysis

Produced by the same code that runs in the analyser.

Check carefully

Not fully authenticated

Nothing proves the From address (example.com) is genuine. Many small senders are simply misconfigured, but be careful with anything that asks you to act.

  • Fromexample.com
  • Sent from198.51.100.200
  • Hops2
  • In transit1 s

Red flags 1

  • Medium
    SPF softfail and no valid DKIM

    The envelope domain says this server probably isn't one of its senders (softfail), and no DKIM signature backs the message up. Often just a misconfigured sender, but nothing proves who sent it. Learn more show in headers

Authentication

Checked by mx1.example.net, 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=none From domain example.com

The From domain publishes no DMARC record, so the receiver had no way to judge the From address.

What dmarc=none means

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

spf=softfail envelope example.com

The envelope domain says this server probably shouldn't send its mail ("~all"), but asks receivers not to reject outright.

What spf=softfail means

DKIM DKIM checks a cryptographic signature that a domain (d=) put on the message, proving that domain handled it and the signed parts were not changed.

dkim=none

The message was not DKIM-signed.

What dkim=none means

Other checks

iprev=pass

The sending IP's reverse DNS name points back to it.

Alignment with the From address

From domainexample.comorganisation: example.com
  • SPF example.com softfailSPF softfail, 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
Müller Sanitär info@example.com ↧
Return-Path
info@example.com ↧
Subject
Ihre Rechnung für Oktober (Nr. 2026-1187) (decoded from iso-8859-1) ↧
Date
26 Oct 2026 10:15:07 +0100 = 2026-10-26 09:15:07 UTC ↧
Message-ID
<a6f1e2d3c4b5a697@web17.webhost.test> ↧

Route 2 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-26 09:15:07 UTC (sender's clock +0100)
  2. +1 s
    web17.webhost.test
    from www-data
    local · no TLS recorded
    2026-10-26 09:15:08 UTC (+0100 local) ↧
  3. +1 s
    mx1.example.net
    from web17.webhost.test 198.51.100.200
    esmtps · 🔒 encrypted TLS 1.2
    2026-10-26 09:15:09 UTC (+0100 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.

First to last server: 1 s. Reading delays

The headers 13 fields

sender route authentication ARC

Return-Path: <info@example.com> explained ↑
Delivered-To: accounts@example.net
Received: from web17.webhost.test ([198.51.100.200]) by mx1.example.net with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.97) (envelope-from <info@example.com>) id 1tC9xz-000Aq2-1F for accounts@example.net; Mon, 26 Oct 2026 10:15:09 +0100 explained ↑
Authentication-Results: mx1.example.net; iprev=pass (web17.webhost.test) smtp.remote-ip=198.51.100.200; spf=softfail smtp.mailfrom=example.com; dkim=none; dmarc=none header.from=example.com explained ↑
Received: from www-data by web17.webhost.test with local (Exim 4.96) (envelope-from <info@example.com>) id 1tC9xy-0007Lm-0R for accounts@example.net; Mon, 26 Oct 2026 10:15:08 +0100 explained ↑
From: =?ISO-8859-1?Q?M=FCller_Sanit=E4r?= <info@example.com> explained ↑
To: accounts@example.net
Subject: =?ISO-8859-1?Q?Ihre_Rechnung_f=FCr_Oktober_(Nr._2026-1187)?= explained ↑
Date: 26 Oct 2026 10:15:07 +0100 explained ↑
Message-ID: <a6f1e2d3c4b5a697@web17.webhost.test> explained ↑
X-Mailer: PHPMailer 6.9.1 (https://github.com/PHPMailer/PHPMailer)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="b1_a6f1e2d3c4b5a697"

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.