Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Reguläre Ausdrücke im Score File

42 views
Skip to first unread message

Andreas Kohlbach

unread,
Jan 12, 2005, 3:33:15 PM1/12/05
to
Ich versuche Antworten auf einen usenetweit bekannten Troll zu
killfilen. Der hat eine Message ID mit einem Mix aus Ziffern mit
Großbuchstaben drin, und zwar 16 am Stück, dann ein Punkt, dann wieder
16, dann der wechselnde "FQDN" (der eigentlich keiner ist, da
invaide).

Beispiel:

| <5B5B4C98C061F93A...@awjogvfy.pqafskel>

Ich versuchte

| ("<[A-Z0-9]{16}\\.[A-Z0-9]{16}@.*>$" -9000 nil r)

in all.SCORE. Tut leider nicht. Wie müsste das richtig heissen? Und
könnte die Gefahr bestehen, auch Unschuldige zu killfilen? AFAIK nutzt
sonst niemand anderes dieses Muster.
--
Andreas

Stefan Wiens

unread,
Jan 12, 2005, 5:38:11 PM1/12/05
to
* Andreas Kohlbach schrieb:

> Ich versuchte
>
>| ("<[A-Z0-9]{16}\\.[A-Z0-9]{16}@.*>$" -9000 nil r)
>
> in all.SCORE. Tut leider nicht. Wie müsste das richtig heissen?

"<[A-Z0-9]\\{16\\}\\.[A-Z0-9]\\{16\\}@.*>$"

> Und könnte die Gefahr bestehen, auch Unschuldige zu killfilen? AFAIK
> nutzt sonst niemand anderes dieses Muster.

Ich finde hier keinen Artikel, der zu Unrecht abgewertet würde.

Um die Wahrscheinlichkeit von "false positives" zu vermindern, kann man
auf die kaputte Domain genauer prüfen:

("<[0-9A-Z]\\{16\\}\\.[0-9A-Z]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>"
-20 nil R)

und das Ganze auf die tatsächlich heimgesuchten Hierarchien
beschränken, z. B. de.all.SCORE.

Reiner Steib

unread,
Jan 12, 2005, 5:19:45 PM1/12/05
to
On Wed, Jan 12 2005, Andreas Kohlbach wrote:

> Ich versuche Antworten auf einen usenetweit bekannten Troll zu
> killfilen.

Kommt mir bekannt vor. Wo ist er denn derzeit aktiv?

> Der hat eine Message ID mit einem Mix aus Ziffern mit Großbuchstaben
> drin,

Es kommen nur [A-F0-9] vor.

> und zwar 16 am Stück, dann ein Punkt, dann wieder 16, dann der
> wechselnde "FQDN" (der eigentlich keiner ist, da invaide).
>
> Beispiel:
>
> | <5B5B4C98C061F93A...@awjogvfy.pqafskel>
>
> Ich versuchte
>
> | ("<[A-Z0-9]{16}\\.[A-Z0-9]{16}@.*>$" -9000 nil r)
>
> in all.SCORE. Tut leider nicht. Wie müsste das richtig heissen?

Die Fütterer dieses Trolls score ich so:

("references"
("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>[^>]+>[^>]+>$" -10 nil R)
("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>[^>]+>$" -100 nil R)
("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>$" -1000 nil R))

Dein Fehler war anscheinend, `{' und `}' nicht zu escapen, wie es in
Elisp Regexp notwendig ist, siehe (info "(emacs)Regexps").

In bestimmten Gruppen entsorge ich die Fütterer gleich mit leafnode.
Matthias hat mein Beispiel in filters.example aufgenommen (Achtung:
die Syntax ist nicht für leafnode1 geeignet):

,----[ filters.example in leafnode2 ]
| ### A troll is flooding a group `foo.bar'. Annoyingly he changes "From"
| ### and "Message-Id" (MID) quite often, but the MID is always consists
| ### of 16 times a hex number [0-9A-F], a dot followed by 16 times
| ### [0-9A-F] again (local part) and 8 times [a-z], a dot and 8 times
| ### [a-z] for the domain part. Thus we have
| ### "[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}"; replace this by a
| ### more simple pattern if needed.
| newsgroups = foo\.bar
| pattern = ^Message-Id:\s*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>
| action = kill
| ### Now we got rid of the troll. But too many people do feed the troll!
| ### We need to filter certain levels of followups, too.
| ### A direct followup:
| pattern = ^References:.*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>$
| action = -1000
| ### 2nd level followup:
| pattern = ^References:.*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>[^>]+>$
| action = -100
| ### 3rd level followup:
| pattern = ^References:.*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>[^>]+>[^>]+>$
| action = -10
| ### Followup on any level. Use with care! (Thread topic might change and
| ### become interesting again.)
| pattern = ^References:.*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>
| action = -1
`----

> Und könnte die Gefahr bestehen, auch Unschuldige zu killfilen? AFAIK
> nutzt sonst niemand anderes dieses Muster.

Ich habe bisher keine bemerkt und ich verwende obiges schon lange.

Gruß, Reiner.
--
,,,
(o o)
---ooO-(_)-Ooo--- | PGP key available | http://rsteib.home.pages.de/

Andreas Kohlbach

unread,
Jan 13, 2005, 9:56:54 PM1/13/05
to
Erstmal danke auch an Stefan. Scheinen die nichtmaskierten "{}" gewesen
zu sein.

Reiner Steib wrote on 12. January 2005:
>
> On Wed, Jan 12 2005, Andreas Kohlbach wrote:
>
>> Ich versuche Antworten auf einen usenetweit bekannten Troll zu
>> killfilen.
>
> Kommt mir bekannt vor. Wo ist er denn derzeit aktiv?

In dana* und leider noch einigen anderen (zum Glück wenigen) technischen
Gruppen, die ich lese. Der Doktor sollte lieber bei seinem Vieh bleiben.

>> | ("<[A-Z0-9]{16}\\.[A-Z0-9]{16}@.*>$" -9000 nil r)
>>
>> in all.SCORE. Tut leider nicht. Wie müsste das richtig heissen?
>
> Die Fütterer dieses Trolls score ich so:
>
> ("references"
> ("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>[^>]+>[^>]+>$" -10 nil R)
> ("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>[^>]+>$" -100 nil R)
> ("<[A-F0-9]\\{16\\}\\.[A-F0-9]\\{16\\}@[a-z]\\{8\\}\\.[a-z]\\{8\\}>$" -1000 nil R))

Ich bin sicher, das Muster bei seiner MID selbst "entdeckt" und in Regex
gepackt zu haben. Wenngleich deine auch eleganter und "dichter dran" ist;
das mit "A-F" fiel mir gar nicht auf. IIRC gab ich aber nur an zwei Leute
weiter, die aber woanders posten. Um dem Troll das nicht auf die Nase zu
binden, dass man seine Fütterer auch erwischen kann. Schön zu sehen, dass
auch andere sich darüber Gedanken machen. :-)

> Dein Fehler war anscheinend, `{' und `}' nicht zu escapen, wie es in
> Elisp Regexp notwendig ist, siehe (info "(emacs)Regexps").

Das '(info "(emacs)Regexps")' war, was ich suchte, danke.

Warum kann Emacs nicht die normalen PCRE Kompatiblen nehmen...

Werde meine mal komplett durch deine ersetzen.

> In bestimmten Gruppen entsorge ich die Fütterer gleich mit leafnode.
> Matthias hat mein Beispiel in filters.example aufgenommen (Achtung:
> die Syntax ist nicht für leafnode1 geeignet):

Der konnte doch gar nicht auf anderes als im overview filtern? Bin mir
aber überhaupt nicht mehr sicher.

> ,----[ filters.example in leafnode2 ]

[...]

> | newsgroups = foo\.bar
> | pattern = ^Message-Id:\s*<[A-F0-9]{16}\.[A-F0-9]{16}@[a-z]{8}\.[a-z]{8}>
> | action = kill

[...]

Leider habe mich mein leafnode Score File beim "Umzug" verloren (nicht
mit gesichert), ebenso wie mein Clientseitiges. Steckte ne Menge Arbeit
drin. Auch das Dosenfutter hatte ich mit ähnlicher Regex (die "\s" hatte
ich wohl nicht bei, tat aber trotzdem) ruhig gehalten.

>> Und könnte die Gefahr bestehen, auch Unschuldige zu killfilen? AFAIK
>> nutzt sonst niemand anderes dieses Muster.
>
> Ich habe bisher keine bemerkt und ich verwende obiges schon lange.

Kann leafnode *genauer* loggen, dass er vielleicht sagt, was er mit
welcher Regel erlegt hat? Oder wie merkst du, dass du keinen Unschuldigen
getroffen hast?
--
Andreas

Reiner Steib

unread,
Jan 14, 2005, 4:04:21 AM1/14/05
to
On Fri, Jan 14 2005, Andreas Kohlbach wrote:

> Reiner Steib wrote on 12. January 2005:

[...]


> Das '(info "(emacs)Regexps")' war, was ich suchte, danke.
>
> Warum kann Emacs nicht die normalen PCRE Kompatiblen nehmen...

Äh, vermutlich weil Emacs' REs älter sind als Perl? ;-)

> Der konnte doch gar nicht auf anderes als im overview filtern? Bin mir
> aber überhaupt nicht mehr sicher.

Mag sein (ich benutze schon ewig leafnode2). Aber MID und References
sind doch normalerweise im overview enthalten, oder?

>> Ich habe bisher keine bemerkt und ich verwende obiges schon lange.
>
> Kann leafnode *genauer* loggen, dass er vielleicht sagt, was er mit
> welcher Regel erlegt hat?

Das kann man über das Debug-Level in der config und die Anzahl der
`-v's steuern.

> Oder wie merkst du, dass du keinen Unschuldigen getroffen hast?

Wenn die Parent-Artikel aus unerfindlichen Gründen fehlen, fällt das
ja meistens auf. Aber false positives sind natürlich bei kill files
ein generelles Problem, so daß man die Regel sorgfältig wählen und
testen sollte. Beim Scoring kann man da großzügiger sein.
Ich benutze die Leafnode-Filterung nur in stark verseuchten Gruppen
(früher: dcoulm). In anderen Gruppen wurden mir false positives
auffallen, da diese Artikel dann heruntergescort wären.

Bei leafnode2 kann man mit "applyfilter -n" (dry run) oder "-n" ja
erstmal testen, was getroffen wird.

Patric Mueller

unread,
Jan 14, 2005, 6:17:46 AM1/14/05
to
Andreas Kohlbach <ank...@email.com> schrieb:

> Reiner Steib wrote on 12. January 2005:
>
> Das '(info "(emacs)Regexps")' war, was ich suchte, danke.
>
> Warum kann Emacs nicht die normalen PCRE Kompatiblen nehmen...

Perl ist nicht die Welt. Aber wenn es darum geht, reguläre Ausdrücke
zu bauen, nehme ich immer txt2regex
http://txt2regex.sourceforge.net/screenshots.html, das zeigt für 23
verschiedene Programme an, wie der reguläre Ausdruck auszusehen hat.
Da hast du keinen Ärger mehr mit den Metazeichen.

Tschüss
Patric

Reiner Steib

unread,
Jan 14, 2005, 6:54:03 AM1/14/05
to
On Fri, Jan 14 2005, Patric Mueller wrote:

> Andreas Kohlbach <ank...@email.com> schrieb:


>> Das '(info "(emacs)Regexps")' war, was ich suchte, danke.
>>
>> Warum kann Emacs nicht die normalen PCRE Kompatiblen nehmen...
>
> Perl ist nicht die Welt. Aber wenn es darum geht, reguläre Ausdrücke
> zu bauen, nehme ich immer txt2regex
> http://txt2regex.sourceforge.net/screenshots.html, das zeigt für 23
> verschiedene Programme an, wie der reguläre Ausdruck auszusehen hat.
> Da hast du keinen Ärger mehr mit den Metazeichen.

Für Emacs sollte man `re-builder' sowie `regexp-quote' und
`regexp-opt' erwähnen.

Andreas Kohlbach

unread,
Jan 14, 2005, 3:19:34 PM1/14/05
to
Reiner Steib wrote on 14. January 2005:
>
> On Fri, Jan 14 2005, Andreas Kohlbach wrote:
>
>> Der konnte doch gar nicht auf anderes als im overview filtern? Bin mir
>> aber überhaupt nicht mehr sicher.
>
> Mag sein (ich benutze schon ewig leafnode2). Aber MID und References
> sind doch normalerweise im overview enthalten, oder?

References AFAIK nicht.

>> Oder wie merkst du, dass du keinen Unschuldigen getroffen hast?

[...]

> Bei leafnode2 kann man mit "applyfilter -n" (dry run) oder "-n" ja
> erstmal testen, was getroffen wird.

Stimmt, hatte ich völlig verdrängt, als mein Filter über Jahre zur vollen
Zufriendenheit lief.

F'up poster.
--
Andreas

Message has been deleted

Reiner Steib

unread,
Jan 14, 2005, 4:11:40 PM1/14/05
to
On Fri, Jan 14 2005, Andreas Kohlbach wrote:

> Reiner Steib wrote on 14. January 2005:

[...]


>> Mag sein (ich benutze schon ewig leafnode2). Aber MID und References
>> sind doch normalerweise im overview enthalten, oder?
>
> References AFAIK nicht.

Kann ich mir nicht vorstellen. Mal sehen...

Zumindest bei DNEWS 5.6f3, INN 2.3.2 und Leafnode 2 sind sie drin.

Kai Großjohann

unread,
Jan 16, 2005, 5:45:36 PM1/16/05
to
Andreas Kohlbach <ank...@email.com> writes:

> Warum kann Emacs nicht die normalen PCRE Kompatiblen nehmen...

Weil die {} in den regulären Ausdrücken im Emacs seit 15 Jahren schon
normale Zeichen sind, da ist es keine gute Idee, das plötzlich zu
ändern.

Mich nerven die vielen Backslashes aber auch an.

Kai

0 new messages