Luca Morettoni
English version

qmail-rblchk

qmail-rblchk permette di filtrare tutta la posta in ingresso e controllare se proviene da siti elencati nelle liste RBL.
Supporta questo progetto:

Installazione

Scaricare il pacchetto qmail-rblchk-2.4.1.tar.gz (Perugia, Italia)

Per compilare il programma:

     tar -xfz qmail-rblchk-[versione].tar.gz
     cd qmail-rblchk
     make setup check
E' possibile modificare le opzioni di compilazione e installazione editando i file conf-*.

Se usate FreeBSD potete intallare qmail-rblchk tramite il suo port:

     cd /usr/ports/mail/qmail-rblchk
     make install clean

Utilizzo

    |qmail-rblchk [opzioni] [/dir/]
qmail-rblchk è nato per essere utilizzato nei file .qmail per controllare l'IP di provenienza di un messaggio (indicato nelle righe Received: from. Esegue le stesse operazioni svolte da rblsmtpd, solo che i messaggi vengono controllati al momento della consegna e non prima, in questo modo è possibile oltre che rifiutare il messaggio anche inviarlo ad un'altra casella di posta elettronica.

Se viene indicata una directory con dir tutti i messaggi classificati come spam vengono memorizzati in questa directory purchè esista e sia in formato Maildir.
E' necessario specificare la directory in modo che il primo carattere sia uno / oppure . (punto) e termini con il carattere /.

Opzioni generali

Opzioni di controllo

E' possibile indicare fino ad un massimo di 32 opzioni di controllo, queste vengono controllate finchè non si ottiene una risposta positiva e la mail è considerata "spam" (ammenochè non venga usata l'opzione -C).

Se una mail arriva dall' IP a.b.c.d, la richiesta che viene inviata al server DNS è: d.c.b.a.addr dove addr è il parametro specificato con le opzioni -r, -R, -a oppure -A.

Exit code

Gli exit code del programma variano dipendentemente dalla presenza dell'opzione -c e dell'eventuale directory di destinazione (dir):

MessaggioStandardcon l'opzione -ccon dir
Normale010
Spam100099
Problema temporaneo111111111

Esempi

Questi sono solo alcuni esempi di utilizzo di qmail-rblchk, è opportuno leggere attentamente le manpages di dot-qmail(5), qmail-command(8) e condredirect(1) per evitare la perdita di messaggi importanti.

Interroghiamo i server RBL bl.spamcop.net e dialups.mail-abuse.org In caso di mail classificata come spam da almeno uno dei due server questa non viene recapitata al destinatario finale e il mittente riceverà una mail di notifica.

    # rifiura tutte le mail provenienti da IP dubbi
    | qmail-rblchk -r bl.spamcop.net -r dialups.mail-abuse.org
Le mail classificate come spam ci arrivino ma vengano parcheggiate nella casella di posta spam in modo tale da poter essere controllate. Il mittente del messaggio non riceve nessuna notifica.
    # parcheggia le mail sospette in un apposita Maildir
    | qmail-rblchk -r bl.spamcop.net -r dialups.mail-abuse.org ../spam/
Stesso comportamento dell'esempio precedente, in questo caso utiliziamo condredirect per parcheggiare lo spam in un'altra casella di posta (me-spam).
    # parcheggia le mail sospette in un apposito indirizzo
    | condredirect me-spam qmail-rblchk -c -r bl.spamcop.net -r dialups.mail-abuse.org
Nella directory contrib ho aggiunto uno script (spam-report.sh) che permette di raccogliere alcune statistiche sul filtraggio effettuato da qmail-rblchk.
Per il corretto funzionamento dello script occorre lanciare qmail-rblchk con l'opzione -l per generare i log, poi una volta configurati i path all'interno dello script secondo la vostra installazione basterà lanciarlo dal crontab della macchina con un settaggio del tipo:
    0    0    *    *    * spam-report.sh email_addr NUM
e alle 00:00 riceveremo all'indirizzo email_addr una mail simile a questa (verranno conservati e compressi gli ultimi NUM log):
    Date: 23 Jan 2006 00:00:03 -0000
    From: luca@home.morettoni.local
    To: luca@home.morettoni.local
    Subject: qmail-rblchk report

    qmail-rblchk report
    ===================

    Messages:
     total: 137
     good:  76      (55.500%)
     spam:  61      (44.500%)

    Check:
     DNS query: 306
     over cdb:  122

    RBL list usage:
     list #1 hits: 11
     list #2 hits: 32
     list #3 hits: 16

    cdb usage:
     allowed IPs:   5
     blocked IPs:   7

    --
    qmail-rblchk 2.4.1 - Luca Morettoni <luca@morettoni.net>
    See more at http://morettoni.net
Se volete usare il file cdb con l'opzione -X, create il file rule simile a questo:
    # la rete locale puo' inviare mail
    192.168.0.:allow
    # alcuni IP di spammer
    10.0.0.1:deny
    1.2.3.4:deny
creiamo il file CDB con:
    tcprules rule.cdb rule.tmp < rule
e mettiamo nel file .qmail:
    | qmail-rblchk -X ./rule.cdb -r sbl-xbl.spamhaus.org ../spam/
se l'IP viene trovato nel file rule.cdb qmail-rblchk segue le indicazioni: se l'IP non è presente nel file qmail-rblchk continua il controllo interrogando le liste RBL. E' possibile aggiungere al file CDB una regola di default (:allow or :deny), per per bloccare o accettare le mail da tutti gli altri IP.

Creare le proprie liste

Utilizzando l'opzione -L potete crearvi la vostra lista RBL privata. qmail-rblchk si limita ad aggiungere l'IP bloccato al file specificato, occorrerà poi filtrarlo per eliminare eventuali doppioni prima dell'utilizzo con programmi tipo uniq. Potete creare il file data da utilizzarsi con rbldns mediante lo script contrib/rbllist.sh.

Con l'utility getsenderip potete prelevare l'IP del mittente di una mail ed aggiungerlo in un file, la sintassi del comando è:

    getsenderip [-s num] out
out è il file dove verrà memorizzato l'IP, mentre con l'opzione -s si potranno ignorare i primi NUM IP trovati nell'header della mail. Lo script contrib/dot-qmail-storeip è un esempio di utilizzo nei file .qmail: potreste creare un file .qmail-spam per aggiungere altri IP alla vostra lista di spammer, oppure tramite .qmail-friends per le liste degli IP "buoni" (ovviamente dovrete usare due file di output differenti per i due script!!).
NOTA: L'esempio fornito ignora il primo IP incontrato, se inoltrate la mail quello sarà il vostro indirizzo e non è opportuno aggiungerlo alle liste!. Usando la variabile EXT2 potrete rendere i vostri script più versatili, creando il file .qmail-spam-default (e usando lo script di esempio), potrete inviare la mail di spam all'indirizzo spam-3@yourdom.tld e verranno ingorati i primi tre IP incontrati.

Ringraziamenti