§2 · SPF-Record
SPF — das Sender Policy Framework.
SPF (RFC 7208) ist eine öffentliche Liste der IP-Adressen, die im Namen Ihrer Domain E-Mails versenden dürfen. Sie publizieren sie als einzelnen TXT-Record auf Ihrer Versand-Domain. Wenn ein Mailbox-Provider eine Nachricht erhält, die vorgibt, von @yourcompany.com zu kommen, ruft er den SPF-Record unter yourcompany.com ab und fragt: Kam diese Nachricht von einer der gelisteten IPs? Wenn ja, besteht SPF. Wenn nein, fällt SPF durch.
Die Syntax
v=spf1 include:amazonses.com ~all
Liest sich als: „SPF Version 1, autorisiere alles, was Amazon SES autorisiert, alles andere Soft-Fail." Das ~all am Ende ist die Catch-all-Klausel. ~all = Soft-Fail (als verdächtig markieren, aber annehmen), -all = Hard-Fail (ablehnen), ?all = neutral (keine Aussage). Verwenden Sie ~all, bis DMARC stabil läuft, und ziehen Sie dann auf -all an.
Mehrere Versender (z. B. Google Workspace für Outbound + SES fürs Marketing + Mailgun fürs Transaktionale) werden mit mehreren include:-Mechanismen verkettet:
v=spf1 include:_spf.google.com include:amazonses.com include:mailgun.org ~all
Das 10-DNS-Lookups-Limit. RFC 7208 §4.6.4 deckelt die SPF-Auflösung bei insgesamt 10 DNS-Lookups. Jedes include: zählt als eines. Häufiger Fehlerfall: 5+ Anbieter verketten und das Limit überschreiten — danach löst SPF zu permerror auf und wird wie ein Fail behandelt. Auditieren Sie mit dig TXT yourcompany.com + einem SPF-Flattener, sobald Sie nahe am Limit sind.
SPF bei AcelleMail
Das SendingDomain-Modell von AcelleMail stellt getSpf() in app/Model/SendingDomain.php:154 bereit — die Methode liest die globale Einstellung spf_record und gibt den Wert des TXT-Records aus. verifySpf(string $ipOrHostname) in Zeile 363 kapselt die Bibliothek Mika56\SPFCheck: Sie fragt zur Laufzeit live das DNS ab und prüft auf RESULT_PASS. Die Verifizierungs-Oberfläche im Admin-UI zeigt grün, wenn der Record existiert und die Versand-IP autorisiert, ansonsten rot.
Praxis-Tipp: SPF authentifiziert ausschließlich den Envelope-Sender (das MAIL FROM auf SMTP-Ebene), nicht den sichtbaren From-Header. Genau diese Lücke schließt das DMARC-Alignment — siehe §4.