Tutorial | Spamassassin DNSBL und RBL Beispiel Konfiguration

von Thomas


Erstellt am 08.01.2022


Spam Foto

Benötigst Du Hilfe bei Spamassassin oder Linux-Mailservern?

Kontaktiere mich über die Möglichkeiten auf meiner Kontaktseite.

Einführung

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.

DNSBL / RBL

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.

DNSBL lookup
DNSBL Lookup

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 konfigurieren

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:

  • Mailspike
  • SORBS
  • SpamCop
  • Spamhaus ZEN
  • SURBL
  • URIBL

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
  • header – ist der Name des Tests in diesem Fall RCVD_IN_HOSTKARMA.
  • describe – ist die Beschreibung der Fiterregel.
  • tflags – gibt an in welchem Filtersystem die Punkte vergeben werden sollen. Möglichkeiten sind dabei net|nice|learn|userconf|noautolearn. Sie sind besonders wichtig, falls bayes Verwendung findet.
  • score – gibt den Score an, welcher dem Spamscore addiert oder abgezogen wird.

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.