Was passiert ist
Der Empfänger hat die Verbindungs-IP gegen den SPF-Record der Absenderdomain geprüft und keinen Treffer gefunden. Der Record endet auf -all („hardfail“), was so viel heißt wie: alles, was ich nicht ausdrücklich aufgezählt habe, ist eine Fälschung. Genau danach handelt der Empfänger.
Wichtig für die Diagnose: geprüft wird die IP, die tatsächlich die SMTP-Verbindung aufbaut, und die Domain aus dem Envelope-From (Return-Path) — nicht die aus dem sichtbaren From:-Header. Beide können auseinanderfallen.
Die vier üblichen Ursachen
- Ein Absender wurde vergessen. Der häufigste Fall. Newsletter-Tool, CRM, Ticketsystem, Shop, Rechnungsversand oder Monitoring senden über eigene IPs, die nie in den Record aufgenommen wurden.
- Der Versand hat den Anbieter gewechselt. Nach einem Umzug zeigt der Record noch auf die alte Infrastruktur.
- IPv6 fehlt. Der Record enthält nur
ip4:-Einträge, der Server stellt aber über IPv6 zu. Für den Empfänger ist das eine unbekannte Adresse. - Die Mail wurde weitergeleitet. Bei einer klassischen Weiterleitung sendet der weiterleitende Server unter der ursprünglichen Envelope-Adresse — SPF schlägt dann zwangsläufig fehl. Dagegen hilft kein SPF-Eintrag, dafür ist ARC gedacht (und beim Weiterleiter SRS).
So gehst du vor
Zuerst die sendende IP aus der Fehlermeldung oder dem Bounce herausziehen — sie steht meist direkt darin oder im Received:-Header der Rückläufer-Mail. Dann den eigenen Record ansehen und prüfen, ob diese IP darin vorkommt, direkt oder über ein include:.
Fehlt die IP, nimmst du sie auf — bevorzugt über das include: des Anbieters, weil der seine Adressen selbst pflegt, und nur ersatzweise als feste ip4:/ip6:-Angabe.
Achte beim Erweitern auf das Lookup-Limit: mehr als zehn DNS-abfragende Mechanismen machen den ganzen Record ungültig. Das ist der zweithäufigste Grund, warum eine vermeintliche Reparatur die Lage verschlimmert.
Was du nicht tun solltest
Der Record auf ~all oder ?all zurückzustellen, lässt die Meldung verschwinden, ohne das Problem zu lösen — und schwächt den Schutz deiner Domain gegen Spoofing. Wenn eine legitime Quelle abgelehnt wird, gehört sie in den Record, nicht der Record aufgeweicht.