Configurazione di SURBL per qmail

Le SURBL sono liste di siti web che appaiono nel corpo della posta indesiderata. Diversamente dalla maggior parte delle liste non sono liste di indirizzi IP.

I siti web che appaiono nei messaggi di posta indesiderata tendono ad essere più stabili rispetto agli indirizzi IP in rapido cambiamento dei botnet che sono soliti inviare la maggior parte di questi messaggi. Le liste di IP come zen.spamhaus.org possono essere usate in un primo stadio di filtraggio per aiutare a identificare da circa l'80% al 90% dei messaggi di posta indesiderata. Le liste SURBL possono contribuire a eliminare il restante 75% della posta indesiderata in un successivo stadio di filtraggio. Usate insieme alle liste di IP (RBL), le SURBL risultano un metodo molto efficace per identificare fino al  95% della posta indesiderata.

Il filtro SURBL è parte della patch DKIM di Manvendra Banghui ed è compresa nella mia patch combinata.

Per abilitare questo filtro è necessario esportare la variabile SURBL con un valore qualunque nel proprio run file e passare il programma alla variabile QMAILQUEUE di modo che sia sia eseguito prima del delivery:

export SURBL=1
export QMAILQUEUE=/var/qmail/bin/surblqueue
export SURBLQUEUE=/var/qmail/bin/simscan

In realtà il programma viene lanciato dal wrapper surblqueue, come si può notare. SURBLQUEUE farà in modo che il programma esegua simscan quando avrà finito. Se non si definisce SURBLQUEUE il programma eseguirà qmail-queue per fare il delivery.

NB: Ricordarsi di rimuovere eventualmente QMAILQUEUE dal tcp.smtp, viceversa questa istruzione andrà a sovrascrivere il run file.

La directory /var/qmail/control/cache deve avere i privilegi di scrittuta per l'utente con il quale viene lanciato qmail-smtpd, nel nostro caso vpopmail. Ho già impostato in questo senso la mia patch combinata.

surblfilter richiede due control file level2-tlds e level3-tlds in /var/qmail/control. Questi possono essere scaricati dal sito surbl.org agli indirizzi http://www.surbl.org/tld/three-level-tlds http://www.surbl.org/tld/two-level-tlds. Questi file non dovrebbero essere confusi con le liste SURBL, ma devono essere comunque aggiornati una volta circa ogni mese. Sarà quindi il caso di mettere a punto un cronjob che faccia allo scopo:

#!/bin/sh
#

cd /var/qmail/control
/usr/bin/wget http://www.surbl.org/tld/three-level-tlds http://www.surbl.org/tld/two-level-tlds
mv two-level-tlds level2-tlds
mv three-level-tlds level3-tlds

Salviamo lo script come /usr/local/bin/update_tlds.sh, rendiamolo eseguibile

chmod +x /usr/local/bin/update_tlds.sh

e inseriamolo nel nostro crontab come segue

# surbl tlds update
2 2 23 * * /usr/local/bin/update_tlds.sh 1> /dev/null

Eseguire surblfilter, qmail-dkim e simscan in cascata

Usando una combinazione tra QMAILQUEUE, SURBLQUEUE e DKIMQUEUE possiamo far sì che i tre programmi che ci interessano qui vengano eseguiti uno dopo l'altro:

export SURBL=1                                                  # Comment to disable SURBL filtering
export QMAILQUEUE=/var/qmail/bin/surblqueue # executes surblfilter
export SURBLQUEUE=/var/qmail/bin/qmail-dkim # executes qmail-dkim afer sublfilter
export DKIMQUEUE=/var/qmail/bin/simscan        # simscan is executed after qmail-dkim
# DKIM verification
export DKIMVERIFY="FGHIKLMNOQRTVWjpu"
# This is to avoid verification of outgoing messages
export RELAYCLIENT_NODKIMVERIFY=1

Test

Spedite a voi stessi un messaggio con un URL come http://surbl-org-permanent-test-point.com/ nel corpo. Dovrete vedere il filtro in azione all'interno del log file di qmail-smtpd log:

qmail-smtpd: message rejected (message contains an URL listed in SURBL blocklist): user@domain.xy from 123.45.67.89 to yourself@yourdomain.xy helo yourmailserver.xy