Spamfilteurng ist ein permanenter Kampf, in dem man seine Ansatzpunkte immer wieder neu überdenken bzw. anpassen muss.
Aktuell bin ich auf die Möglichkeit gestoßen (die es bestimmt schon länger gibt 😉 ), die Spam Filterung von amavisd-new/spamassassin anhand von Fingerprints zu verfeinern. Viele der Spam E-Mails werden von Botznetzwerken verschickt. Dies lässt sich mit p0f in die Bewertung von Spam E-Mails mit einbeziehen. P0f ist in der Lage, passive anhand der Verbindungskriterien das Betriebssystem der Gegenstelle zu bestimmen. Das Betriebssystem wiederrum ermöglicht Rückschlüsse auf die wahrscheinlichkeit das die eingehende E-Mail eine Spam E-Mail ist.
Installation von p0f
Installieren lässt sich p0f unter Debian netterweise wieder über apt-get (Ich liebe die Menge an verfügbaren Paketen)
apt-get install p0f
Start/Stop Skript
Um p0f beim booten mit den entsprechenden Parametern zu starten habe ich ein Skript unter /etc/init.d/ abgelegt welches dann über das antsprechende Runlevel gestartet wird. Anschließend muss dieses noch fürs entsprechende Runlevel verlinkt werden.
ln -s /etc/init.d/p0f.sh /etc/rc2.d/S99p0f
Amavisd-New anpassen
Nun muss der Filter noch über amavisd-new aktiviert werden. Da ich verschiedene Policies einsetzt, habe ich es in den entsprechenden Policies aktiviert.
/etc/amavis/conf.d/50-user
$policy_bank{'blog.cscholz.io'} = { [...] os_fingerprint_method => 'p0f:127.0.0.1:2345', # p0f aktivieren [...]
Spamassasin anpassen
Damit Spamassassin die E-Mail nun auch entsprechend bewerten kann, müssen wir noch die Header-Felder und Score Werte festlegen. Dazu habe ich unter /etc/spamassasin/ eine eigene Datei Namens p0f.cf angelegt.
header L_P0F_OS_WINDOWSXP X-Amavis-OS-Fingerprint =~ /^Windows XP/ score L_P0F_OS_WINDOWSXP 3.5 header L_P0F_OS_WINDOWS_OTHER X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/ score L_P0F_OS_WINDOWS_OTHER 1.7 header L_P0F_OS_UNKOWN X-Amavis-OS-Fingerprint =~ /^UNKNOWN/ score L_P0F_OS_UNKOWN 0.8 header L_P0F_OS_LINUX X-Amavis-OS-Fingerprint =~ /^Linux/ score L_P0F_OS_LINUX -0.3 header L_P0F_OS_UNIX X-Amavis-OS-Fingerprint =~ /^((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/ score L_P0F_OS_UNIX -1.0 header L_P0F_D_1_4 X-Amavis-OS-Fingerprint =~ /bdistance [1-4](?![0-9])/ score L_P0F_D_1_4 -0.7 header L_P0F_D_5_6 X-Amavis-OS-Fingerprint =~ /bdistance [5-6](?![0-9])/ score L_P0F_D_5_6 -0.5 header L_P0F_D_7_9 X-Amavis-OS-Fingerprint =~ /bdistance [7-9](?![0-9])/ score L_P0F_D_7_9 -0.3 header L_P0F_D_15_25 X-Amavis-OS-Fingerprint =~ /bdistance (1[0-5]|2[0-5])(?![0-9])/ score L_P0F_D_15_25 0.3
Nun sollte nach einem Neustart der Dienste die Bewertung anhand von Fingerprints funtkionieren. Ob dies der Fall ist, erkennt man am Header der betreffenden E-Mails.
X-Spam-Score: 10.78 X-Spam-Level: ********** X-Spam-Status: No, score=10.78 tagged_above=-100 required=14.31 tests=[HELO_DYNAMIC_DIALIN=3.995, L_P0F_D_7_9=-0.3, L_P0F_OS_WINDOWSXP=3.5, MISSING_SUBJECT=1.285, NO_REAL_NAME=1.2, RDNS_DYNAMIC=0.1, UNDISC_RECIPS=1] X-Amavis-OS-Fingerprint: Windows XP/2000 (RFC1323+, w+, tstamp-) [GENERIC] Signature: [65535:121:1:52:M1260,N,W3,N,N,S:.:Windows:?], (distance 7, link: PIX, SMC, sometimes wireless), [80.141.48.85:]
score L_P0F_OS_WINDOWSXP 3.5
header L_P0F_OS_WINDOWS_OTHER X-Amavis-OS-Fingerprint =~ /^Windows(?! XP)/
score L_P0F_OS_WINDOWS_OTHER 1.7
header L_P0F_OS_UNKOWN X-Amavis-OS-Fingerprint =~ /^UNKNOWN/
score L_P0F_OS_UNKOWN 0.8
header L_P0F_OS_LINUX X-Amavis-OS-Fingerprint =~ /^Linux/
score L_P0F_OS_LINUX -0.3
header L_P0F_OS_UNIX X-Amavis-OS-Fingerprint =~ /^((Free|Open|Net)BSD)|Solaris|HP-UX|Tru64/
score L_P0F_OS_UNIX -1.0
header L_P0F_D_1_4 X-Amavis-OS-Fingerprint =~ /bdistance [1-4](?![0-9])/
header L_P0F_D_5_6 X-Amavis-OS-Fingerprint =~ /bdistance [5-6](?![0-9])/
header L_P0F_D_7_9 X-Amavis-OS-Fingerprint =~ /bdistance [7-9](?![0-9])/
header L_P0F_D_15_25 X-Amavis-OS-Fingerprint =~ /bdistance [15-25](?![0-9])/
score L_P0F_D_1_4 -0.7
score L_P0F_D_5_6 -0.5
score L_P0F_D_7_9 -0.3
score L_P0F_D_15_25 0.3
Nachtrag 15.01.2010
Wie ich gerade gesehen habe, gibt es p0f auch als Spamassassin Plugin 😉
Nachtrag 29.07.2014
Wenn p0f in mit dem Parameter fürs Logging (-o) gestartet wird, fügte Amavisd-new bei mir kein Header-Feld mehr zur E-Mail hinzu.