Greylisting con Postfix
Il greylisting è un metodo di difesa dallo spam, che distingue i server SMTP "buoni" da quelli che inviano spam in base al loro comportamento in caso di reject dei messaggi. I server "buoni", infatti, cercano di inviare di nuovo qualsiasi email, se questa è stata "rigettata temporaneamente" dal server di destinazione, mentre i server che inviano spam normalmente non si prendono la briga di reinviare i messaggi.
La protezione di greylisting, quindi, la prima volta che gli arriva una email, ne memorizza
- l'indirizzo IP del server
- l'indirizzo del mittente
- l'indirizzo del destinatario
e rigetta la mail con messaggio di "temporarily unavailable, try again later".
Il server SMTP che ha inviato il messaggio ritenterà di farlo, e a questo punto il messaggio verrà accettato normalmente.
In questo modo vengono eliminate moltissime email di spam, sollevando il server SMTP dal lavoro di controllo nelle blacklist e con l'antivirus. D'altra parte, si può avere un leggero ritardo nella ricezione di alcune email.
Greylisting con Postfix
Il server SMTP Postfix ha un pacchetto che implementa il greylisting che si chiama postgrey. Per installarlo, da root:
apt-get install postgrey
Per controllare che sia attivo il servizio sulla porta 6000 di localhost, date
# netstat -anp | grep 60000 tcp 0 0 127.0.0.1:60000 0.0.0.0:*
A questo punto è necessario aggiungere una linea a /etc/postfix/main.cf per indicargli di usare il nuovo servizio. Dato
che si tratta di un controllo anche sull'indirizzo del destinatario, lo
mettiamo in smtpd_recipient_restrictions:
check_policy_service inet:127.0.0.1:60000
Attenzione a dove lo mettiamo, può cambiare notevolmente! In una installazione con blacklist, conviene fare così:
smtpd_recipient_restrictions =
check_recipient_access hash:/etc/postfix/rejectedrecipients,
check_recipient_access hash:/etc/postfix/mailboxfull,
permit_sasl_authenticated,
permit_mynetworks,
check_policy_service inet:127.0.0.1:60000,
reject_unauth_destination,
reject_rbl_client bl.spamcop.net,
reject_rbl_client cbl.abuseat.org
Cioè metterlo dopo permit_mynetworks, che permette l'accesso
incondizionato a tutte le connessioni provenienti dalla rete locale (o da
localhost, a seconda della configurazione di mynetworks nello
stesso file) e quindi, ad esempio, non crea problemi nelle installazioni
di webmail, ma prima dei reject_rbl_client, che vanno a fare una
query sui server di blacklist.
A questo punto si deve riavviare il server Postfix, con
/etc/init.d/postfix reload
ed è fatto.
L'unico problema che si può avere è nel caso in cui vogliate cambiare il testo di default del messaggio; nel qual caso, leggete il bug n. 298832 di Debian.
