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
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
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
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.