Website-Icon .: blog cscholz.io :.

Aufbau einer eigenen SBL (Spam Blacklist)

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.

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

Die mobile Version verlassen