Sender Policy Framework (SPF) auf Debian Server

4.5
(2)

Sender Policy Framework (SPF) ist ein Dienst, der bereitgestellt wird, um nicht als Spam-Absender identifiziert zu werden.

postfix-policyd-spf ist eine voll funktionsfähige Engine zur SPF-Prüfung unter Postfix. Der Daemon umfasst eine Vielzahl von Whitelist-Mechanismen und Richtlinienoptionen, um die unterschiedlichsten Systemanforderungen zu erfüllen. postfix-policyd-spf-perl wurde auf Perl implementiert, weiter auf Python gibt es postfix-policyd-spf-python, dieses das Python-SPF-Modul (spf) verwendet. Als Postfix Modul wird RFC 7208 des Sender Policy Framework (SPF) unterstützt.

Sender Policy Framework (SPF) auf Debian Server

Hierbei werden im DNS (Domain Name System) zusätzliche Informationen in Form eines SPF-Records gespeichert. Dieser TXT-basierte SPF-Eintrag beinhaltet konkrete Informationen zu autorisierten Mailservern, wie Mail Transfer Agent (MTA).

Installation von Postfix policyd-spf

Die Installation auf Debian 10 und Debian 11 beginnt wie folgt als root:

$ apt install postfix-policyd-spf-python

Wird das Perl Modul bevorzugt, kann der Perl SPF-Milter wie folgt als root installiert werden.

$ apt install postfix-policyd-spf-perl

Nachdem postfix-policyd-spf-python, oder postfix-policyd-spf-perl installiert ist, Bearbeiten wir die Konfigurationsdatei des Postfix-Master-Prozesses.

$ vi /etc/postfix/master.cf

Um die Postfix Anweisung mit der Python SPF-Richtlinienprüfung zu starten, füge am Ende der Datei master.cf die folgenden Zeilen hinzu.

policyd-spf  unix  -       n       n       -       0       spawn
   user=policyd-spf argv=/usr/bin/policyd-spf

Bei der SPF-Richtlinienprüfung auf Perl implementierung wie folgt.

policyd-spf  unix  -       n       n       -       0       spawn
   user=policyd-spf argv=/usr/sbin/postfix-policyd-spf-perl

Speichere und schließe die Datei. Bearbeite als Nächstes die Postfix Hauptkonfigurationsdatei.

$ vi /etc/postfix/main.cf

Die folgenden Zeilen am Ende der Datei main.cf hinzufügen. Die erste Zeile gibt die Timeout-Einstellung für den Postfix-Policy-Agent an. Die folgenden Zeilen schränken eingehende E-Mails ein, indem der SPF-Eintrag überprüft wird und nicht autorisierte E-Mails abgelehnt werden.

policyd-spf_time_limit = 3600
smtpd_recipient_restrictions =
   permit_mynetworks,
   permit_sasl_authenticated,
   reject_unauth_destination,
   check_policy_service unix:private/policyd-spf

Hinweis! ist check_policy_service nicht die letzte Zeile unter dem Abschnitt smtpd_recipient_restrictions, dann muss ein Komma (,) am Zeilenende stehen. Kein Komma beim letzten Eintrag.

Speichere und schließe die Datei.

  Sicherstellen das die user id „policyd-spf“ angelegt ist, Überprüfen lässt sich das mit id policyd-spf. Das Systemkonto wird benötigt und kann, falls es fehlt wie folgt angelegt werden.

$ useradd -r -M policyd-spf -s /usr/sbin/nologin

Starte nun Postfix neu.

$ systemctl restart postfix

Wenn die nächste E-Mal von einer Domain mit einem SPF-Record im DNS empfangen wird, kann man die Ergebnisse der SPF-Prüfung im RAW-E-Mail-Header sehen. Der folgende Header gibt an, dass die E-Mail von einem autorisierten Absender Host versendet wurde.

policyd-spf[733750]: prepend Received-SPF: Pass

Die Ausgabe bei Verwendung von Postfix Policy-SPF mit Perl.

postfix/policy-spf[735983]: Policy action=PREPEND Received-SPF: pass

Python und Sender Policy Framework prüfen

Bei der Verwendung von postfix-policyd-spf-python muss Python, sowie das Python-SPF-Modul auf dem Server verhanden sein. Die Überprüfung kann wie folgt vorgenommen werden.

$ python3
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> help('modules')

Ist Python auf dem System installiert, werden mit dem Befehl help('modules') mehrere Module in Spalten angezeigt. Das Modul spf und spf_engine wird vorausgesetzt. Das Python Modul kann wie folgt hinzugefügt werden.

pip install pypolicyd-spf

SPF Record prüfen

Um ein SPF TXT Record einer Domain zu überprüfen, kann folgender Befehl in einem Linux Terminal ausgeführt werden.

$ dig TXT mydomain.net +short
 "v=spf1 a mx ~all"

Bei der Verwendung von Windows, ist der nslookup Befehl aus einem Command Prompt auszuführen.

C:\> nslookup -type=TXT mydomain.net
 "v=spf1 a mx ~all"

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung 4.5 / 5. Anzahl Bewertungen: 2

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert