Selektive RBL, SPF , Greylisting checks mit smtpd_restriction_classes in Postfix

Abstract

Da ich heute wiedermal lesen musste ,dass die RBL ( Real Time Blacklist ) Spamcop GMX und T-online Mail Adressen ausgesperrt hat, möchte ich hier kurz ein Verfahren vorstellen, dass eine fehlertolerante Nutzung von RBLs , Greylisting usw erlaubt.

Da ich heute wiedermal lesen musste, dass die RBL (Real Time Blacklist) Spamcop GMX und T-online Mail Adressen ausgesperrt hat, möchte ich hier kurz ein Verfahren vorstellen, welches eine fehlertolerante Nutzung von RBLs, Greylisting usw. erlaubt.

Eigentlich ist die selektive Verwendung von z.B. Greylisting ein alter Hut, es scheint sich aber nicht wirklich herumgesprochen zu haben, in meinen Logs finde ich immer noch massenweise Verzögerungen bei der Auslieferung von Mails auf Grund von totalem Greylisting beim Empfänger. Ich empfinde das als sehr ärgerlich weil es völlig unnötig ist. Greylisting als Technologie wird von den heutigen modernen Spambots bereits überwunden, trotzdem setze ich es weiterhin ein. Aber eben nicht für jeden Verbindungsversuch auf SMTP. Im Übrigen sei hier auf postscreen verwiesen dass sich besser zur Abwehr von Bots eignet.

Das Zauberwort, dass eigentlich keines ist, heißt smtpd_restriction_classes. Damit ist es möglich ein wenig mehr Intelligenz in die Antispam Filterung einzubauen, diese Methode kann gleichzeitig auch für RBLS oder einen SPF check verwendet werden. Ähnliche Ideen finden sich auch in diversen Miltern. Ich beschreibe aber hier eine einfache sehr flexible Methode nur mit Verwendung von smtpd_restriction_classes in Postfix.

Hier nun ein Beispiel aus der Postfix main.cf, das man beliebig abändern und seinem eigenen Setup anpassen kann.

smtpd_client_restrictions = permit_mynetworks,
                            permit_sasl_authenticated,
                            ...
                            check_client_access pcre:/etc/postfix/rbl_client_access_pcre,
                            check_client_access pcre:/etc/postfix/greylist_client_access_pcre,
                            check_client_access pcre:/etc/postfix/spfcheck_client_access_pcre,
                            ...

smtpd_restriction_classes = greylisting, spfcheck, rblcheck

greylisting = permit_mynetworks,
              permit_sasl_authenticated,
              permit_dnswl_client list.dnswl.org,
              check_policy_service inet:127.0.0.1:2501

spfcheck = permit_mynetworks,
           permit_sasl_authenticated,
           permit_dnswl_client list.dnswl.org,
           check_client_access hash:/etc/postfix/whitelist_client_spf_access,
           check_policy_service unix:private/spfcheck

rblcheck = permit_mynetworks,
           permit_sasl_authenticated,
           check_client_access hash:/etc/postfix/client_rbl_whitelist_access,
           permit_dnswl_client list.dnswl.org,
           reject_rbl_client zen.spamhaus.org,
           reject_rbl_client ix.dnsbl.manitu.net

In der Datei /etc/postfix/rbl_client_access_pcre steht nun:

/etc/postfix/rbl_client_access_pcre

/(\-.+){4}$/ rblcheck
/(\..+){4}$/ rblcheck
# everything with 4 or more dots/hyphens in the hostname

/(^|[0-9.x_-])(abo|br(e|oa)dband|cabel|(hk)?cablep?|catv|cbl|cidr|d?client2?|cust(omer)?s?|dhcp|dial?(in|up)?|d[iu]p|[asx]?dsld?|dyn(a(dsl|mic)?)?|home|in-addr|modem(cable)?|(di)?pool|ppp|ptr|rev|static|user|YahooBB[0-9]{12}|c[[:alnum:]]{6,}(\.[a-z]{3})?\.virtua|[1-9]Cust[0-9]+|AC[A-Z][0-9A-F]{5}\.ipt|pcp[0-9]{6,}pcs|S0106[[:alnum:]]{12,}\.[a-z]{2})[0-9.x_-]/ rblcheck

Der Aufbau ist schnell erklärt, die IP Adresse jeder SMTP Verbindung wird durch einen Filter geschickt der an Hand des DNS Reverse Namens der IP Adresse entscheidet ob eine weitere Filterklasse verwendet werden soll, z.B ob ein Greylisting zum Einsatz kommt, oder ob RBLs abgefragt werden. Zusätzlich ist noch eine lokale Whitelist und eine Whitelist RBL für jeden Filter aktiv.

Schlusswort

Die Anordnung der Filterklassen ist ein wenig Geschmacksache und sollte an der Analyse der Server Logs ausgerichtet werden, jeder hat seinen eigenen Spam. Auch die Verwendungung von RBLS ist nicht unumstritten, wie auch immer ein Postmaster entscheidet sollten diese Mittel jedoch möglichst klug eingesetzt werden. In Kombination mit Spamassassin und weiteren Verfahren muss niemand fürchten dass seine Spamfilterung erheblich leidet wenn er z.B. nur selektiv greylistet.

Robert Schetterer, 09. October 2013