Page suivante Page précédente Table des matières
10. Annexe 3 : Filtrage des articles avec suck
suckpermet de filtrer les articles qu'il récupérera sur le serveur distant. Il utilise, pour cela un mécanisme de « kill-files » (cf.suck(1)) Dans le répertoire/usr/lib/suckdoit se trouver un fichiersuckkillfilequi est le fichier de filtrage maître. Le mien contient les lignes suivantes (par discrétion, j'ai caché les noms des indélicats dont je ne souhaite pas récupérer les articles...).
HILINES=10000 #LOWLINES=10 NRGRPS=7 From:aaaa@bbb.fr From:cccc@ddd.fr QUOTE=\ GROUP=delete fr.comp.os.linux.annonces suckkillfile.fcola GROUP=delete fr.usenet.logiciels suckkillfile.no_ms GROUP=delete fr.comp.mail suckkillfile.no_msChaque entrée de ce fichier peut être de 2 types :
- Type mot-clé :
HILINES, LOWLINES, QUOTE, GROUP: ils définissent un comportement « général » ;- Type header :
From, Subject, Path, ...(en fait, tout champ valide d'un en-tête d'article) : ils définissent un comportement « particulier ».On notera que les entrées de type mot-clé ont la syntaxe
mot_clé=paramètre(s)alors que les entrées de type header ont la syntaxeheader:valeur(en tous cas, depuis la version 3.6.0).Les champs
HILINESetLOWLINESindiquent, respectivement, qu'il ne faut pas récupérer les articles ayant plus de lignes ou moins de lignes que celles spécifiées. Ici,suckne récupèrera pas les articles ayant plus de 10000 lignes. J'ai commenté l'entréeLOWLINEScar certains auteurs (n'est-ce pas, Nat ?) envoient des articles parfois très courts (un simple lien, par exemple).Le champ
NRGRPSindique le nombre maximal de forums autorisé pour le postage multiple d'un article. C'est une première précaution pour éviter les « spams », car tout article posté dans de trop nombreux forums est suspect. Cette entrée n'apparaît qu'à partir de la version 3.8 desuck. Attention à ne pas vouloir trop en faire : j'avais d'abord mis cette valeur à 5 et, par analyse du fichier/tmp/suck.killlog, je me suis aperçu que certains articles avaient été rejetés car, dans certains forums (notamment ceux traitant d'emacs), le cross-postage est une coutume... Je l'ai donc ramené à 7.Le champ
QUOTEpermet de définir le caractère servant à quoter les caractères spéciaux dans les expressions régulières (cf.regexp(3)).Le champ
GROUPpermet de définir un comportement pour un forum particulier : ce comportement est soitdeletesoitkeep. Il s'applique au forum dont le nom suit, selon les règles de filtrage définies dans le fichier précisé. Ici, je filtre les articles des groupesfr.comp.os.linux.annonces, fr.usenet.logicielsetfr.comp.mail. Le premier est filtré selon les règles définies dans le fichier de filtragesuckkillfile.fcolaet les deux autres selon les règles définies danssuckkillfile.no_ms.Ici, le fichier
suckkillfilene contient que deux entrées de type header : elles servent à filtrer tous les articles dont le champ « From » contient une des deux adresses spécifiées, quels que soient les forums dans lesquels ils ont été postés. Cela permet, notamment, d'éliminer les « trolleurs » ou les « spammers » déjà repérés.Les entrées de type header décrites dans le fichier
suckkillfiles'appliquent à tous les forums.Pour définir un comportement particulier pour un forum donné, on utilise une entrée
GROUP. Mon fichiersuckkillfile.fcolane contient qu'une ligne :
Path:fr\.howtoCe qui permet de filtrer les articles contenant
fr.howtodans leur champPath: cela me permet d'éviter la récupération des Howtos publiés mensuellement dans fcola... En fait, au départ, je me suis intéressé àsuck(et donc àINN) pour cette seule raison !Mon fichier
suckkillfile.no_mscontient les lignes suivantes :
Subject:.*Eudora Subject:.*Forte Subject:.*Outlook Subject:.*\<Ms Subject:.*Pegasus Subject:.*GravityCe qui permet de filtrer les articles dont le champ « Subject » concerne des logiciels Microsoft (pas tous, malheureusement...).
À la place de
delete, on peut indiquerkeep, qui ne conservera que les articles correspondants aux critères fixés.Une entrée de type :
GROUP=keep fr.* suckkeepfile.moiEt un fichier
suckkeepfile.moicontenant simplement :
From:.*jaco@mail\.dotcom\.frAurait le mérite de restreindre le nombre d'articles récupérés pour les forums de la hiérarchie
fr, mais je n'apprendrais plus grand chose...À chaque fois qu'il rejette un article,
suckl'indique dans le fichier/tmp/suck.killlogen indiquant la raison de ce rejet. Par des options passées àsuck, vous pouvez paramétrer la taille de ces informations : par défaut,suckutilise le format long. On peut le forcer à utiliser un format court, mais je le trouve peu explicite... On peut même le configurer pour qu'il ne crée pas ce fichier : ce serait une mauvaise idée, selon moi. Jetez un coup d'oeil à/tmp/suck.killloglorsque vous ajoutez un critère de filtrage afin de vous assurer que les effets obtenus sont bien ceux escomptés. En tout cas, pensez à vider ce fichier périodiquement car il a tendance à grossir assez vite (sauf si vous avez configuré votre système pour qu'il vide/tmpà chaque redémarrage).
Page suivante Page précédente Table des matières