PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : China aus Mailman-Liste aussperren



Solli
04.08.2011, 09:31
Jetzt muss ich mal kurz mit einer technischen Frage nerven: Ich bin Admin einer Liste (mailman), auf der regelmäßig China-Spam eintrudelt. Jetzt würde ich gerne eine Filterregel definieren, so dass der ganze Müll zuverlässig automatisch entsorgt wird. Naheliegend wäre es, nach dem Subject zu filtern, da diese häufig sehr änlich sind und uns keiner was sinnvolles mit dem Betreff "Art on Canvas" oder "3D Animation Service" schickt.

Das Problem an der Sache: Der Subject-Header bei diesen Mails ist MIME-encoded. Aus "Hand-Painted Art on Canvas, for wall-decoration" wird beispielsweise "=?utf-8?b?SGFuZC1QYWludGVkwqBBcnTCoG9uwqBDYW52YXMswqBm?= =?utf-8?q?or=C2=A0wall-decoration?=".

Kann ich trotzdem irgendwie eine Filterregel definieren, die nicht nur exakt gleiche sondern auch ähnliche Subjects erkennt? Oder gibt es eine andere Möglichkeit, zuverlässig China-Spam als solchen zu erkennen (mit möglichst geringer False-Positive-Rate)? Alles von der TLD .cn zu verwerfen wäre mir zum Beispiel zu ungenau.

Ansonsten bliebe noch der Einsatz von Blacklists, aber da müsste ich erst den Server-Administrator treten.

P.S.: Ich kann Filter als regulären Ausdruck angeben, und zwar auf die Plain-Text-Darstellung des Headers bezogen. Wäre das Subject also wie oben genannt und nicht encoded würde folgende Regel wirken:
Subject: .*Art.*Canvas.*

alariel
05.08.2011, 09:58
Wenn encodete Header sonst nicht vorkommen würden, könnte man ja einfach auf das utf-8 filtern... Leider führt das u.U. dazu, nicht nur die Chinesen auszusperren.

Persönlich habe ich ganz APNIC geerdet; die ein, zwei Server, die mit mir reden dürfen, kann ich da auch manuell whitelisten ;)

(Ich verschieb' das mal aus dem Spambereich in den Technikbereich)

Solli
05.08.2011, 10:34
Danke für's verschieben und sorry dass ich im falschen Bereich gefragt habe.

Nach UTF8 im Subject filtern kommt nicht in Frage, da hätte ich zu viele false positives. Ich könnte diese Mails höchstens zurück halten und einzeln von Hand freigeben. Das würde zwar den Spam auf der Liste reduzieren, aber dafür den Moderationsaufwand erhöhen.

IP-Adressen "erden" kann ich nur indirekt, indem ich auf die entsprechenden Received-Header teste. Aber APNIC aussperren geht genauso wenig wie auf .cn filtern. Das ist eine offizielle Kontakt-Adresse, und da kann es zumindest theoretisch schon mal vorkommen dass auch mal ein ("erwünschter") Chinese hin schreibt. Auch hier wäre es höchstens denkbar, die entsprechenden Mails zurück zu halten.
Aber wie filtere ich überhaupt auf APNIC? Durch Eingabe der einzelnen /8-Blöcke?

Falls noch jemand eine Idee hat wie ich auf das Subject testen kann, immer her damit. ;)

alariel
05.08.2011, 10:43
Aber wie filtere ich überhaupt auf APNIC? Durch Eingabe der einzelnen /8-Blöcke?
Jo... ist das Einfachste ;)
Für mich als Privater ohne weiteres machbar; die einzigen MXer im APNIC-Bereich, die für mich relevant sein könnten, sind die des Herstellers meines Netbooks ;)

Für die Subjectfilterung würden mir pauschal 2 Dinge einfallen, die beide aber einen gewissen Aufwand bedeuten:
1.) die naheliegende Methode, das Subject zu dekodieren und dann auf die entsprechenden Worte zu filtern - was u.U. aber auch false positives bedeuten kann, oder
2.) einen Spamassassin in das Routing zu hängen und den entsprechend trainieren. Anschliessend dann die Mails je nach Spamscore aussortieren lassen. Hier dürfte es dann eher zu false negatives kommen, sicherlich am Anfang.

Eine ggf. einfachere Methode will mir gerade so nicht einfallen... ;)

*)
Denke ich da an meinen Exim, dann käme mir da auch eine Prüfchain in den Sinn...

wenn IP aus APNIC ->
wenn $sender nicht auf Whitelist ->
wenn utf-8 ->
wenn $reizwort in dekodiertem Subject... ->
Sende 480V Drehstrom an sendenen Mailserver. Oder so. :D

Solli
05.08.2011, 11:42
So tolle Filter kann ich über Mailman leider nicht einstellen. Da müsste ich dann den Server-Admin treten.

Ich hab jetzt mal versuchshalber einen Filter eingestellt, der bei bestimmten IP-Adressen in den Received-Headern die Nachricht zurück hält. Mal sehen ob das wirkt. Der Einfachheit halber habe ich nicht alle /8-Blöcke der APNIC eingegeben sondern erst mal alles von 110.0.0.0 bis 126.255.255.255. Der entsprechende reguläre Ausdruck lautet also:

Received: .*(1(1[0-9]|2[0-6]))(\.([0-9]|[1-9][0-9]|1([0-9][0-9])|2([0-4][0-9]|5[0-5]))){3}.*

alariel
05.08.2011, 13:09
Hm...

Steht der MTA (wo ich Filtermechanismen ansetzen würde) unter Deiner Kontrolle, bzw. hast Du da einen virtuellen Server laufen, oder bist Du "nur" Benutzer auf einem physikalischen Server (klingt danach)?
Im letzteren Falle wird's dann in der Tat schwierig - mit Mailman selbst habe ich mich aber auch noch nie befasst, so dass ich logischerweise keine Ahnung hat, was der abgesehen von Standards sonst so an Optionen bietet.

Solli
05.08.2011, 13:45
Steht der MTA unter Deiner Kontrolle
Nein eben nicht. Ich bin nur Moderator (oder genau genommen Administrator) der Mailman-Liste. Ich bin noch nicht mal Benutzer auf dem Server im Sinne der Betriebssystem-Benutzerverwaltung. Wie bereits im ersten Beitrag geschrieben ist meine einzige "Angriffsmöglichkeit" ein RegEx-Filter auf den Mailheader, damit muss ich auskommen.

Um Missverständnissen vorzubeugen: Meine Frage in einem anderen Thread bezüglich MTAs und MX-Einträgen bezieht sich auf meinen privaten Sandkasten. Dort könnte ich natürlich viel einfacher filtern als es hier der Fall ist.

Der oben beschriebene Received-Filter funktioniert übrigens wunderbar. Ich habe einen entsprechenden für den IP-Adressbereich meines eigenen Servers eingerichtet und die Mail wurde wie es sich gehört zurück gehalten. Jetzt muss die Zeit zeigen ob ich mit dem 110er bis 126er-Block auch den ganzen China-Spam erwische und wie viele gewollte Mails dabei aussortiert werden. Wenn alles klappt kann ich dann die gefilterten Nachrichten auch gleich ganz wegwerfen.