E-Mail SPF-Datensatz und policyd-spf in Postfix
Mailserver (MTA) benötigen neben einem A Record, dem MX und dem PTR Eintrag, zusätzlich auch einen SPF-Datensatz im DNS.
Was sind SPF-Records
SPF (Sender Policy Framework) ist ein Verfahren zur Sender-Authentifizierung. SPF ist wie DKIM ein Datensatz vom Typ TXT des DNS, die dazu beitragen sollen, E-Mail-Spoofing zu verhindern und bei der Zustellung der eigenen E-Mails diese als legitim zu identifizieren. Auch soll verhindert werden das E-Mails beim Empfänger nicht im Junk-Mail-Ordner landen. Wenn eine Domain durch E-Mail-Spoofing missbraucht wird, landen die E-Mails wahrscheinlich im Spam-Ordner des Empfängers.
Der SPF-Datensatz gibt an, welche Hosts oder IP-Adressen E-Mails im Namen einer Domain senden dürfen. Sie sollten nur dem eigenen Mailserver oder dem Server des Internetdienstanbieters erlauben, E-Mails für diese Domain zu senden.
SPF-Datensatz im DNS Erstellen
Ein SPF-Datensatz ist ein DNS-Eintrag der zur DNS-Zone einer Domain hinzugefügt wird. Der SPF-Eintrag in einer DNS-Zone kann wie folgt aussehen:
@ IN TXT "v=spf1 a mx ~all"
Bei der Domain-Verwaltung eines Internet-Webhosting Anbieter kann dies dann etwa wie folgt aussehen.

- TXT zeigt an, dass dies ein TXT-Datensatz ist.
- v=spf1 gibt an, dass dies ein SPF-Datensatz ist und die SPF-Datensatzversion SPF1 ist.
- mx bedeutet, dass alle in den MX-Datensätzen aufgeführten Hosts E-Mails für die Domain senden dürfen, alle anderen Hosts sind nicht zugelassen.
- -all Fail – Server die nicht im SPF-Datensatz aufgeführt sind, sind nicht autorisiert E-Mails zu senden (nicht konforme E-Mails werden abgelehnt).
- ~all Softfail – gibt an, dass E-Mails dieser Domain nur von Hosts stammen sollen, die im SPF-Datensatz angegeben sind. Von anderen Hosts gesendete E-Mails werden als gefälscht gekennzeichnet. Mögliche Alternativen sind +all, ?all, diese jedoch selten verwendet werden.
- +all – Es wird dringend empfehlen, diese Option nicht zu verwenden. Der Tag ermöglicht es, E-Mails von dieser Domain zu senden.
- include – Eine zusätzliche SPF-Anfrage zur im Include-Statement angegebenen Domain die die IP-Adresse des Senders enthält.
Um zu überprüfen das der SPF-Record im öffentlichen Internet aufgelöst wird, ist das Dienstprogramm dig auf dem Linux Host wie folgt zur Abfrage anzuwenden:
$ dig domain.com TXT +short
"v=spf1 a mx ~all"
An einem Windows Computer kann nslookup in einer Eingabeaufforderung (cmd) ausgeführt werden, die Änderung kann je nach TTL eine Verzögerung haben:
C:\> nslookup -type=txt domain.com
In der PowerShell dient Resolve-DnsName mit folgendem Befehl:
PS C:\> Resolve-DnsName -Name domain.com -type TXT | ft -a
Name Type TTL Section Strings
---- ---- --- ------- -------
domain.com TXT 3485 Answer {v=spf1 a mx ~all}
Es können auch Online SPF-Validator wie mxtoolbox verwendet werden, um zu überprüfen welche Hosts die E-Mails der eigenen Domain senden dürfen.
Postfix SPF Policy Agent pypolicyd-spf
Wir benötigen für unseren Postfix SMTP-Server noch die Anweisung, den SPF-Datensatz eingehender E-Mails zu überprüfen, um gefälschte E-Mails zu erkennen. Installiere hierzu als root das Paket pypolicyd-spf aus dem EPEL-Repository:
yum install epel-release
yum install pypolicyd-spf
Füge dann einen Benutzer für Policyd-SPF hinzu:
adduser -U -M -s /bin/false policyd-spf
Postfix Master-Konfiguration
Bearbeite nun die Postfix-Master-Konfigurationsdatei master.cf:
vi /etc/postfix/master.cf
policyd-spf unix - n n - 0 spawn
user=policyd-spf argv=/usr/libexec/postfix/policyd-spf
Füge die Zeilen am Ende der Datei master.cf hinzu, hierdurch wird Postfix angewiesen den SPF-Richtliniendämon zu starten. Policyd-SPF wird als Benutzer policyd-spf ausgeführt.
Policyd-SPF sollte nicht in einer chroot-Umgebung ausgeführt werden.
Speichere und schliesse nun die Datei.
Postfix Hauptkonfiguration
Bearbeite als Nächstes die Postfix-Hauptkonfigurationsdatei main.cf:
vi /etc/postfix/main.cf
policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
check_policy_service unix:private/policyd-spf,
permit
Die Zeile mit policyd-spf sollte nach reject_unauth_destination zu stehen kommen. Speichere anschlissend die Datei und starte dann Postfix neu:
systemctl restart postfix
SPF-Überprüfung der E-Mail
Wenn jetzt eine E-Mail von deiner Domain mit einem SPF-Datensatz empfangen wird, werden die SPF-Prüfergebnisse im RAW E-Mail-Header angezeigt. Der folgende Header gibt an, dass der Absender der E-Mail von einem autorisierten Host gesendet wurde.
Received-SPF: Pass (mailfrom) identity=mailfrom;
Postfix protokolliert mit syslog die SPF-Prüfergebnisse in maillog in etwa wie folgt.
Jul 19 07:10:38 mailhub policyd-spf[24382]: Pass; identity=helo; client-ip=12.34.56.78; helo=mail77-192.srv2.com; envelope-from=return@news.domain.com; receiver=max.muster@domain.com
Fazit
Dieser Beitrag zeigt die Anwendung und Konfiguration von SPF (Sender Policy Framework) unter Postfix. Für die E-Mail-Sender-Authentifizierung. Der SPF-Datensatz für E-Mails des Typ TXT des DNS wird von Postfix mit policyd-spf überprüft, auf das Vorhandensein der Sender Domain. Das dazu beitragen sollen, E-Mail-Spoofing zu verhindern und bei der Zustellung der eigenen E-Mails diese als legitim zu identifizieren.