Greylisting: Postfix con Postgrey

Da Faber Libertatis.

Indice della pagina

Il Greylisting

Il greylisting è una tecnica antispam piuttosto nuova ideata da Evan Harris che, a differenza delle tecniche e dei software più diffusi come SpamAssassin o SpamBayes, adotta un approccio elegante e poco invasivo.

Il greylisting sfrutta il comportamento dei server che inviano lo spam, tipicamente programmi per il mass-mailing che non rispettano le specifiche del protocollo SMTP, per intrappolarli ed evitare la ricezione dei messaggi di spam senza doverne esaminare il contenuto. Il suo nome è un gioco di parole sui termini blacklist e whitelist, utilizzati dai software antispam per designare le liste che rifiutano o accettano incondizionatamente i post a seconda della loro origine.

In pratica, il greylisting esamina il contenuto dell'envelope SMTP (intestazioni SMTP, che riportano il mittente ed i destinatari del messaggio scambiati tra i server, non quelli riportati all'interno del messaggio) e lo associa all'indirizzo IP del server mittente. Se l'insieme di questi dati è conosciuto al filtro di greylisting, il messaggio viene lasciato passare. Se i dati non sono mai stati visti prima, viene restituito al server mittente un errore temporaneo che viene interpretato da un server di posta come una richiesta di posporre l'invio, ma non viene di solito gestito dai programmi di mass mailing che non sono così in grado di recapitare lo spam.

I vantaggi del greylisting sono evidenti: minimo impatto sull'infrastruttura di posta, risparmio di banda, bassissima manutenzione, spostamento del consumo di risorse sugli spammer. L'unico svantaggio è un ritardo nella ricezione dei messaggi di posta legittimi.

Postfix e Postgrey

Postgrey è un'applicazione del Greylisting a Postfix. Vedremo ora come installarlo.

Installazione Postgrey

Su un sistema debian per installare postgrey basta dare

# apt-get install postgrey

Configurazione Postgrey

Una volta installato Postgrey è necessario editare il file di configurazione /etc/default/postgrey, indicando la porta da utilizzare, il timeout trascorso il quale accettare un messaggio scartato precedentemente ed il numero di giorni dopo il quale eliminare le terne indirizzo IP, email mittente e destinatario dal database utilizzato dal programma:

POSTGREY_OPTS="--inet=127.0.0.1:54000 --delay=180 --max-age=10"

In seguito alla modifica è necessario riavviare Postgrey

# /etc/init.d/postgrey restart

Configurazione Postfix

Per abilitare il Greylisting in Postfix è sufficiente editare il file main.cf ed aggiungere la riga check_policy_service inet:127.0.0.1:54000 sotto smtpd_recipient_restrictions

smtpd_recipient_restrictions =
    [...]
    check_policy_service inet:127.0.0.1:54000,
    [...]

Anche in questo caso, per applicare le modifiche apportate alla configurazione è necessario riavviare il demone:

# /etc/init.d/postfix restart

Verifica del funzionamento

Per verificare il corretto funzionamento del sistema è sufficiente controllare i log di postfix dopo aver ricevuto una mail da un mittente non ancora registrato nel database di postgrey; dovrebbero esserci delle righe simili alla seguente:

[...]
Oct 13 05:49:39 webrocchi postfix/smtpd[8401]: NOQUEUE: reject: RCPT from unknown[165.98.135.220]: 
450 <unknown[165.98.135.220]>: Client host rejected: Greylisted for 300 seconds 
(see http://isg.ee.ethz.ch/tools/postgrey/help/webrocchi.liceobrocchi.vi.it.html); 
from=<arrellany@jjphoto.com> to=<stefano.sasso@webrocchi.liceobrocchi.vi.it> proto=SMTP helo=<jjphoto.com>
[...]