Mit Postfix SPAM blockieren

Der beste SPAM ist solcher, der gar nicht zugestellt wird. Deswegen macht es Sinn, dass direkt mittels Postfix SPAM blockiert wird. Wenn eine Mail direkt beim Zustellversuch untersucht und ggf. abgelehnt wird, ist man rechtlich auf der sicheren Seite. Außerdem werden Ressourcen gespart, indem Tools wie ClamAV, SpamAssassin und Co. nur auf vorgefilterte Mails losgelassen werden.

Im Folgenden beschreibe ich, wie bereits mit Postfix Antispam Maßnahmen eingeführt werden können. Dazu habe ich die relevanten Ausschnitte der Postfix Konfigurationsdatei /etc/postfix/main.cf beigefügt. Wichtig ist mir hierbei, dass die unten aufgeführten Einstellungen keineswegs einfach per Copy&Paste übernommen werden sollten. Die Konfiguration funktioniert bei mir sehr gut, trotzdem solltet ihr genau wissen, was ihr tut.

Die Konfiguration wurde unter Ubuntu 14.04 (Postfix 2.11) erstellt und getestet. Seit Postfix 2.10 wird für das (authentifizierte) Relayen von Mails die Konfiguration unter smtpd_relay_restrictions verwendet. In früheren Versionen wurden die Einstellungen unter smtpd_recipient_restrictions verwendet, was manchmal zu komischem Verhalten führte. Weitere Informationen dazu gibt es auf der Postfix Homepage.

Die Konfiguration

smtpd_sender_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unknown_sender_domain,
  reject_non_fqdn_sender
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination,
  reject_unauth_pipelining,
  check_client_access hash:/etc/postfix/client_checks,
  check_sender_access hash:/etc/postfix/sender_checks,
  reject_unknown_helo_hostname,
  reject_invalid_hostname,
  reject_non_fqdn_hostname,
  reject_non_fqdn_recipient,
  permit_dnswl_client list.dnswl.org,
  reject_rbl_client ix.dnsbl.manitu.net,
  reject_rbl_client zen.spamhaus.org,
  reject_rbl_client b.barracudacentral.org,
  reject_rbl_client bl.spamcop.net,
  reject_rbl_client psbl.surriel.com,
  reject_rbl_client noptr.spamrats.com,
  reject_rbl_client dyna.spamrats.com,
  reject_rbl_client dnsbl.sorbs.net

 

Die Einstellungen im Detail

 

smtpd_sender_restrictions

Hier wird Postfix mitgeteilt, welche Checks während des “MAIL FROM” Kommandos auszuführen sind. Alle weiteren Checks werden top-down, also von oben nach unten durchgeführt. Sobald ein Check anschlägt, sei es permit oder reject, wird diese Kette verlassen und keine weiteren Checks werden durchgeführt.

Mittels permit_mynetworks und permit_sasl_authenticated werden Mails von vertrauenswürdigen Netzen und authentifizierten Benutzern in jedem Fall durchgelassen.

Durch die Befehle reject_unknown_sender_domain sowie reject_non_fqdn_sender wird erstmal geprüft, ob der sendende MTA zumindest die RFC Basics eingehalten hat. Also ob hinter der Domain ein DNS A-Record steckt und ob es einen FQDN gibt.

 

smtpd_recipient_restrictions

Hier passiert die eigentliche “Magie”. Seit Postfix 2.10 und der Einführung der smtpd_relay_restrictions bin auch ich dazu übergegangen, eigentlich alle Checks hier aufzuführen. Genauere Informationen darüber gibt es auf der Postfix Website.

Die Einstellungen permit_mynetworks und permit_sasl_authenticated bewirken das Gleiche wie oben. Danach wird es interessanter. Der Punkt reject_unauth_destination ist vermutlich der wichtigste Befehl. Er legt fest, dass unauthentifizierte Benutzer nur Mails an die eigenen Domains senden dürfen und somit kein Open Relay entsteht.

 

RFC-Konforme Checks

Mittels check_client_access und check_sender_access könnten Whitelists erstellt werden. Dies kann hin und wieder nützlich sein, z.B. wenn fremde, legitime Mailserver falsch konfiguriert sind.

Die Punkte reject_unknown_helo_hostname und reject_invalid_hostname prüft, ob der Host im HELO einen (gültigen) DNS A oder MX Record hat. Falls nicht, wird die Mail abgelehnt.

Zu guter Letzt wird mittels reject_non_fqdn_hostname und reject_non_fqdn_recipient noch geprüft, ob die Empfängerdomain im FQDN-Format vorliegt. Also wieder ziemliche “Basics”. Trotzdem helfen diese Regeln, schon mal recht viele Mails von schlecht konfigurierten SPAM Mailservern abzulehnen.

 

Whitelist

Vor den ganzen DNSBLs habe ich einen Check zur bekannten Whitelist dnswl.org eingebaut. Falls eine sendende IP dort gelistet ist, durchläuft sie nicht die weiteren Checks der ganzen Blacklists. Dadurch kann ich etwas restriktivere Blacklists verwenden, ohne gleich Gefahr zu laufen, dass zu viele false-positives auftreten könnten. Hin und wieder sind beispielsweise einzelne IPs von United Internet (GMX und Co.) auf der Sorbs Blacklist gelistet. Da GMX aber in der Whitelist gelistet ist, brauche ich mir darüber keine Gedanken zu machen. Ich kann auch jedem Mailserver-Administrator empfehlen, sich dort auf dieser Whitelist einzutragen.

Postfix kann die DNS Whitelist ab Version 2.8 direkt mit dem Kommando permit_dnswl_client list.dnswl.org abfragen.

 

Blacklist

Der Befehl reject_rbl_client frägt die jeweilige DNS Blacklist ab und lehnt die Mail ab, wenn eine der Blacklists einen gelisteten Eintrag zurückgibt. Ich habe mich für die oben genannten acht Stück entschieden. Sie existieren allesamt relativ lange und waren bisher sehr zuverlässig. Hier sollte trotzdem regelmäßig ein Review stattfinden, denn manche DNSBLs geben, wenn sie eines Tages out-of-service gehen, immer “listed” zurück. Folglich würden dann alle Mails abgelehnt werden.

 

Schreibe einen Kommentar

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