7.5. Combattere lo SPAM

Vediamo ora come filtrare eventuale UCE/UBE (Unsolicited Commercial/Bulk Email, cioè spam o posta indesiderata). Ci sono vari metodi e programmi, ma io uso SpamBouncer, prelevabile da http://www.spambouncer.org, cioè una serie di file rc contenenti un insieme di regole per procmail che permettono di fare varie cose sfiziose ;-), individuando lo spam cercando tra gli spammer conosciuti, siti e domini noti, ISP irresponsabili, header e body con contenuti riferibili a spam. In base a come impostato, permette di fare le seguenti cose:

Nell'ultimo caso, gli indirizzi email di quelli che vi rispondono vengono aggiunti al file indicato dalla direttiva NOBOUNCE, e non verranno più bloccati in futuro. Tenete presente che comunque il tutto è gestito automaticamente, quindi è normale che salti fuori l'eccezione che confermi la regola... Scaricate il file: http://www.spambouncer.org/sb.zip e date i comandi seguenti per scompattare il tutto:

cd $HOME/Mail/.Pm
mkdir sb && cd sb
cp /percorso/verso/il/file/sb.zip .
unzip sb.zip
rm -f sb.zip 
     

Si consiglia di filtrare lo spam nell'ultima parte, in particolare dopo il trattamento delle mailing list. Il file principale è sb.rc, che contiene tutte le impostazioni per il filtro, e che viene richiamato dal file spam2.rc seguente:

Attenzione

I due file di regole spam.rc e spam2.rc sono attualmente alternativi! Infatti molte delle cose presenti nel primo file sono fatte anche da SpamBouncer, e per filtri specifici potete sempre usare la Black-List. Attivatene quindi un solo file in .procmailrc!

=== file: spam2.rc ===

# filtro tramite black-list
:0
* ? formail -x"From" -x"From:" -x"Sender:" -x"Reply-To:" -x"Return-Path:" -x"To:" | egrep -is -f $PMDIR/black.lst
spam

# impostazioni per spambouncer
ADMINFOLDER=${MAILDIR}/IN.admin  # email bounced, da root, postmaster, abuse, etc.

BULKFOLDER=${MAILDIR}/IN.bulk    # per bulk email, che sembra leggittima

MYEMAIL=${PMDIR}/.myemail        # posizione del file contenente tutti i vostri
                                 # indirizzi email, elencati uno per riga

ALTFROM=otheremail@othersite.com # un indirizzo email alternativo, ma comunque valido,
                                 # per non far sapere agli spammer la tua vera email,
                                 # quando invii messaggi in cui ti lamenti dello spam

BLOCKFOLDER=${MAILDIR}/IN.block  # email sospette, ma possibilmente non spam

BLOCKREPLY=SILENT                # SILENT per filtrare semplicemente le email bloccate
                                 # NOTIFY per informare l'autore che l'email e' stata
                                 # bloccata, e informarlo su come oltrepassare il
                                 # blocco se pensano di essere leggittimati a farlo

BYPASSWD=zeugma                  # password per le persone che si vedono bloccate le
                                 # loro email legittime da Spam Bouncer. Permette di
                                 # aggirare il filtro. CAMBIARLA SPESSO!!!

NOBOUNCE=${PMDIR}/.nobounce      # posizione del file NOBOUNCE, contenente una per
                                 # riga le email delle persone che non devono MAI
                                 # essere bloccate. E' un normale file di testo,
                                 # quindi non usate escape per il punto, tipo \. !!!
                                 # Viene anche aggiornato in automatico da SB stesso.

NOLOOP=${ALTFROM}                # email usata nel campo X-Loop: per prevenire i loop

PATTERNMATCHING=SILENT           # abilita il filtro Pattern Matching di Spam Bouncer
                                 # NONE lo disattiva; SILENT filtra le email senza
                                 # avvertire il mittente; NOTIFY filtra e avverte il
                                 # mittente che la sua email e' stata bloccata

SBDIR=${PMDIR}/sb                # directory contenente i filtri di SpamBouncer

SPAMFOLDER=${MAILDIR}/spam       # mailbox che ricevera' lo spam, cambiare in /dev/null
                                 # per eliminarla definitivamente

SPAMREPLY=SILENT                 # SILENT per filtrare ma non autolamentarsi.
                                 # BOUNCE per inviare al mittente un messaggio bounce
                                 # di tipo "MAILER-DAEMON". COMPLAIN per inviare un
                                 # messaggio di lamentela all'abuse del mittente. BOTH
                                 # per inviare il bounce e lamentarsi con l'abuse

DULCHECK=no                      # se impostata a "yes", effettua un controllo con le
                                 # liste MAPS DUL. Questo riduce significativamente lo
                                 # spam, ma puo' crearvi problemi se corrispondete con
                                 # molta gente che usa uno Unix e un proprio mailserver.
                                 # Consiglio in questo caso di attivare la variabile
                                 # BLOCKREPLY=NOTIFY, in modo da consentire al mittente
                                 # di aggiungere il proprio indirizzo all'elenco dei
                                 # NOBOUNCE, usando la password contenute in $BYPASSWD.

ORBSCHECK=no                     # stesse considerazioni di DULCHECK, ma per l'ORBS.

RSSCHECK=no                      # stesse considerazioni di DULCHECK, ma per il MAPS RSS.

RBLCHECK=yes                     # questa invece puo' essere attivata tranquillamente,
                                 # visto che l'RBL lista spammer e siti certificati :-)

INCLUDERC=${SBDIR}/sb.rc         # ATTIVA SPAMBOUNCER!!!

# Le regole seguenti inviano le email indirizzate a uno dei vostri indirizzi email
# nello spool di default, spostando quelle che non hanno voi nei campi To: o Cc:,
# o che vi sono state inviate in Bcc: in un altro folder. Viene usato il file indicato
# in precedenza nella variabile $MYEMAIL, quindi create questo file indicando tutti
# gli indirizzi email in cui ricevete posta, elencandoli uno per riga
:0:
* ? test -f ${MYEMAIL} && \
    (${FORMAIL} -zxFrom: -zxReply-To: |\
    fgrep -i -f ${MYEMAIL})
| ${FORMAIL} -A"X-Folder: Default" >>${DEFAULT}

:0:
| ${FORMAIL} -A"X-Folder: Bulk" >>${BULKFOLDER}
     

Il file è ampliamente commentato, quindi leggetelo direttamente e modificate dove necessario.

Attenzione

Si consiglia inoltre di tradurre i due file spam e notify, che contengono rispettivamente i messaggi automatici usati per lamentarsi con l'ISP dello spammer, e il messaggio inviato a chi si vede bloccate le proprie email per avvisarlo su come aggirare il blocco tramite una password. Nella tarball dei FILES ci sono le versioni che uso io, già tradotte.

Nota: Per aggiornare il tutto, controllate le novità sul sito indicato in precedenza, e scompattate il nuovo file come fatto prima, a sovrascrivere la vecchia versione. Consiglio di sottoscrivere la mailing list che annuncia le nuove versioni, tanto è a bassissimo traffico.