Why email forwarding breaks SPF and DMARC, and how ARC helps
Forwarding breaks SPF because the forwarder's IP address isn't in the original sender's SPF record. Mailing lists also break DKIM when they change the subject or add a footer. If both fail, DMARC fails. Fixes are DKIM on every sender, SRS at the forwarder, and ARC, which receivers such as Microsoft 365 can trust.
On this page 8 sections
Forwarding is one of the most common reasons legitimate mail fails authentication. A message that passed SPF, DKIM and DMARC when it left the sender can fail all three after one hop through an alias, a mailing list or a security service. This guide explains why, what DMARC does with the result, and which fixes work.
Why does forwarding break SPF?
SPF (RFC 7208) checks one thing: is the server connecting to me listed in the SPF record of the envelope sender's domain? The envelope sender is the MAIL FROM address, sometimes called the Return-Path.
Forwarding changes the connecting server but not, by default, the envelope sender:
alice@sender.examplesends tobob@alias.example. Sender's server is insender.example's SPF. SPF passes.alias.exampleforwards the message tobob@mailbox.example, keepingMAIL FROMasalice@sender.example.mailbox.examplesees a connection fromalias.example's server and checkssender.example's SPF. That server isn't listed. SPF fails.
Nothing is wrong with anyone's records. SPF simply can't describe "mail relayed by someone I've never heard of". RFC 7208 Appendix D lists options at each stage, including the forwarder rewriting MAIL FROM to its own domain, or the receiver choosing to trust known forwarders.
Why do mailing lists break DKIM too?
DKIM signs the message body and selected headers. Any change to those parts invalidates the signature. Plain forwarding usually leaves the message alone, so DKIM often survives. RFC 9989 says DKIM signatures "will generally remain valid in these relay situations".
Mailing lists and some intermediaries do change the message. RFC 7960, which documents DMARC's problems with indirect mail, lists typical edits:
- Adding a tag such as
[club-list]to the subject. - Adding a footer with unsubscribe or list details.
- Re-encoding or converting the body.
- Security services adding warning text or rewriting links.
Google's forwarding guidance gives a similar list of changes that cause forwarded mail to fail DKIM, including modifying the subject, the body, the MIME boundaries, and DKIM-signed headers such as To, Cc, Date and Message-ID.
| Path | SPF | DKIM | DMARC |
|---|---|---|---|
| Direct delivery | Pass | Pass | Pass |
| Simple forward, no changes | Fails (new IP) | Usually passes | Usually passes, via DKIM |
| Forward with SRS, no changes | Passes for the forwarder's domain, not aligned | Usually passes | Usually passes, via DKIM |
| Mailing list that edits subject or body | Fails or not aligned | Fails | Fails, unless the list rewrites From |
| Sender with no DKIM, any forward | Fails | None | Fails |
How does DMARC treat forwarded mail?
DMARC passes when either SPF or DKIM passes for a domain that aligns with the visible From address. Forwarding almost always loses SPF alignment, so DMARC then depends entirely on DKIM. If the sender didn't sign, or a list broke the signature, DMARC fails, and a sender's p=reject policy can get the message rejected. Forwarding is only one cause; why DMARC fails covers the others.
RFC 9989 is direct about this. In section 7.4 it says domains that publish p=reject "MUST NOT rely solely on SPF to secure a DMARC pass and MUST apply valid DKIM signatures to their messages". It also says domains whose users post to mailing lists should not publish p=reject without first checking the impact in their reports.
It tells receivers to be careful too: they "MUST NOT reject incoming messages solely on the basis of a 'p=reject' policy", and must weigh the policy alongside other knowledge and analysis. But the RFC admits that in practice few receivers do this, and list mail with an unmodified From line "is frequently rejected".
That's why most mailing list software now rewrites the From address to the list's own domain, or to a form like bob=example.com@list.example, so the message aligns with the list's domain instead of yours.
What is SRS and does it fix DMARC?
The Sender Rewriting Scheme (SRS) is the "rewrite MAIL FROM" option from RFC 7208. The forwarder replaces the envelope sender with an address in its own domain, which encodes the original sender so bounces can still be routed back.
Microsoft 365 does this automatically. Microsoft Learn says SRS rewrites the MAIL FROM of messages autoforwarded to external recipients through mailbox forwarding, inbox rules, mail flow rule redirects, groups with external members, and mail contact or mail user forwarding. A forwarded message gets an envelope sender like:
john.work+SRS=44ldt=IX=fabrikam.com=bob@contoso.com
SPF is now checked against the forwarder's domain and can pass. But the visible From address is unchanged, so SPF no longer aligns. Microsoft is explicit: SRS "doesn't resolve the issue of forwarded messages not passing DMARC checks". The only reliable route, it says, is a DKIM signature using the From domain that stays intact until final delivery.
Google gives the same advice to anyone forwarding into Gmail: change the envelope sender to reference your forwarding domain, and always set up DKIM alongside SPF (Gmail Help).
What is ARC and how do receivers use it?
ARC, the Authenticated Received Chain (RFC 8617), lets each intermediary record what authentication results it saw and seal that record with its own signature. It adds three headers:
ARC-Authentication-Results: the SPF, DKIM and DMARC results the intermediary saw.ARC-Message-Signature: a DKIM-style signature over the message as the intermediary passed it on.ARC-Seal: a signature over the ARC headers, with a chain statuscv=none,passorfail.
If a later hop breaks DKIM, the final receiver can still see that the message passed when the list or forwarder received it, and who vouches for that.
ARC doesn't force anyone to accept anything. RFC 8617 is an Experimental RFC, and it states plainly that "ARC is not a trust framework". Each receiver decides which sealers to believe. Google's ARC page adds that ARC doesn't evaluate reputation and can't stop a forwarder from adding harmful content or stripping ARC headers. RFC 9989 also notes that as of its publication in May 2026, none of the proposed fixes for mailing lists, ARC included, had become widely used.
Trusted ARC sealers in Microsoft 365
Microsoft 365 lets you tell it which sealers to trust. Microsoft says to use this only when a legitimate service regularly modifies inbound mail and causes authentication failures (Microsoft Learn). To set it up:
- Send a test message through the intermediary to a Microsoft 365 mailbox.
- Open the headers, find
ARC-Seal:and note thed=value. That's the sealer's domain, not yours. - In the Microsoft Defender portal, go to Email & collaboration > Policies & rules > Threat policies > Email Authentication Settings > ARC, select Add, and enter that domain.
- Or, in Exchange Online PowerShell, run
Get-ArcConfig, thenSet-ArcConfig -Identity Default -ArcTrustedSealers "sealer1.example","sealer2.example". This replaces the list, so include existing entries. - Allow up to 30 minutes, then check a new message. In the last
ARC-Authentication-Resultsheader, look forarc=passandoda=1. InAuthentication-Results,compauth=pass reason=130means ARC overrode a DMARC failure.
Microsoft warns that each trusted sealer widens your attack surface, and that ARC overrides DMARC failures only. Spam filtering, bulk filtering and your own rules still apply.
Gmail and ARC
Google documents ARC in its Workspace help, but we found no admin setting for trusted sealers and no public description of which sealers Gmail trusts. Don't plan on configuring ARC trust in Google Workspace. Focus on DKIM and on Google's forwarding practices instead.
How do you fix forwarding failures?
Your fix depends on which side you're on.
If you send mail:
- Sign everything with DKIM using your own domain. This is the fix that survives simple forwarding. See DKIM setup for Microsoft 365 and Google Workspace, and verify with the DKIM Checker.
- Check your aggregate reports for forwarders. Rows where SPF fails but DKIM passes are usually forwarding, and they're fine. Rows where both fail from list servers show where
p=rejectwill hurt. - Roll out enforcement in stages. RFC 9989 suggests at least a month at
p=none, then an equal period atp=quarantine, beforep=rejecton domains whose users post to lists. Our p=none to p=reject guide covers the steps.
If you forward or run a list:
- Don't modify messages you forward. Leave the subject, body and signed headers alone.
- Rewrite the envelope sender (SRS), and make sure your SPF covers your forwarding servers.
- Rewrite From on list posts from domains with
p=quarantineorp=reject, if your list software supports it. - Add ARC seals if your software supports them.
If you receive mail through a gateway or forwarder:
- If a filtering service sits in front of Microsoft 365, configure Enhanced Filtering for Connectors so Microsoft sees the original sending IP. Microsoft lists this as an option when a service doesn't ARC-seal.
- If the service does ARC-seal, add its sealing domain as a trusted ARC sealer.
- Avoid broad allow lists. An allow entry for a whole forwarding service lets spoofed mail through too.
How to tell if forwarding caused a failure
Open the message headers in the Email Header Analyzer and look for:
spf=failorspf=softfailwith a connecting IP that belongs to a forwarder or list, not the sender.dkim=fail (body hash did not verify), which points to body changes such as a footer.ARC-Sealheaders, withcv=values showing where the chain broke.- An envelope sender containing
+SRS=, which shows Microsoft 365 applied SRS.
Our guide on how to read email headers explains each field.
Next steps
- Confirm DKIM is set up for every service that sends as your domain.
- Check your DMARC record with the DMARC Checker and look at a week of reports for forwarded traffic.
- If you run Microsoft 365 behind a filtering service, check whether it ARC-seals, and add it as a trusted sealer or use Enhanced Filtering.
- Read how DMARC applies to subdomains before you enforce, so you know which policy covers which mail.
If you use iBlockSpam for inbound filtering in front of Microsoft 365, the guided setup walks you through the inbound connector and Enhanced Filtering for Connectors.
Browse our other SPF, DKIM and DMARC guides.
Frequently asked questions
Does DKIM survive email forwarding?
Usually, if the forwarder doesn't change the message. RFC 9989 notes that DKIM signatures generally remain valid when mail is simply relayed. Mailing lists and some security gateways break DKIM by editing the subject, adding footers, or re-encoding the body. That's why DKIM is the most important fix for forwarded mail.
What is SRS in email?
The Sender Rewriting Scheme rewrites the envelope sender (MAIL FROM) to the forwarder's own domain, so SPF is checked against the forwarder and can pass. Microsoft 365 applies it automatically to forwarded mail. SRS doesn't change the visible From address, so the rewritten address won't align, and SRS alone doesn't fix DMARC.
Can ARC make a message pass DMARC?
Not by itself. ARC records what earlier servers saw. The final receiver decides whether to trust the sealer and use those results. Microsoft 365 does this for sealers you add as trusted, which can override a DMARC failure. RFC 8617 says ARC is not a trust framework.
Should I set DMARC to reject if my users post to mailing lists?
RFC 9989 says domains whose users might post to mailing lists should not publish p=reject without checking the impact first, because list mail is often rejected. Most mailing list software now rewrites the From address to avoid this, but check your aggregate reports before you enforce.
How do I add a trusted ARC sealer in Microsoft 365?
In the Microsoft Defender portal, go to Email authentication settings, open the ARC tab and add the sealer's domain. Use the d= value from the ARC-Seal header of an affected message, not your own domain. You can also use Set-ArcConfig in Exchange Online PowerShell.
Sources
- RFC 7208: SPF, Appendix D: SPF/Mediator Interactions
- RFC 9989: DMARC, section 7.4: Interoperability Considerations
- RFC 7960: Interoperability Issues between DMARC and Indirect Email Flows
- RFC 8617: The Authenticated Received Chain (ARC) Protocol
- Microsoft Learn: Configure trusted ARC sealers
- Microsoft Learn: Sender Rewriting Scheme (SRS) in Microsoft 365
- Google Workspace Admin Help: ARC email authentication
- Gmail Help: Best practices for forwarding email to Gmail
See how your domain measures up
Run a free Email Health Check: MX, SPF, DKIM, DMARC and transport security in one scan, with the raw records shown. No sign-up.
Keep reading
Why does DMARC fail? Causes and fixes for dmarc=fail
Troubleshoot dmarc=fail: alignment vs pass, third-party senders, forwarding, subdomains, DKIM d= and SPF MAIL FROM mismatches, with a causes-to-fixes table.
9 min read SPF, DKIM & DMARCHow to set up DKIM in Microsoft 365 and Google Workspace
Step-by-step DKIM setup for Microsoft 365 (two CNAME selectors) and Google Workspace (one TXT key): 2048-bit keys, key rotation and how to verify it works.
9 min read SPF, DKIM & DMARCMoving DMARC from p=none to p=reject: a staged rollout for small businesses
A staged plan to move DMARC from monitoring to reject without blocking your own mail, including what changes when a filtering gateway sits in front.
9 min read