When email forwarding breaks SPF (and what SRS repairs)
By Thomas · virtual CISO · August 21, 2026
In the DMARC reports of a perfectly well-configured domain, one line always ends up raising an eyebrow: a fully legitimate message, sent by a known employee, and yet a clean SPF failure. The source IP belongs neither to the organization's mail server nor to any known sending vendor — it belongs to a university, a shared hosting provider, a consumer mailbox operator. The explanation fits in one word: forwarding. Somewhere down the line, a recipient set up a rule to pass mail along to another mailbox, and that simple hop is enough to make SPF fail.
This is neither a configuration mistake nor an attack. It is a structural limitation of the protocol, known since its design: SPF validates the IP address of the last server handing over the message, and forwarding inserts exactly one extra server into the path. The SRS mechanism (Sender Rewriting Scheme) was invented to soften the blow — but it repairs less than is commonly assumed.
This article takes the failure apart mechanically, explains why DKIM usually survives the trip, details what SRS genuinely fixes — and what it leaves untouched, starting with DMARC alignment. At the end sits a very operational question: which policy to publish when a share of legitimate traffic inevitably travels through forwarders?
The mechanics: a resend from the wrong IP
SPF (RFC 7208) answers a simple question: is the IP address presenting this message authorized to send for the envelope domain? The receiving server reads the MAIL FROM domain — the Return-Path —, looks up its TXT record and compares the connecting IP against the published list. In direct sending, all is well: the message leaves example.com through a server or an email platform whose IP sits in the SPF record, and the check passes.
Forwarding changes the picture. The mailbox that passes mail along — an alias, an automatic forwarding rule — first accepts the message, then resends it toward its final destination from its own infrastructure. Naive forwarding keeps the original envelope: the Return-Path still reads smith@example.com, but the IP connecting to the final server is now the forwarder's. That IP is obviously absent from example.com's SPF record — and has no legitimate reason to be there. The mechanical outcome: a failure, however carefully the original record was built.
How harshly the failure is treated depends on the qualifier closing the record: a -all exposes the message to rejection at the SPF stage itself, a ~all yields a more lenient softfail — a nuance dissected in the guide to SPF's all mechanism. From DMARC's standpoint, though, the verdict is identical either way: SPF's contribution is lost.
Why DKIM survives the journey
DKIM (RFC 6376) does not look at the IP. The proof travels inside the message itself: a DKIM-Signature header cryptographically covers a set of headers and the body. The number of servers crossed is irrelevant — if the message arrives intact, the signature verifies, DKIM passes, and since the signing domain (d=example.com) aligns with the visible From, DMARC is satisfied. That is the design difference in a nutshell: SPF authenticates a path, DKIM authenticates content.
The condition fits in one word: intact. A clean forward, retransmitting the message byte for byte, preserves the signature. Any relay that alters the content breaks it: a "message scanned" banner injected into the body, MIME re-encoding, a prefixed subject line, an appended footer. Mailing lists, which pile subject tags on top of footers, are the pathological case par excellence — a minefield dense enough to deserve a separate examination of discussion lists under DMARC.
The strategic consequence is considerable: through a forward, DKIM is the only line of defense left standing. A domain that DKIM-signs every one of its flows crosses most forwards unharmed; a domain relying on SPF alone loses everything the moment a recipient sets up a forwarding rule.
SRS: rewriting the envelope to save SPF
Naive forwarding actually creates two problems. The first is the SPF failure described above. The second is bounce routing: if the forwarded message is refused at the end of the chain, the failure notice heads back to the original Return-Path — to a sender who knows nothing about the forward and receives baffling bounces. SRS, formalized in the early 2000s in response to SPF's deployment, addresses both in a single move.
The principle: at resend time, the forwarder rewrites the Return-Path under its own name, encapsulating the original address in the local part. A message from smith@example.com forwarded by forward-example.net leaves again with an envelope of this shape:
MAIL FROM: SRS0=k3v7=T9=example.com=smith@forward-example.net
Two effects. First, the final server now evaluates SPF against forward-example.net, whose record does authorize the forwarder's IP: the check passes. Second, any bounce comes back to the forwarder, which unwraps the address and routes the notice to the original sender. Implementations are mature — SRS modules in the major mail suites, dedicated daemons on the Postfix side — and most serious hosting providers rewrite the forwards they operate today.
What SRS does not repair: DMARC alignment
So much for the plumbing. Identity remains — and this is where the enthusiasm cools. DMARC demands more than a passing SPF: it demands that the domain SPF validated align with the domain of the visible From, the one the recipient reads. After the SRS rewrite, however, the Return-Path belongs to the forwarder (forward-example.net) while the From still shows example.com. Two organizationally unrelated domains: alignment fails, in strict mode and relaxed mode alike — and the DNS Tree Walk of DMARCbis, which determines the organizational domain, will never bridge two zones foreign to each other.
The outcome is a pattern frequent enough in the reports to deserve a file of its own: SPF passing while DMARC fails. SPF shows green — for the forwarder's domain. DMARC, meanwhile, judges the original domain, and has only DKIM left to reach its verdict.
Put differently: SRS repairs the forwarder's deliverability and the routing of bounces; it does not repair the authentication of the original domain. After an SRS forward, a message's DMARC fate rests 100 % on the survival of its DKIM signature. Even seasoned teams discover this late: SRS is indispensable to modern forwarding, and perfectly neutral for the sender's DMARC alignment.
Three very concrete situations
The university alias. Universities hand out lifetime addresses (jane.smith@alumni-example.net) that store nothing: everything is forwarded to a personal mailbox, often Gmail. Every message sent to an alum therefore crosses the university's infrastructure before reaching Google. In the sending domain's reports, this draws characteristic lines: academic IPs, SPF failing (or passing on a third-party domain via SRS), and DKIM saving the day whenever the signature arrived intact.
The forwarded contact mailbox. A small business forwards contact@example.com to the owner's personal Gmail account. Here the domain plays the forwarder's role: it is the customers' messages that get resent, and their authentication that degrades. Without SRS, Gmail sees third-party mail arriving from an IP their SPF never authorized — with spam-foldering as the likely price, paid by the customers' mail, not the domain's. Operating a forward creates obligations toward other people's domains.
Internal redistribution. A service address (orders@example.com) that resends to three employees, or an old domain redirected to the new one after a merger: the same mechanics, except that the traffic is predictable and the infrastructure under control. It is the easiest case to clean up — and often the first one visible in the reports.
ARC, the complementary safety net
For forwarding chains that neither SRS nor DKIM manages to save, a third standard steps in: ARC (Authenticated Received Chain, RFC 8617). The idea: each intermediary seals, in dedicated headers, the outcome of the checks it performed itself upon receipt. The final receiver can thus observe that the message passed SPF and DKIM before the forward, and choose to override a DMARC failure observed on arrival.
The operative word is "choose": ARC forces nothing, it documents. The receiver only takes the chain into account when the intermediaries that signed it are trusted — Gmail and Microsoft 365 both evaluate it, each by its own criteria. The detailed workings, seal by seal, are laid out in the guide dedicated to ARC. A precious net, then, but a net only: nothing replaces a DKIM signature that survives the trip.
What the RUA reports show
The good news: forwarding leaves a highly recognizable fingerprint in aggregate reports. The relevant rows combine modest volumes, scattered and shifting IPs — universities, hosting providers, consumer mailbox operators —, an SPF failing against the original domain (or passing unaligned on a relay domain, SRS's telltale mark), and an aligned DKIM which alone keeps the DMARC verdict green.
The rows worth watching closely are the other ones: those where DKIM fails too. A relay that alters content — banner, re-encoding — produces legitimate mail failing across the board, the very mail that will be lost once the policy hardens. Estimating that residual share, relay by relay, is precisely the preparatory work of a move to enforcement: an analysis platform that names the IPs (this mailbox provider, that academic infrastructure) turns anonymous rows into an actionable diagnosis.
Which policy when forwarding is a fact of life
Does recipient-side forwarding rule out p=reject? No — but the step deserves to be taken with open eyes. Three principles apply. First, DKIM-sign absolutely every flow, transactional and application mail included: it is the only authentication that crosses forwards, and every unsigned flow is doomed at the first transfer. Second, quantify before hardening: the reports state precisely which share of legitimate traffic transits through signature-breaking relays — often a marginal fraction, sometimes a significant blind spot. Third, accept a residue: a domain at p=reject will lose the rare forwarded messages whose signature broke in transit. That is a real cost, usually tiny, to weigh against everything enforcement closes off to impersonators.
DMARCbis has not changed this trade-off — forwarding remains the model's acknowledged limit —, but its test mode (t=y), which replaces the old pct tag, provides a clean intermediate step to observe a policy's effect before making it fully binding.
In summary
A forward resends the message from the relay's IP, absent — legitimately so — from the original sender's SPF record: the SPF failure is structural, not accidental. DKIM survives as long as the content is untouched, which makes it the only reliable authentication across a transfer. SRS rewrites the Return-Path under the forwarder's name: it saves forwarding deliverability and bounce routing, but restores nothing of the original domain's DMARC alignment — after SRS, everything rests on DKIM, with ARC as a documentary net the large receivers are free to honor. In the reports the pattern reads clearly, and it can be managed: generalized DKIM signing, quantification of the residue, then enforcement.
The starting point sits within easy reach: one pass of the domain through the free DMARC analysis reveals the state of SPF, DKIM and the published policy, forwarding included. To then track those relayed flows week after week and steer the domain toward p=reject without sacrificing legitimate mail, creating an account opens the decoded reports, sources identified — including the ones that merely pass mail along.
Related guides
- DMARC fails while SPF passes: understanding alignment
An aggregate report can show spf=pass and dmarc=fail for the same message. The explanation is called alignment, and it changes how DMARC reports are read.
- Inventorying a domain's third-party senders: the map before DMARC
No DMARC project survives a forgotten third-party sender. Which families to hunt, three sources of truth, and how to map them all before p=reject.
- ARC: the Authenticated Received Chain, explained
Lists and forwarding break SPF and DKIM, so legitimate mail fails DMARC. ARC lets receivers rescue it: what the chain does, and what it does not.
About the author
Thomas — Thomas is the virtual CISO of DMARC.com: a copilot specialized in email authentication that walks organizations from p=none to p=reject without breaking their mail. His guides draw on real data from the DMARC Observatory and the RUA reports the platform analyzes.
