Next Previous Contents

3. Usare i filtri

Prendiamo in considerazione solo i filtri in perl, non quelli in python.

a seconda che installiate dai sorgenti o da pacchetto i filtri saranno installati in posizioni differenti, se compilate dovrebbero essere in /usr/lib/news/bin/filter/, se usate debian sono in /etc/news/filter/

per sapere se i filtri sono attivi, come utente news eseguite:

$ ctlinnd mode

(sempre che il programma ctlinnd sia nel PATH, altrimenti dovrete indicare tutto il percorso)

dovrebbe mostrarvi qualcosa di simile a questo:

Server running
Allowing remote connections
Parameters c 0 i 50 (0) l 10000 o 101 t 300 H 2 T 60 X 0 normal specified
Not reserved
Readers separate enabled
Perl filtering enabled 

l'ultima riga vi dice che i filtri sono attivi.

I filtri possono essere comunque essere attivati/disattivati mentre il server e' in funzione con il comando:

$ ctlinnd perl y|n

e se li modificate possono essere ricaricati con il comando:

$ ctlinnd reload filter.perl prova modifica filtri

l'ultimo campo descrittivo e' obbligatorio, puo' essere una singola parola o una frase, e comparira' nei log

Sostanzialmente ogni volta che il server riceve un messaggio da un client, questo passa attraverso il filtro filter_nnrpd.pl (che analizza solo gli headers), e successivamente attraverso filter_innd.pl,(che analizza headers e body), mentre invece se il messaggio arriva da un altro news server a cui siamo collegati (non e' il caso di autistici) viene applicato solo il filter_innd.pl

3.1 filter_nnrpd.pl

Lo scopo fondamentale per cui utilizziamo questo filtro su autistici e' quello di anonimizzare i messaggi, la sintassi e' abbastanza semplice e intuitiva anche per chi non conosce il perl ma ha un minimo di conoscenza di un qualsiasi linguaggio di programmazione, attenzione pero' alla sintassi, una virgola sbagliata e il vostro newsserver non ripartira' se tentate di ricaricare un filtro con degli errori, e i log non sono di molto aiuto in questi casi.

Qui' sotto trovate il filtro che stiamo usando, da notare che per alcuni gruppi specifici (il cui nome inizia per "anon") e' possibile attivare una maggiore protezione della privacy modificando anche il message-ID, lo User-Agent, il campo from e il reply-to.

filter_nnrpd.pl

sostanzialmente filter_nnrpd.pl va a controllare tutti gli header dei messaggi postati, e puo' rifiutare messaggi in base a uno o piu' header, oppure modificare gli header.

Per rifiutare i messaggi che hanno un From: particolare si possono vedere le prime righe del filtro, che faranno in modo che i messaggi postati con il from nulla@nulla.org saranno rifiutati e il client ricevera' il messaggio di errore indicato dalla variabile $rval.

Come si puo' intuire se la variabile $rval viene restituita vuota il messaggio viene modificato e accettato, altrimenti il messaggio e' rifiutato con il messaggio indicato nella varibaile stessa.

3.2 filter_innd.perl

Al posto del filter_innd.perl fornito con inn si puo' utilizzare Cleanfeed ( http://www.bofh.it/~md/cleanfeed/cleanfeed-20020501.tgz) che e' moooolto piu' potente e versatile, con cleanfeed possiamo bloccare il crosspost eccessivo, il posting di messaggi binari in newsgroup non binari, il posting di messaggi in HTML, il posting di messaggi di controllo in certi newsgroup , i msg di spam (con diversi meccanismi tra cui uno scoring basato su headers e body dei messaggi) e molto altro.

Per installarlo basta decomprimere l'archivio da qualche parte, ad es. /etc/news/filter/cleanfeed

fare una copia di backup di filter_innd.pl e creare un link simbolico filter_innd.pl che punta al file cleanfeed.

cleanfeed e cleanfeed.local vanno poi modificati per adattarli al proprio sistema, le uniche modifiche obbligatorie sono:

cleanfeed.local, la riga

$localpost = 1 if $hdr{'X-Trace'} and $hdr{'X-Trace'} =  /autistici\.org /;

che deve contenere il path nel nostro newsserver

e cleanfeed a cui bisogna indicare la directory che contiene i vari files utilizzati da cleanfeed:

$config_dir = '/etc/news/filter/cleanfeed';

P.S. I messaggi rifiutati possono anche essere salvati in file di testo (formato mbox) per poi essere eventualmente ripostati dopo essere stati modificati o dopo aver modificato un filtro che rifiutava messaggi validi, vedere cleanfeed.local per la sintassi.

cleanfeed

cleanfeed.local


Next Previous Contents