Ich habe mich echt lange davor gedrückt mit endlich mal richtig mit SPF (und DKIM, dazu aber ein andermal mehr) zu beschäftigen. Heute habe ich es dann endlich gemacht und er hat gar nicht gebohrt es war verblüffend einfach und schnell gemacht.

SPF ist dazu da einem empfangenden Mailsystem eine Möglichkeit zu geben festzustellen ob der einliefernde Server vom Domaininhaber überhaupt für den Mailversand vorgesehen wurde.

Damit das klappt muss der Domaininhaber einen TXT-Record im DNS anlegen. Dieser legt dann fest, welche Mailserver für die entsprechende Domains für den Mailversand freigegeben sind. Schickt nun ein anderer Mailserver eine Mail im Namen unter Verwendung dieser Domain kann der Empfänger davon ausgehen dass es sich um SPAM handelt.

Den nötigen TXT-Record kann man sich mittels eines Generators erstellen lassen, z.B.: http://www.spf-record.de/generator

Der Record für 21×9.org sieht wie folgt aus:

v=spf1 mx a ip4:89.238.78.112/29 -all

Das v=spf1 dient nur zur Identifikation des Records. a und mx erlauben den Versand über die IP/den Hostnamen des A- und MX-Records. Zusätzlich ist noch meine IP-Range (ip4) angegeben, so muss ich nicht daran denken den Eintrag zu ändern, sollte ich den Mailserver mal auf eine andere IP legen wollen. -all letztlich gibt an dass nicht-konforme Mails abgewiesen werden. Alternativ könnte ~all genutzt werden. In diesem Fall werden nicht konforme Mails nur markiert aber nicht verworfen.

Hat man seinen SPF-String zusammengestellt geht man damit zu seinem Domainverwalter und trägt diesen als TXT-Record für die entsprechende Domain im DNS ein. Wie das geht ist von Anbieter zu Anbieter sehr unterschiedlich. Einige Anbieter erlauben auch, neben dem TXT-Record, direkt einen Record vom Typ SPF anzulegen, in diesem Fall sollte der TXT-Eintrag trotzdem auch vorgenommen werden.

Ob der Eintrag korrekt gesetzt wurde kann mittels dig TXT $domainname geprüft werden. Eventuell dauert es eine Weile bis der Eintrag angezeigt wird, da sich der Eintrag erst im DNS-System herumsprechen muss. Die genauen Auswirkungen des Eintrags können auch noch einmal mittels http://www.spf-record.de/spf-lookup geprüft werden.

Ab nun sollten fremde Mailserver, sofern sie SPF nutzen, entsprechend auf gefälschte Mails reagieren. Damit unser Mailserver dies ebenfalls tut sind noch ein paar weitere Schritte nötig.

Zunächst muss das Paket postfix-policyd-spf-python installiert werden:

apt-get install postfix-policyd-spf-python

Wer SpamAssassin nutzen sollte in der Datei /etc/postfix-policyd-spf-python/policyd-spf.conf folgende Anpassungen vornehmen:

HELO_reject = False
Mail_From_reject = False

Dadurch setzt policyd-spf nur entsprechende Header, die SpamAssassin auswerten kann, blockt Mails aber nicht selbst ab. Die gleichen Settings kann man auch nutzen wenn man erst einmal die Auswirkungen von SPF in seinen Logfiles sehen, aber Mails noch direkt nicht ablehnen, möchte.

Anschließend muss die Postfix-Konfiguration mittels /etc/postfix/master.cf angepasst werden. An das Ende der Datei wird der folgende Eintrag eingefügt:

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

Weiter geht es in /etc/postfix/main.cf. Hier wird zunächst folgende neue Zeile eingefügt:

policyd-spf_time_limit = 3600

Der bestehende Eintrag smtpd_recipient_restrictions wird um die folgende Zeile erweitert:

check_policy_service unix:private/policyd-spf

Wichtig: Die Zeile muss unterhalb des (hoffentlich) bereits bestehenden Eintrags reject_unauth_destination eingefügt werden.

Abschließend wird postfix neu gestartet:

systemctl restart postfix

Eingehende Mails sollten ab nun einen Header Received-SPF enthalten. Im Postfix-Logfile sollten Meldungen von policyd-spf enthalten sein, die Auskunft über den SPF-Status der eingehenden Mails geben.

Wie in der Einleitung oben schon angedeutet wird es im nächsten Artikel dann um DKIM (DomainKeys Identified Mail) gehen.


Comments

Blog Comments powered by Disqus.

Next Post Previous Post