<:Spam intelligent filtern ohne Zusatzsoftware>

Nachdem ich in der letzten Woche mal in Angriff genommen habe, meinen Spamfilter, der nur aus KMail-Filterregeln besteht (war bisher zu faul für SpamAssassin), zu optimieren, habe ich jetzt eine berauschende Erkennungsrate von (übers Wochenende) 213 erkannten Spammails, 3 durchgeschlüpften und sage und schreibe null false positives.

Das faszinierende daran ist: Das klappt komplett ohne DNS-Blacklisting und ohne Wörterbuchscans des Mailinhaltes. Deshalb hab ich hier ein paar nette Filterregeln für die etwas fortgeschritteneren unter euch, die euren Spamanteil drastisch reduzieren können:

  1. Only-Spam-Adressen: Da ich eine eigene Domain habe, ist es für mich ein Leichtes, beliebig viele Mailadressen zu verwenden, die allesamt in meinem Postfach landen (Catchall). Teilweise gibt es da auch Adressen, über die wirklich nur Spam kommt. Daher Filterregel Nummer eins: Empfänger passt auf regulären Ausdruck: (ircstats|webmaster|usenet|info|unixshells)@scytale\.de. Man könnte natürlich auch für jeden Empfänger einen einzelnen Filter anwenden, aber die Lösung mit dem RegEx ist einfach praktischer. "info" und "webmaster" sind Adressen, die gerne von Spambots benutzt werden, weil sie bei fast allen Domains existieren. Ich selbst habe allerdings nie eine von beiden veröffentlicht bzw. genutzt, also kann ich sie guten Gewissens rausfiltern; eine Kontaktmöglichkeit für total Fremde findet sich auf scytale.de.
  2. Alphabetische Massenmailings: Besonders beliebt bei Freemail-Anbietern wie GMX. Dabei werden einfach alle User auf diesem Server hintereinander angemailt, in alphabetischer Reihenfolge, oft sogar mit mehreren Empfängern pro Mail. Genau danach filtere ich: Wenn es einen Empfänger gibt, der mit "sc" anfängt, aber nicht mit "y" weitergeht und bei GMX liegt, dann raus damit. Der RegEx dazu: sc[^y].*@gmx\..*
  3. Kein Betreff: Wird gern benutzt, um neugierig zu machen. Abhilfe: Subject passt nicht auf regulären Ausdruck: .+ Das Problem bei dieser Regel ist allerdings, dass ich auch ein paar Freunde habe, die manchmal Mails ohne Betreff verschicken. Da wird KDE 3.3 helfen: Dort gibt es ein Filterkriterium "Absender ist im Adressbuch".
  4. Pure HTML-Mails: Selbst Outlook ist klug genug, immer noch einen "nur Text"-Teil einzufügen. Spammer sind dafür oft zu faul. Daher die Regel: Content-Type enthält: text/html. Damit werden wohlgemerkt Mails weiterhin durchgelassen, die sowohl einen Text- als auch einen HTML-Teil haben, denn ihr Content-Type ist "multipart/alternative". Achtung bei dieser Regel: Manche Newsletter werden im "nur HTML"-Format verschickt. Für diese muss man dann eine Ausnahmeregel definieren.
  5. Return-Path für Bounces: Eine sehr effektive Regel ist Return-Path passt auf regulären Ausdruck: ^<bounce=, denn sehr viele Spammer verschicken in letzter Zeit Mails mit diesem Header-Feld, um Bounces zurückverfolgen zu können. Auch hier gilt wieder: Manche Newsletter machen das auch, aber sehr wenige.
  6. X-Message-Info: Das ist ein Header, den ich bis jetzt ausschließlich in Spam-Mails gesehen habe, daher lässt sich optimal danach filtern. Einfach X-Message-Info passt auf regulären Ausdruck: .+ und gut is.
  7. Tracking-Nummern im Subject: Werden meist mit zig Leerzeichen vom eigentlichen Subject abgetrennt, so dass sie rechts aus der Subject-Spalte im Mailprogramm rausrutschen. Optimales Filterkriterium: Subject passt auf regulären Ausdruck: [^ ]+ {5,}[^ ]+ (Man beachte, dass das in den eckigen Klammern "nicht Leerzeichen" heißt).
  8. Gefakete Multipart-Nachrichten: Eine Variante von Nummer vier. Einige Spammer sind klug genug, "text/html" als Content-Type zu meiden und benutzen statt dessen "multipart", lassen aber den "nur-Text"-Teil trotzdem einfach weg. Eine Kombination aus zwei Filterregeln hilft weiter: Content-Type enthält: multipart und Nachrichtentext enthält nicht: text/plain.
  9. Blöde Absender: Ich habe in meinen Anfängen überall die Adresse mail@scytale.de propagiert. Daher bekomme ich darauf massiv viel Spam. Trotzdem sauber bleibt das ganze mit diesen zwei Filterregeln: Empfänger enthält: mail@scytale.de und Absender passt auf regulären Ausdruck: (.*@((excite|hotmail|lycos|yahoo)\.com|.*\.(au|bg|dk|nl|ru|sg))|".*" <.*>) Damit filtere ich erst mal amerikanische Freemailer und dann exotische Absenderländer raus. Als drittes dann noch Absenderadressen in der Form "Absendername" <email@adres.se> (mit Anführungszeichen um den Namen), wie sie kein gescheites Mailprogramm anlegt, sondern ausschließlich Anfänger unter den Spammern.

Ich hoffe diese Regeln haben euch auf ein paar Ideen gebracht. Ich werde meinen Filter weiterhin optimieren und euch bei Gelegenheit noch ein paar mehr Tipps geben.