Best Practices > Diskussionen zu Best Practices

[Themenvorschlag] kSpam

<< < (2/5) > >>

DaWutz:
4. Filterregeln

kSpam bietet die Möglichkeit sowohl mit einfachen Regeln, als auch mit komplexen Regeln unter Einbezug von "Regular Expressions" zu filtern. Die Unterschiede und Vorgehensweisen werden in den nächsten beiden Unterpunkten erklärt.

Weiterhin ist zu den Filterregeln zu sagen, dass die Länge der Regeln begrenzt ist auf 1024 Zeichen pro Feld.
Auszug aus dem Source:
   #define TOMV_MAX_RULE_FROM   1024 // max from rule length
   #define TOMV_MAX_RULE_TO   1024 // max to rule length
   #define TOMV_MAX_RULE_SUBJECT   1024 // max subject rule length
   #define TOMV_MAX_RULE_BODY   1024 // max body rule length
   #define TOMV_MAX_RULE_ATTACH   1024 // max attachment rule length

Wird die Aktion "Mark" ausgewählt, dann darf das Feld "Mark with:" ebenfalls nicht länger als 1024 Zeichen sein.
   #define TOMV_MAX_RULE_MARK   1024 // max mark text rule length

DaWutz:
4.1 Einfache Filterregeln

In der Konfigurationsdatenbank KSpamCon.nsf können neue Regeln erstellt werden. Diese gliedern sich in den Bereich „allow“ (erlauben) und „deny“ (verbieten).

Anhand eines Beispiels wird nun das Erstellen einer solchen Regel erläutert. Der erste Punkt der ausgefüllt werden muss, ist der Punkt „Priority“. Durch diese Vergabe von Prioritäten ist es möglich, auf die Abarbeitungsreihenfolge der Filterregeln Einfluss zu nehmen. Regeln mit der Priorität 10 werden vor Regeln mit der Priorität 15 ausgeführt.
Die nächsten Punkte „From contains:“, „To contains:“, „Subject contains:“ und „Body contains:“ werden nun mit den Begriffen gefüllt, die es zu Filtern gilt.
In unserem Beispiel wird jede Mail mit dem Wort „Test“ im Betreff gefiltert Der nächste Punkt „Action“ gibt an, was mit der Mail passieren soll, wenn die Regel zugegriffen hat. In unserem Beispiel „Mark“. Die Mail wird also markiert und zwar mit dem Text oder der Zeichenfolge die im nächsten Feld („Mark with:“) angegeben ist.
Der letzte Punkt „Probability Increase:“ wird nur dann benötigt, wenn unter „Action“ „Increase Probability“ ausgewählt wurde. Zu beachten ist, dass wenn sowohl Erlaubnis-Regeln als auch Verbots-Regeln erstellt wurden, die Erlaubnis-Regeln zuerst angewendet werden.

DaWutz:
4.2 Komplexe Filterregeln unter Verwendung regulärer Ausdrücke

Wenn komplexere Muster, oder verschiedene Schreibweisen gefiltert werden sollen, dann ist das Arbeiten mit normalen Regeln nicht mehr sinnvoll, da der Aufwand bei der Einrichtung und Pflege der Regeln viel zu hoch wäre.
Zur Verdeutlichung – Penis kann auf verschiedenste Arten geschrieben werden (Penis, Penls (kleines „L“ anstelle einem i) oder Pen1s (mit der 1 als „i“)).
Das würde schon bedeuten, dass 3 verschiedene Regeln gebraucht würden, um dieses eine Wort in seinen Spielarten abzufangen.
Deshalb bietet kSpam noch die Möglichkeit Regeln mit so genannten „Regulären Ausdrücken“ anzuwenden. Die Verwendung von regulären Ausdrücken lässt sich am Besten anhand eines Beispiels erklären.

Grundsätzlich werden alle Regeln die reguläre Ausdrücke verwenden mit dem Schlüsselwort „#REGEX#:“ eingeleitet. „#REGEX#:(?i)penis“ würde also alle Arten von Groß- und Kleinschreibung ausfiltern (z.b. peNIs, PeNiS usw.).
 
Um nun die verschiedenen Arten abzubilden, das „i“ darzustellen wird vor dem „i“ ein RegEx-Tag geöffnet „[“. Dies bedeutet, wir wollen nun prüfen ob an dieser Stelle ein „i“ vorkommt, dargestellt durch eins der folgenden Zeichen. Die folgenden Zeichen werden einfach fortlaufend geschrieben. Danach wird der RegEx-Tag wieder geschlossen, mit „]“. Unser Beispiel würde dann wie folgt aussehen: „#REGEX#:(?i)pen[i1|l]s“. Das "(?i)" vornedran bedeuted, das alle Groß- und Kleinschreibung ignoriert wird.
 
Da dies aber noch nicht alle Variationen sind, um ein Wort erscheinen zu lassen, das Aussieht wie „Penis“, sieht der reguläre Ausdruck den wir verwenden entsprechend komplexer aus. |=>  „#REGEX#:(?i)p\W{0,2}(?i)[e3]\W{0,2}(?i)n\W{0,2}(?i)[il1|]\W{0,2}(?i)[$s5]“

Wie man sieht, werden reguläre Ausdrücke schnell unübersichtlich. Daher gibt es Programme, mit denen man reguläre Ausdrücke testen kann. Ein geeignetes Programm ist zu finden unter: http://weitz.de/regex-coach/ .

Was es noch nicht gibt, sind Programme, denen ein Wort präsentiert wird und die dann einen regulären Ausdruck daraus bauen, der alle Möglichkeiten der „Schreibweise“ abfängt.

ParameterBedeutung?iGroß- und Kleinschreibung ignorieren \W{1,3}Anzahl von Zeichen dazwischen (1x bis 3x) [abc]an dieser Stelle kann ein "a" oder ein "b" oder ein "c" stehen [a]{1,3}"a", bis zu 3x hintereinander (a, aa, aaa)
Hier nun noch eine Liste von 'RegEx'en:
zu Filternregulärer AusdruckCasino#REGEX#:(?i)(c\W{0,2}[a@]{1,3}\W{0,2}[s5$]{1,3}\W{0,2}[i1l|]{1,3}\W{0,2}[n]{1,3}\W{0,2}(([0o])|(\(\))))Beispiel:[/b]ca$ino, CASlN0, C@s1n0 Cialis#REGEX#:(?i)(c\W{0,2}[i1l|]{1,3}\W{0,2}[a@]{1,3}\W{0,2}[i1l|]{1,3}\W{0,2}[i1l|]{1,3}\W{0,2}[s5$])Beispiel:[/b]Cialis, C1@l|$, CiaIis Fick oder Fuck#REGEX#:(?i)(f\W{0,2}[|1ivul]\W{0,2}c\W{0,2}k)Beispiel:[/b]Fvck, f1ck Penis#REGEX#:(?i)(p\W{0,2}[e3]\W{0,2}n\W{0,2}[il1|]\W{0,2}[$s5])Beispiel:[/b]peni$, p3ni$ Pharmacy#REGEX#:(?i)(Ph[a@]rm[a@][cz][yil|])Beispiel:[/b]Pha@rmacy, Pharmazi Pussy#REGEX#:(?i)(p\W{0,2}[vu]\W{0,2}[s5$]{1,3}\W{0,2}[1iIyl])Beispiel:[/b]Pv$$i, pUs$y Valium#REGEX#:(?i)([vw\\/]\W{0,2}[a@]\W{0,2}[lI|1]{0,2}\W{0,2}[1il|]{0,2}\W{0,2}[uv]\W{0,2}m|(/\\/\\))Beispiel:[/b]V@l1um, \/al1um Viagra#REGEX#:(?i)(([vw]|(\\/))\W{0,2}[i1|l]\W{0,2}[a@]\W{0,2}[g6q]{1,2}\W{0,2}r\W{0,2}[a@])Beispiel:[/b]Vi@gra, V1aqra Xanax#REGEX#:(?i)(x\W{0,2}[a@]{1,3}\W{0,2}n{1,3}\W{0,2}[a@]{1,3}\W{0,2}x)Beispiel:[/b]XannaX, X@nax Diese Liste soll nicht vollständig oder allumfassend sein, aber sie soll eine Ausgangsbasis für eigene reguläre Ausdrücke sein.

DaWutz:
5. Quellen


* http://www.openntf.org/Projects/pmt.nsf/ProjectLookup/kSpam
* http://www.atnotes.de/index.php?board=8;action=display;threadid=12864;start=0
* http://www.atnotes.de/index.php?topic=21935.0
Mein Dank gilt an dieser Stelle auch Ulrich "eknori" Krause, der mir immer wieder Hilfreich mit dem ein oder anderen "Tip" zur Verfügung stand!!

DaWutz:
Ok, ich ergänze die Angaben hier, wenn ich noch mehr habe. Evtl. stelle ich auch noch eine Beispiel Datenbank ein, damit die einzelnen Teile auch leichter nachvollzogen werden können.

Aber nun bin auch ich endlich müde und wandere in mein Bett.

Gute Nacht,

Daniel!

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln