von Thomas
Erstellt am 08.01.2022
Benötigst Du Hilfe bei Spamassassin oder Linux-Mailservern?
Kontaktiere mich über die Möglichkeiten auf meiner Kontaktseite.
Jeder kennt es, jedem wurde es schonmal zugestellt – Spam. Spam sind unerwünschte Mails, die einem ins digitale Postfach gelegt werden. Meist beinhaltet Spam nur Werbebotschaften mit Angeboten des Spammers. Mit einem Klick auf „löschen“ ist die Mail verschwunden und der Ärger über die Klickarbeit ist schon fast vergessen. Problematisch wird es, wenn die Spam Mails auf Phishing oder Virenverteilung aus sind. Dann können sie für ungeschulte Blicke problematisch werden. Um schlimmeres zu verhindern, filtern Mailserver in der Regel die eingehenden Mails, Spam wird dabei automatisch aussortiert. Bei dem Filtersystem kommen diverse Kriterien zum Einsatz, nicht unüblich ist es ein System zu verwenden, welches automatisch lernt – Bayes. Aber auch sogenannte Filter für DNSBL (früher RBL) werden gerne verwendet. Dieser Artikel soll das mit DNSBL basierte Filtern erläutern und einen praktischen Einstieg mit dem viel verwendeten Spamfilter Spamassassin geben.
Beide Begriffe, DNSBL und RBL, sind heute geläufig. Dabei unterscheiden sie sich lediglich darin, dass Realtim Blackhole List (RBL) als erster Begriff aufkam und später DNS-based Blackhole List (DNSBL) genannt wurde. Umgangssprachlich wird eine DNSBL-Liste auch einfach nur Blacklist genannt.
Funktionsweise:
Die Funktion basiert auf dem Domain Name System (DNS). Dabei wird ein Verzeichnis von IP-Adressen der
Spammern geführt. Mit einer Anfrage an die Blacklist, kann ermittelt werden, ob die IP-Adresse oder
Domain von der die Mail kam, ein potenzieller Spammer ist. Dabei ist das Prozedere im RFC6471
beschrieben. Die DNS Abfrage an die DNSBL erfolgt dabei
mit der umgekehrten IP-Adresse. Ein gutes Beispiel dazu ist unter folgendem Link zu finden.
Die DNSBL antworten mit IP-Adressen aus dem Bereich des localhost. Dabei sind die Returncodes den Betreibern vorbehalten, in der Regel bedeutet 127.0.0.1 kein Spam und 127.0.0.2 Spam.
Spamassassin ist ein Filtersystem für MTA welcher seit über 20 Jahren Anwendung findet. Spamassassin hat sehr viele Filterfunktionen, in diesem Tutorial möchte ich mich aber auf die Funktion der DNSBL beschränken. Dabei bringt Spamassassin die populärsten DNSBL bereits als Standard mit:
Mit diesen Listen ist der Filter zunächst gut bedient. Spamassassin bietet aber auch die Möglichkeit eigens konfigurierte Listen hinzuzufügen. Das geschieht in der Datei /etc/mail/spamassasin/custom.cf. Die anderen Dateien in diesem Ordner sollten nicht verändert werden, da sie bei einem Update überschrieben werden könnten. Die Dokumentation ist leider etwas sperrig, sodass ich sie an einer Konfiguration von der junkemailfilter.com DNSBL etwas erläutern möchte.
header __RCVD_IN_HOSTKARMA eval:check_rbl('HOSTKARMA-lastexternal','hostkarma.junkemailfilter.com.') describe __RCVD_IN_HOSTKARMA Sender listed in JunkEmailFilter tflags __RCVD_IN_HOSTKARMA net header RCVD_IN_HOSTKARMA_W eval:check_rbl_sub('HOSTKARMA-lastexternal', '127.0.0.1') describe RCVD_IN_HOSTKARMA_W Sender listed in HOSTKARMA-WHITE tflags RCVD_IN_HOSTKARMA_W net nice score RCVD_IN_HOSTKARMA_W -2 header RCVD_IN_HOSTKARMA_BL eval:check_rbl_sub('HOSTKARMA-lastexternal', '127.0.0.2') describe RCVD_IN_HOSTKARMA_BL Sender listed in HOSTKARMA-BLACK tflags RCVD_IN_HOSTKARMA_BL net score RCVD_IN_HOSTKARMA_BL 3.0 header RCVD_IN_HOSTKARMA_BR eval:check_rbl_sub('HOSTKARMA-lastexternal', '127.0.0.4') describe RCVD_IN_HOSTKARMA_BR Sender listed in HOSTKARMA-BROWN tflags RCVD_IN_HOSTKARMA_BR net score RCVD_IN_HOSTKARMA_BR 1.0
Die Abfrage funktioniert dabei wie folgt: im ersten Block ist die Funktion check_rbl definiert, die einen eindeutigen Namen der Liste definiert (HOSTKARMA-lastexternal) und einen FQDN (hostkarma.junkemailfilter.com.). Da die DNSBL von junkemailfilter mehrere Returncodes anbietet, kann hier mit der Funktion check_rbl_sub das Regelset festgelegt werden, je nachdem welcher Code zurückgegeben wurde.
Eine Abfrage, die nur einen Returncode vorsieht würde wie folgt aussehen:
header RCVD_IN_NIX_SPAM eval:check_rbl('nix-spam-lastexternal','ix.dnsbl.manitu.net.') describe RCVD_IN_NIX_SPAM Listed in NIX-SPAM DNSBL (heise.de) tflags RCVD_IN_NIX_SPAM net score RCVD_IN_NIX_SPAM 3.0 # please adjust the score value
Eine Auflistung von aktiven DNSBL betreibt die Webseite intra2net
Hinweis: Spamassassin ist ein sehr altes Filtersystem was sich zwar wieder aktiver Entwicklung erfreut, dennoch lohnt sich ein Blick auf den sehr viel moderneren Spamfilter rspamd.