Fra mailbox piene e/o abbandonate, servizi non più in attività e via dicendo, una cosa è sicura: se il vostro servizio web consente agli utenti di iscriversi, nel database finiranno anche indirizzi invalidi. Continuare a spedire a questi recapiti non è una buona idea, principalmente perché il server ricevente potrebbe "arrabbiarsi" e bloccarci completamente in caso di insistenza. Fortunatamente, creare una semplice "lista nera" di indirizzi e-mail da non contattare più sul nostro server Linux è molto facile.

Il modo più semplice per raggiungere l'obbiettivo è  di inoltrare ad un indirizzo "cattura tutto" (sotto il nostro controllo) tutte le mail che intendiamo bloccare. 

Creare l'elenco di indirizzi bloccati

Procediamo innanzitutto a creare sul server un file che contiene, per ogni riga, l'indirizzo da bloccare seguito dal nostro "cattura tutto".

Qui su TurboLab.it conservo questo file in /home/Amministrazione/Conf/sendmail-blacklist.txt, ma potete metterlo dove preferite. Per creare questo file, impartite touch /home/Amministrazione/Conf/sendmail-blacklist.txt quindi apritelo con vi /home/Amministrazione/Conf/sendmail-blacklist.txt

med

Entrate in modalità modifica premendo la lettera i sulla tastiera ed iniziate a digitare:

indirizzo1@gmail.com cattura_tutto@miodominio.it

indirizzo2@hotmail.com cattura_tutto@miodominio.it

@liero.it cattura_tutto@miodominio.it

@ibero.it cattura_tutto@miodominio.it

In questo esempio, le prime due righe bloccano altrettanti indirizzi specifici, mentre le successive vanno a gestire le storpiature del nome a dominio del sempre popolarissimo Libero.it.

Completato l'inserimento, premete Esc per uscire dalla modalità modifica, quindi :x per salvare e chiudere.

"Digerire" l'elenco

Ora impartite il comando postmap seguito dal percorso completo del file appena creato, ovvero quello che contiene gli indirizzi da bloccare: nel nostro esempio, sarà postmap /home/Amministrazione/Conf/sendmail-blacklist.txt.

Questa operazione genera un nuovo file binario digeribile dal sistema, con lo stesso nome dell'originale ma suffisso .db

med

Configurare il mail server

A questo punto siamo pronti a dire al mail server di consultare il nostro elenco prima di spedire.

Aprite il file di configurazione con vi /etc/postfix/main.cf ed entrate in modalità modifica premendo la lettera i sulla tastiera.

Raggiungete la fine del file ed aggiungete questa impostazione (utilizzando il vostro specifico percorso, naturalmente, ma avendo cura di conservare tutto il resto inalterato):

virtual_alias_maps = hash:/home/Amministrazione/Conf/sendmail-blacklist.txt

med

Attenzione bene! Dovete puntare al vostro file "originale", non a quello ".db" creato da postmap in precedenza!

Ora premete Esc per uscire dalla modalità modifica, quindi :x per salvare e chiudere.

Ricaricare il servizio e monitorare il log

Rendete effettive le modifiche impartendo postfix reload e il gioco è fatto.

Potete ora aprire il log delle mail inviate (tail -f /var/log/maillog). Non appena un'applicazione in esecuzione sul server proverà a contattare uno degli indirizzi presenti in lista, dovreste trovarvi un riferimento in suddetto file e la mail recapitata alla mailbox "cattura tutto".

Proprio il log delle mail è un'ottima fonte per capire quali altri indirizzi malfunzionanti aggiungere alla lista dei bloccati. L'altro file da consultare periodicamente è /var/mail/root che, per impostazione predefinita, raccoglie anche le notifiche automatiche dei server mail che si è provato a contattare senza successo.

Ricordate soltanto che il comando postmap per la creazione del file binario dovrà essere lanciato in seguito ad ogni modifica alla "lista nera" e che il software di invio recepirà le modifiche solo dopo aver ricaricato la configurazione (postfix reload).

E se voglio gestire "qualsiasi" destinazione?

Se utilizzate anche un server di test, è una buona idea disabilitare completamente l'invio di e-mail verso gli indirizzi degli utenti reali e ridirigere qualsiasi messaggio, indipendentemente dal destinatario, all'indirizzo "cattura tutto".

Per farlo, inserite solo una riga nel file di blacklist, cancellando tutto il resto:

/.*/ cattura_tutto@miodominio.it

Modificate quindi /etc/postfix/main.cf per utilizzare un prefisso leggermente diverso (indicate il vostro percorso specifico, naturalmente):

virtual_alias_maps = pcre:/home/Amministrazione/Conf/sendmail-blacklist.txt

Come evidente, è stato sostituito il prefisso hash: con il nuovo pcre:.

Ricaricate la configurazione e fate una prova, ma dovrebbe funzionare tutto come ci si aspetta.