Postgrey è un sistema piuttosto semplice per filtrare lo spam: è basato su una greylist (letteralmente lista grigia) che non è altro che una via di mezzo tra una whitelist ed una blacklist.

È un sistema che ha preso piede piuttosto di recente e permette di filtrare una buona quantità di spam, evitando la perdita di email (non mi soffermo sull’importanza del non perdere email, specie in ambito aziendale).

A differenza delle blacklist, le graylist accettano sempre le email in entrata. Il principio di funzionamento è basato sul retry dei server SMTP: gli spammer, per ovvie ragioni, tentano l’invio una sola volta (almeno la maggior parte di loro). Alla prima ricezione dell’email, il mail server bloccherà temporaneamente la ricezione per un periodo impostato, al successivo tentativo di invio l’email verrà accettata.

Contrariamente a quanto si può pensare a prima vista, questo sistema riesce a filtrare una notevole quantità di spam, dal 75% fino al 90%!

Come ho installato Postgrey su Postfix

Questo tutorial non vuole sostituire la documentazione ufficiale: è il prodotto dell’installazione sui miei sistemi.

Come da titolo, l’installazione di Postgrey è stata effettuata su mail server basati su Postfix, ma con gli opportuni accorgimenti, può essere fatta sulla maggior parte dei server di posta (almeno, sicuramente sui più quotati).

Andiamo al sodo: installiamo Postgrey con:

$ sudo aptitude install postgrey

Fatto questo, Postgrey è già in ascolto sulla porta 10023.

Per farlo funzionare con Postfix, andiamo a modificare in /etc/postfix/main.cf la direttiva smtpd_recipient_restrictions con la stringa:

check_policy_service inet:127.0.0.1:10023

Se la direttiva smtpd_recipient_restrictions non esiste è sufficiente aggiungerla:

smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:10023

mentre se esiste già, i valori che assume vanno separati da una virgola.
Adesso riavviamo Postfix:

$ sudo /etc/init.d/postfix restart

..e il gioco è fatto!

Per controllare il corretto funzionamento vedere il file di log /var/log/mail.log: quando le email arriveranno per la prima volta, verranno rifiutate con un messaggio di Postgrey.

Personalizzazione della configurazione di Postgrey

Se volessimo personalizzare (o anche solo verificare i parametri di avvio), apriamo il file /etc/defaults/postgrey. Alcuni parametri che possiamo modificare sono:

  • --inet : permette di specificare l’indirizzo e la porta su cui sarà in ascolto il demone
  • --delay : l’intervallo, in secondi, di durata del rigetto;
  • --max-age : la durata della memoria storica del programma, ossia dopo quanto cancellare gli indirizzi visti.

Queste opzioni andranno inserite nella variabile POSTGREY_OPTS, separate da uno spazio.

Con l’installazione di Postgrey vengono creati due file: whitelist_clients e whitelist_recipients. Vediamo a cosa servono.

whitelist_clients

La posizione predefinita del file è /etc/postgrey/whitelist_clients e contiene una serie di domini da cui la posta non verrà bloccata.
Alcuni di questi hanno dei retry delay molto lunghi o peggio non li hanno proprio, mentre altri hanno un network esteso di mail server per cui si rischia di non ricevere mai posta da questi domini.

Può contenere anche espressioni regolari (che vengono applicate all’intero indirizzo email).

whitelist_recipients

La posizione predefinita del file è /etc/postgrey/whitelist_recipients e contiene una lista di destinatari verso cui non bloccare la posta. Di solito non richiede modifiche: il file contiene già postmaster@ e abuse@ – destinatari verso i quali è bene che la posta arrivi sempre.

Considerazioni

Questo sistema è veramente semplice ed efficace, difficilmente genera dei falsi positivi e l’aumento di carico del sistema è minimo.

Per maggiori dettagli, vi rimando al manuale:

$ man postgrey