Der Anteil an Spam E-Mails nimmt leider immer mehr zu.

Eine recht wirksame Methode ist es, die eingehenden Spam-Mails erst gar nicht vom Mail-Server anzunehmen, sondern direkt abzulehnen.

Hier beschreibe ich eine (erstaunlich einfache) Möglichkeit den Postfix MTA (Mail Transfer Agent) so einzurichten, dass dieser eingehende Mails über das Spamhaus Projekt prüft und E-Mails von bekannten Spam-Servern direkt ablehnt.

Einrichtung

In der Konfigurationsdatei /etc/postfix/main.cf fügen wir dem Eintrag smtpd_client_restrictions einfach ganz am Ende die folgenden Einträge hinzu:

reject_rbl_client zen.spamhaus.org reject_rhsbl_client dbl.spamhaus.org

In einer Konfiguration mit ISP Config könnte die Zeile dann beispielsweise so aussehen:

smtpd_client_restrictions = check_client_access mysql:/etc/postfix/mysql-virtual_client.cf reject_rbl_client zen.spamhaus.org reject_rhsbl_client dbl.spamhaus.org

Nach der Änderung starten wir Postfix neu.

systemctl restart postfix.service bzw. service postfix restart

Das war’s auch schon. Nun sollte ein sehr großer Teil der eingehenden Spam-Mails direkt abgelehnt werden, wobei normale Mails zuverlässig zugestellt werden.

kurze Erklärung

zen.spamhaus.org ist eine IP-basierte Blacklist, genauer gesagt eine Kombination aus mehreren (SBL, SBLCSS, XBL und PBL), über die für Spam bekannte IPs von Servern identifiziert und blockiert werden. Siehe auch https://www.spamhaus.org/zen/.

dbl.spamhaus.org ist eine Domain-basierte Blacklist, über die für Spam bekannte Domains identifiziert und blockiert werden. Siehe auch https://www.spamhaus.org/dbl/.

Funktionsprüfung

Dass es funktioniert sollte man schon daran merken, dass deutlich weniger bis gar kein Spam mehr beim E-Mail-Konto ankommt.

Außerdem wird im Log /var/log/mail.log für jede geblockte eingehende E-Mail ein Eintrag ähnlich dem folgenden Erzeugt:

Mar 20 18:16:25 meinserver postfix/smtpd[10607]: NOQUEUE: reject: RCPT from unknown[123.123.123.123]: 554 5.7.1 Service unavailable; Client host [123.123.123.123] blocked using zen.spamhaus.org; https://www.spamhaus.org/query/ip/123.123.123.123; from=<spam@example.com> to=<ich@example.com> proto=ESMTP helo=<127.0.0.2>

Gefiltert anzeigen lassen sich diese Einträge zum Beispiel wie folgt:

cat /var/log/mail.log | grep -F "blocked using"