MailDingo

Worked example 11 of 11

Mail forwarded by an alumni address (SRS keeps SPF working)

A forwarding address that does it right: it rewrites the bounce address (SRS) so SPF still passes, and doesn't touch the message, so DKIM survives.

Open in the analyser

What to notice

Taylor writes to chris@alumni.example.edu, an old university address that simply forwards everything to Chris's current mailbox at example.net. Plain forwarding breaks SPF, because the alumni server isn't on Taylor's domain's list of permitted senders. This forwarder avoids that with the Sender Rewriting Scheme (SRS):

Return-Path: <SRS0=Hk3q=RW=example.com=taylor@alumni.example.edu>

The forwarder replaced the envelope sender with an address at its own domain that encodes the original one (taylor@example.com) plus a hash and timestamp, so bounces can be routed back. SPF now checks alumni.example.edu, which passes but doesn't align with From: taylor@example.com.

DMARC still passes, because the forwarder didn't change the message: Taylor's DKIM signature (d=example.com) verifies at the final receiver and aligns. This is why domains that send through forwarders and lists should always sign with DKIM: SPF rarely survives forwarding, DKIM usually does.

The route shows the forwarder's hop (mx.alumni.example.edu) between Taylor's provider and Chris's.

The analysis

Produced by the same code that runs in the analyser.

Looks genuine

Authenticated: it really came from example.com

Your provider's DMARC check passed, so example.com (or a service it authorised) sent this message. That proves the domain, not the intent: make sure example.com is the organisation you expect.

  • Fromexample.com
  • Sent from203.0.113.60
  • Hops3
  • In transit5 s

Red flags 0

No red flags found in these headers.

1 note
  • Bounces go to a different domain. Return-Path is at alumni.example.edu. That's normal when a mail service sends on someone's behalf, and DKIM still ties the message to example.com. Learn more show in headers

Authentication

Checked by mx2.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=pass From domain example.com

SPF or DKIM passed for a domain that aligns with the visible From domain: the From address is authentic.

domain policy p=quarantine · applied: none

What dmarc=pass means

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

spf=pass envelope alumni.example.edu

The sending server is on the envelope domain's list of permitted senders.

What spf=pass 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=pass signed by example.com selector sel1

The signature verified: the signing domain really handled this message and the signed content is unchanged.

2048-bit key

What dkim=pass means

Alignment with the From address

From domainexample.comorganisation: example.com
  • SPF alumni.example.edu passpassed, but for a different organisation: doesn't count for DMARC
  • DKIM example.com passaligned (exact match)

At least one passing check is aligned with the From domain, which is all DMARC needs. 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.

DKIM signatures on the message

  • example.com selector sel1 · rsa-sha256 · signed 2026-10-24 20:30:09 UTC · covers 7 header fields ↧

Who it claims to be from

From
Taylor Brooks taylor@example.com ↧
Return-Path
SRS0=Hk3q=RW=example.com=taylor@alumni.example.edu bounces go to another domain ↧
Subject
Reunion photos ↧
Date
Sat, 24 Oct 2026 22:30:05 +0200 = 2026-10-24 20:30:05 UTC ↧
Message-ID
<f00dcafe-1234-4abc-9def-0123456789ab@example.com> ↧

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-24 20:30:05 UTC (sender's clock +0200)
  2. +4 s
    mail.example.com
    from host-198-51-100-61.isp.test 198.51.100.61
    ESMTPSA · 🔒 encrypted · sender logged in
    2026-10-24 20:30:09 UTC (+0200 local) ↧
  3. +3 s
    mx.alumni.example.edu
    from mail.example.com 192.0.2.15
    ESMTPS · 🔒 encrypted
    2026-10-24 20:30:12 UTC (+0100 local) ↧
  4. +2 s
    mx2.example.net
    from mx.alumni.example.edu 203.0.113.60
    ESMTPS · 🔒 encrypted
    2026-10-24 20:30:14 UTC (−0400 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: 5 s. Reading delays

The headers 15 fields

sender route authentication ARC

Delivered-To: chris.d@example.net
Received: from mx.alumni.example.edu (mx.alumni.example.edu [203.0.113.60]) by mx2.example.net (Postfix) with ESMTPS id 4XcR7m2bQyz1Kp for <chris.d@example.net>; Sat, 24 Oct 2026 16:30:14 -0400 (EDT) explained ↑
Authentication-Results: mx2.example.net; spf=pass smtp.mailfrom=alumni.example.edu; dkim=pass (2048-bit key) header.d=example.com header.i=@example.com header.s=sel1 header.b=Fw9rD2xc; dmarc=pass (p=quarantine dis=none) header.from=example.com explained ↑
Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=203.0.113.60; helo=mx.alumni.example.edu; envelope-from=SRS0=Hk3q=RW=example.com=taylor@alumni.example.edu; receiver=mx2.example.net explained ↑
Return-Path: <SRS0=Hk3q=RW=example.com=taylor@alumni.example.edu> explained ↑
Received: from mail.example.com (mail.example.com [192.0.2.15]) by mx.alumni.example.edu (Postfix) with ESMTPS id 9F3E2D1C0B for <chris@alumni.example.edu>; Sat, 24 Oct 2026 21:30:12 +0100 (BST) explained ↑
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=example.com; s=sel1; t=1792873809; h=from:to:subject:date:message-id:mime-version:content-type; bh=U3ludGhldGljIGJvZHkgaGFzaA==; b=Fw9rD2xcU3ludGhldGljIHNpZw== explained ↑
Received: from [192.168.0.14] (host-198-51-100-61.isp.test [198.51.100.61]) (Authenticated sender: taylor@example.com) by mail.example.com (Postfix) with ESMTPSA id 2B1A0F9E8D for <chris@alumni.example.edu>; Sat, 24 Oct 2026 22:30:09 +0200 (CEST) explained ↑
From: Taylor Brooks <taylor@example.com> explained ↑
To: Chris Dalton <chris@alumni.example.edu>
Subject: Reunion photos explained ↑
Date: Sat, 24 Oct 2026 22:30:05 +0200 explained ↑
Message-ID: <f00dcafe-1234-4abc-9def-0123456789ab@example.com> explained ↑
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="------------x7Kq2m"

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.