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.
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
- -h: visualizza una breve spiegazione sul programma;
- -s: aggiunge l'header "X-Spam" alle mail filtrate (solo per i messaggi salvati
nella Maildir dir/);
- -i NUM: ignora i primi NUM IP trovati nell'header;
- -x IP: ignora l'IP indicato (è possibile ignorare massimo 16 IP);
- -m: controlla tutti gli IP per cui è passata la mail (per default viene controllato solo il primo);
- -v: modalità debug, output con le descrizioni dei passaggi effettuati;
- -p: esclude dal controllo gli IP provenienti dalle reti private:
- 127.0.0.0 - 127.255.255.255
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255
- -q: elimina tutti gli output del programma;
- -l LOG: salva tutti i messaggi in LOG;
- -L DATA: aggiunge al file DATA l'indirizzo IP bloccato (utile per creare una propria
lista RBL, vedere gli esempi);
- -c: attiva la modalità condredirect per i valori da restituire in uscita;
Opzioni di controllo
- -r addr: richiede al server addr se esiste un record TXT;
- -R addr: richiede al server addr se NON esiste un record TXT;
- -a addr: richiede al server addr se NON esiste un record A;
- -A addr: richiede al server addr se esiste un record A.
- -C addr: richiede al server addr se esiste un record A oppure TXT,
se è vero il messaggio NON viene considerato spam e il programma termina;
- -X cdb: controlla se l'IP del mittente è elencato nel file cdb, per la sintassi
controllare tcprules oppure gli esempi
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):
Messaggio | Standard | con l'opzione -c | con dir |
Normale | 0 | 1 | 0 |
Spam | 100 | 0 | 99 |
Problema temporaneo | 111 | 111 | 111 |
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:
- allow il messaggio viene recapitato normalmente;
- deny il messaggio viene considerato spam
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
- Joerg Backschues <jbks AT tca-os DOT de> per la correzione della pagina in lingua Inglese e per il test su un sistema con 300.000 utenti e 500.000 mail! (risultati);
- Brian T Glenn <glenn AT delink DOT net> per i suggerimenti riguardo le opzioni e per lo spazio nel mirror Americano;
- Emanuel Haupt <haupt AT critical DOT ch> per il port di FreeBSD e per avermi suggerito di scrivere la manpage;
- La moglie di Emanuel per le correzioni alla manpage;
- Tutti coloro che utilizzeranno il pacchetto e mi suggeriranno errori o aggiunte!