slick Bodhisattva
Joined: 20 Apr 2003 Posts: 3495
|
Posted: Fri Feb 11, 2005 2:47 pm Post subject: Feintunig für SpamAssassin |
|
|
Ich benutze SpamAssassin um meine Mails auf Spam zu untersuchen. Angeregt durch die SA-Rules-HowTo möchte ich hier einmal kurz vorstellen wie einfach es ist Spam bzw. Ham noch wirkungsvoller zu trennen. Es soll keine Übersetzung der HowTo sein, sondern die Punkte vorstellen die mir besonders praktisch erscheinen. Alle vorgestellen Regeln stellen Beispiele dar und sollten vor dem praktischen Einsatz noch entsprechend angepaßt werden.
Updates
- 15.02.05 - Linkliste
- 14.02.05 - 2 Beispiele für Suche im Mail-Header, Erklärung und Beispiele Metarules
- 13.02.05 - Ergänzung def_whitelist_from_rcvd
Eigene Regeln definieren
Ein einfaches "Beginner"-Schema hierzu sieht so aus:
Code: | body RULE_NAME /REGEXP/
score RULE_NAME 1
describe RULE_NAME COMMENT |
body gibt an das im Nachrichtentext gesucht werden soll. (andere Varianten siehe HowTo) Für RULE_NAME ist der Name der jeweiligen Regel zu setzen. Statt REGEXP der reguläre Ausdruck nach dem gesucht werden soll. Die 1 symbolisiert die Punkte die vergeben werden sollen wenn die REGEXP paßt. Und als COMMENT läßt sich ein Kommentar eintragen.
Die ganze Regel ist dann in ~/.spamassassin/user_prefs für den User oder in /etc/mail/spamassassin/local.cf für die globale Verwendung einzutragen.
Hier einige Beispiele:
Hier einige eindeutige Begriffe für die wir dann 2 Punkte vergeben. Welcher Bekannter von uns würde sowas denn in eine Mail schreiben?!
Code: | body GER_SEXWORD /\bGruppensex\b|\bRudelbumsen\b|\bOrgie\b/i
score GER_SEXWORD 2
describe GER_SEXWORD deutsche sexuelle Begriffe |
Ein weiteres Beispiel, jede Mail mit dem Wort Gentoo bekommt 1 Punkte weniger
Code: | body GENTOO /\bGentoo\b/i
score GENTOO -1
describe GENTOO Gentoo |
Spammer schreiben selten unseren Namen (Manfred Mustermann) in die Mail, Freunde schon öfters. Wird der Vor- oder Nachname gefunden gibts dafür 1,5 Punkte weniger (1,5 wird als 1.5 angegeben!)
Code: | body MY_NAME /\bManfred\b|\bMustermann\b/i
score MY_NAME -1.5
describe MY_NAME mein Name |
Eine ähnliche Regel wie oben, jedoch wird diesmal der komplette Name gesucht und wenn dann gibts dann gleich 5 Punkte weniger.
Code: | body MY_NAME_COMPLETE /\bManfred Mustermann\b/i
score MY_NAME_COMPLETE -5
describe MY_NAME_COMPLETE mein Name komplett |
Hier noch ein Beispiel wie man im Header sucht, hier bekommt jede Mail die (angeblich) von example.com ist einen Spampunkt
Code: | header FROM_EXAMPLE From =~ /example\.com/i
score FROM_EXAMPLE 1
describe FROM_EXAMPLE von Example.com |
Man kann aber auch das Vorhandensein von bestimmten Headern prüfen
Code: | header POSIBLE_LIST ALL =~ /^List-Unsubscribe\:/i
score POSIBLE_LIST -1
describe POSIBLE_LIST vermutlich Mailinglist |
Desweiteren ist es möglich verschiedene Regeln logisch miteinandern zu einer sogenannten Metarule zu verknüpfen. Alle Regeln die zu einer Metarule verknüft werden sollen werden durch 2 Unterstriche am Anfang ihres Namens gekennzeichnet. Sie können dann selbst keine Punkte vergeben, sondern erst die Metarule zu der sie zusammengesetzt werden.
Hier ein Beispiel bei dem im Titel das Wort "neu" und um im Text die Telefonnummer 0190 zu finden ist.
Code: | header __SUBJECT_NEW Subject =~ /\bneu\b/i
body __NR_0190 /0190/
meta COMBI_RULE1 (__SUBJECT_NEW && __NR_0190)
score COMBI_RULE1 0.8
describe COMBI_RULE1 neu und 0190 |
Als logische Operatoren stehen hierbei && für logisch UND, || für logisch ODER und ! für die Negation der Regel zu Verfügung. Klammern können und sollten entsprechend gesetzt werden.
Ein weiteres Beispiel hierzu:
Code: | header __SUBJECT_1 Subject =~ /wichtig/i
header __SUBJECT_2 Subject =~ /eilig/i
header __SUBJECT_3 Subject =~ /dringend/i
meta COMBI_RULE2 (__SUBJECT_1 || __SUBJECT_2 || __SUBJECT_3)
score COMBI_RULE2 -0.5
describe COMBI_RULE2 wahrscheinlich dringende Mail |
Eine weitere Möglichkeit der Kombination der Metarules ist folgende. Hier werden 3 Regeln definiert und wenn mehr als 1 zutrifft tritt die Metarule in Kraft.
Code: |
body __BODY_1 /\banal\b/i
body __BODY_2 /\boral\b/i
body __BODY_3 /\bvaginal\b/i
meta COMBI_RULE3 (__BODY_1 + __BODY_2 + __BODY_3) > 1
score COMBI_RULE3 0.8
describe COMBI_RULE3 2 von 3 bösen Woertern |
def_whitelist_from_rcvd
Desweiteren gibt es noch andere sinnvolle Einstellungen die man vornehmen kann. So ist es möglich bestimmte Absender auf eine White-List zu setzen... der Trick an der Sache ist der das der Spammer ja den Absender fälschen könnte. Dafür gibt es die Rolle def_whitelist_from_rcvd. Hier wird als erste Parameter die Mailadresse bzw. die Absender-Domain angegeben und als zweiter Parameter folgt der absendende Mailserver. SpamAssassin prüft dann ob die Mail mit dem angebenen Absender auch wirklich von dem Server kommt. Stimmt der Eintrag überein gibt es gleich fette (Ham) Punkte für die Mail . Der Eintrag erfolgt ebenfalls in den o.g. Konfigurationsdateien. Man sollte sich jedoch sicher sein was man hier einträgt. Das Eintragen von Freunden mit temporären Internetverbindungen macht hier meist wenig Sinn. Sinnvoll ist so ein Eintrag für z.B. Newsletter/Mailinglists die aufgrund ihres Inhalts evt. schnell als Spam deklariert werden könnten.
Hier ein Beispiel. Mails von Amazon.de werden über den Mailserver von amazon.com verschickt.
Code: | def_whitelist_from_rcvd *@amazon.de amazon.com |
Weitere Beispiele:
Code: | def_whitelist_from_rcvd blackhole@forums.gentoo.org gentoo.org
def_whitelist_from_rcvd *@ebay.de ebay.com |
Einige, jedoch englische, Defaultvorgaben sind schon gemacht, hier lohnt ein Blick in /usr/share/spamassassin/60_whitelist.cf
Links zum Thema
Feedback welcome
Last edited by slick on Tue Feb 15, 2005 9:17 am; edited 26 times in total |
|