Ich habe mich rein aus Interesse die Tage mit dem Aufbau einer eigenen SBL beschäftigt. Eine SBL ist eine DNS-Zone, in der IP Adressen von Spammern imReverse Format eingetragen werden. Dies ermöglicht Postfix, policyd-weight und Spamassassin anschließend die Sender IP Adressen bei eingehenden Mails gegen diese DNS-Zone zu prüfen. Wurde ein entsprechender Eintrag gefunden, kann die E-Mail als Spam behandelt werden.
Beispiel: Meldet sich ein Server mit der IP Adresse 192.168.0.1 und möchte eine E-Mails bei uns los werden, so prüft das entsprechende Programm (Postfix, policyd-weight oder Spamassassin) ob diese IP Adresse in der SBL sbl.blog.cscholz.io eingetragen ist.
nslookup 1.0.168.192.sbl.blog.cscholz.io
Ist dies der Fall, wird eine IP aus dem 127.0.0.x Netz zurück geliefert, die jedoch nicht 127.0.0.1 sein darf. Ist dies der Fall, weiß das Programm, dass diese IP Adresse auf der Blackliste steht und behandelt die E-Mails entsprechend.
Im Internet gibt es schon zig SBLs, von denen einige besser als andere Funktionieren. Wie gesagt, ich wollte rein aus Interesse eine eigene SBL aufbauen.
das Script
Um eine SBL füttern zu können, benötigt man zu aller erst Spam Mails. Ich hab schon länger zum testen zwei Domains, die nur genau dem Zweck dienen, Spam Mails ein zu sammeln.
Sobald Spam Mails vorhanden sind, müssen die IP Adressen aus den Mails extrahiert werden. Dazu habe ich ein relativ simples Script geschrieben, dass nur die im header vorhandenen IPs heraus filtert. Ursprünglich war mein Gedanke, die Hostnamen aus dem Header per dig aufzulösen, jedoch ist dies relativ schwierig, da die Header Zeilen nicht immer identisch aussehen. Da ich jedoch keine Professionelle SBL aufbauen wollte, reichte es mir die vorhandenen IP Adressen zu filtern.
Das Script kann hier herunter geladen werden. Im Kopfbereich des Scriptes muss der Pfad zum Mailverzeichniss mit dem Spam Mails sowie der Pfad zum sbl zone file angegeben werden.
die DNS-Zone
Da meine sbl eine Dubdomain der Domain blog.cscholz.io ist, muss zuerst in der Zone blog.cscholz.io.zone ein Eintrag für die Subomain hinzugefügt werden.
sbl 10800 IN NS ns.blog.cscholz.io.
Anschließend kann die Subdomain sbl.blog.cscholz.io eingerichtet werden.
$TTL 10800 @ 2560 IN SOA ns.blog.cscholz.io. postmaster.blog.cscholz.io. ( 2010082404 ; serial YYYYMMDDnn 3600 ; refresh ( 1 h) 900 ; retry ( 15 min) 1209600 ; expire ( 14 day) 10800 ) ; minimum ( 3 hours) @ 10800 IN NS ns.blog.cscholz.io. @ 10800 IN A 83.169.42.112
Wird nun das Script ausgeführt, so werden die IP Adressen aus dem Header der Spam Mails wie folgt in der Zone eingetragen.
100.124.78.80 IN A 127.0.0.10
Wenn alles richtig funktioniert, ist es nun an der Zeit, die SBL auszuwerten. Es gibt dafür mehrere Möglichkeiten.
- policyd-weight
- Spamassassin
- Postfix
Auswertung mittels policyd-weight
Um die SBL mittels policyd-weight abzufragen, muss in der Datei /etc/policyd-weight.conf die SBL aktiviert werden.
[...] @dnsbl_score = ( # HOST, HIT SCORE, MISS SCORE, LOG NAME 'pbl.spamhaus.org', 3.25, 0, 'DYN_PBL_SPAMHAUS', 'sbl-xbl.spamhaus.org', 4.35, -1.5, 'SBL_XBL_SPAMHAUS', 'bl.spamcop.net', 3.75, -1.5, 'SPAMCOP', 'dnsbl.njabl.org', 4.25, -1.5, 'BL_NJABL', 'ix.dnsbl.manitu.net', 4.35, 0, 'IX_MANITU', 'sbl.blog.cscholz.io', 3.35, 0, 'OOS_DE' ); [...]
Sollte die Konfigurationsdatei nicht existieren, kann diese mittels
policyd-weight defaults > /etc/policyd-weight.conf
angelegt werden.
Auswertung durch postfix
Postfix kann die SBL ebenfalls auswerten. Jedoch ist dabei zu beachten, dass Postfix die E-Mails anhand der SBL nicht bewertet, sondern direkt rejected.
/etc/postfix/main.cf
smtpd_recipient_restrictions = [...] reject_rbl_client sbl.blog.cscholz.io [...]
Auswertung durch Spamassassin
Zu guter letzt noch die Auswertung durch Spamassassin. Hierzu muss eine neue Konfigurationsdatei angelegt werden, in der die Regeln definiert werden.
/etc/mail/spamassassin/99_local_bl.cf
header RCVD_IN_OOSBL eval:check_rbl('oos', 'sbl.blog.cscholz.io.') describe RCVD_IN_OOSBL Received via IP listed by sbl.blog.cscholz.io tflags RCVD_IN_OOSBL net score RCVD_IN_OOSBL 2.5
Links
- http://book.opensourceproject.org.cn/mail/spam/spamassassin/opensource/0596007078/spamassassin-chp-3-sect-3.html#spamassassin-chp-3-sect-3.1
- http://commons.oreilly.com/wiki/index.php/SpamAssassin/SpamAssassin_Rules
- http://www.oreilly.de/german/freebooks/spamvirger/pdf/115-136.pdf
- http://www.rbl.org.za/index.php?action=artikel&cat=3&id=6&artlang=en
- http://spamassassin.apache.org/full/3.2.x/doc/Mail_SpamAssassin_Conf.txt