Why does forwarded mail fail SPF?

Because forwarding changes who is sending the message without changing who it claims to be from:

  • SPF checks the sending server - after a forward, that server belongs to the forwarder, not to you.
  • The check fails legitimately - nothing is wrong, the mechanism simply cannot see the original hop.
  • DKIM usually survives - its signature travels with the message, which is why DMARC accepts either.

This is why DKIM matters before you enforce DMARC: it is what keeps forwarded mail deliverable.