# Feintunig für SpamAssassin

## slick

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:

```
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?!  :Wink: 

```
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  :Smile: 

```
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!)

```
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.

```
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

```
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

```
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.

```
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:

```
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. 

```

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.

```
def_whitelist_from_rcvd *@amazon.de amazon.com
```

Weitere Beispiele:

```
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

Postfix + AMaViSd-new incl. DCC, Razor, Pyzor, Bayes 

Email System For The Home Network  (englisch)

http://spamassassin.apache.org (englisch)

SpamAssassin Rules HowTo (englisch) 

Feedback welcome   :Smile: Last edited by slick on Tue Feb 15, 2005 9:17 am; edited 26 times in total

----------

## slick

Einen interessanten Beitrag (basierend auf procmail) hat auch heise verfaßt und führt eine IP-Blacklist. Wie man die in SpamAssassin nutzen kann ist hier zu finden.

----------

