Ich hole mal etwas aus...
Ein weiteres Script... Ich habe auf meinem privaten VServer ein fetchmail, das mir von diversen Konten meine Mails abholt von zwei lokalen Usern aus. Die E-Mailadressen habe ich schon ewig. D. h. dementsprechend spamverseucht sind die(also habe auch nicht besonders darauf geachtet, dass ich wirklich nur strikt getrennt benutze). Ausgehend versende ich über Smarthost über die entsprechenden Providerserver.
Ich schreibe meine Mails über Roundcube(webmailer) und habe dort die Erweiterung "automatic addressbook" aktiv. D. h. jede E-Mailadresse, an die ich eine E-Mail versende wird in eine MySQL-Datenbank geschrieben.
Vor kurzem bin ich da drüber gestolpert, weil ich die Spamfilter der Provider auf Maximimum eingestellt habe. Dann hatte ich vor kurzem eine internationale Veranstaltung und genau alle E-Mails sind mir da weggefiltert worden. 1 Monat später habe ich es zufällig gemerkt.
In der Folge habe ich jetzt alle Provider-Spamfilter abgeschaltet und möchte selber filtern.
Spamfilter
Es geht also, darum in meinem Setup einen Spamfilter zu konfigurieren. Grundsätzlich nehme ich dafür
spamassassin(SA), der ja das Referenzprojekt in dem Bereich ist. Den binde ich bei mir über Sieve ein, und zwar so:
Bei mir ist das die Datei $HOME/.dovecot.sieve:
Code: Alles auswählen
# Wenn noch mehrere Sieve-Module aktiv sind, müssen die alle in der nächsten Zeile eingefügt sein.
require [ "vnd.dovecot.execute" ];
if not execute :pipe "spamassassin" {
setflag "\\Seen";
fileinto "spam";
stop;
}
Das obige bedeutet, dass, wenn die Mail von SA als Spam erkannt wird, d. h. das Programm spamassassin mit Exit-Status > 0 beendet wird, dann markiere ich die Mail als gelesen und sortiere die Mail in meinen existierenden Ordner "spam" ein und beende dann die Verarbeitung.
Das Programm spamassassin ist ein kleines Wrapper-Script, dass bei mir als
/usr/lib/dovecot/sieve-execute/spamassassin abgelegt ist und so aussieht:
Die SA-Benutzer-Konfiguration ist in der Datei
$HOME/.spamassassin/user_prefs abgelegt. Die Benutzerkonfiguration ist per Vorgabe erst einmal ausgeschaltet, weil das für einen Mailserver bzgl. der Performance erst einmal nachteiligt ist, wenn da auch noch Benutzer-Regelsätze ausgewertet werden sollen. Deswegen musste ich die erst einmal aktivieren mit der Einstellung ...
... in der Datei /etc/spamassassin/local.cf ganz am Ende. Anschließend einmal Spamassassin neu starten.
Erfahrungen
SA filtert bei mir die Mails in der Standardeinstellung nicht gut weg - obwohl die Dokumentation anderes behauptet. Da kommt immer noch sehr viel durch. Deswegen habe ich überlegt eine Wortliste mit Gewichtung zu implementieren, für die ich dann entsprechende SA-Regeln generiere.
Um False-Positives zu vermeiden generiere ich ebenso Regeln mit negativem Punktewert für alle E-Mailadressen, an die ich schon einmal eine E-Mail geschickt habe, in dem ich die Adressen dafür aus dem automatischen Adressbuch der MySQL-Datenbank extrahiere.
Meine Wortliste ist hier:
https://codeberg.org/megabert/script-pa ... _words.txt
Das Programm ist hier:
https://codeberg.org/megabert/script-pa ... user_prefs
Bis jetzt scheint das alles super zu funktionieren. Wer meine Spamwords nutzen will, sollte die genau prüfen, ob das für Ihn selbst auch wirklich passt. Die Score-Werte sind für mich bei den Spamwords normalerweise von 1-4, wobei 4 der Default-Wert ist. Für SA ist ein Gesamtwert ab 5 eine Spam-Mail. Einmal habe ich auch den Wert 10000 gesetzt. Das ist für ein Wort, wenn das ist einer Mail auftaucht, auch von Bekannten, so will ich diese Mails trotzdem unbedingt als Spam einsortieren.
Den negativen Score für Bekannte Adressen habe ich auf -100 gesetzt. Es kann ja sein, dass mal ein Bekannter lange rumranted und dabei diverse Trigger-Wörter verwendet. -100 sollte dafür ausreichend sein, dass die Mail trotzdem durchkommt.
Weiterhin vorsicht mit sehr kurzen Wörtern und Wörtern, die z. B. in HTML-Mails im Syntax-Code auftauchen. Z. B. "Mode".
Hier mal ein Auszug aus dem generierten Regelsatz:
Code: Alles auswählen
# AUTO_USER_PREFS_START
# AUTO MAIL-BODY RULES
body USER_BODY_RULE_0002 /\bgewicht/i
body USER_BODY_RULE_0004 /\bamerican express/i
body USER_BODY_RULE_0005 /\bmastercard/i
body USER_BODY_RULE_0006 /\bKreditkarte/i
body USER_BODY_RULE_0007 /\bentdecken/i
body USER_BODY_RULE_0008 /\berlebnis/i
body USER_BODY_RULE_0009 /\babenteuer/i
...
# AUTO MAIL-BODY RULES SCORES
score USER_BODY_RULE_0002 3
score USER_BODY_RULE_0004 1
score USER_BODY_RULE_0005 1
score USER_BODY_RULE_0006 1
score USER_BODY_RULE_0007 1
score USER_BODY_RULE_0008 1
score USER_BODY_RULE_0009 1
...
# AUTO RULES KNOWN EMAIL ADDRESSES
header FROM_KNOWN_USER_00002 From =~ /bla@blub.de/
header FROM_KNOWN_USER_00003 From =~ /oops@hurz.com/
...
# AUTO RULES KNOWN EMAIL ADDRESSES SCORES - ALL THE SAME
score FROM_KNOWN_USER_00002 -100
score FROM_KNOWN_USER_00003 -100
...
# AUTO_USER_PREFS_END