# Greylisting

Greylisting o graylisting è un metodo per difendere gli utenti dallo spam via e-mail. Un mail server che utilizza la tecnica di greylisting rifiuterà temporaneamente tutte le e-mail da un mittente che non conosce. Se l'e-mail è legittima, il mail server del mittente ritenterà l'invio, e questa volta l'operazione verrà accettata. Se l'e-mail viene inviata da uno spammer, probabilmente non si avrà un ulteriore tentativo poiché il mail server dello spammer avendo a disposizione migliaia (o milioni) di indirizzi email, passerebbe oltre non occupandosi degli errori.

## Come funziona

Tipicamente un server che utilizza la tecnica di graylisting genera una tripletta di dati per ogni messaggio email in arrivo:
* l'indirizzo ip dell'host mittente
* l'indirizzo e-mail del mittente
* l'indirizzo e-mail del destinatario
che viene poi controllata con le triplette registrate nel database. Se questa tripletta non è ancora stata registrata (la registrazione può durare per un tempo variabile, detto retry time), l'e-mail viene messa in "lista grigia" per un piccolo periodo di tempo (configurabile a piacere) detto embargo time, e viene rifiutata con un codice di errore SMTP 4xx. Questo codice corrisponde a un errore temporaneo perciò un server legittimo ritenterà l'invio dell'e-mail.
Greylisting è efficace poiché la maggior parte degli strumenti utilizzati dagli spammer non ritentano l'invio della mail, per cui il messaggio non verrà mai recapitato al destinatario. Se lo spammer dovesse ritentare l'invio della mail, esistono comunque software che possono riconoscere lo spam analizzando il contenuto del messaggio.

## Vantaggi

Il vantaggio maggiore è che l'utente finale non deve configurare nulla. Dal punto di vista di un amministratore invece il vantaggio è doppio. Greylisting infatti ha bisogno di una configurazione minima dati da occasionali modifiche alla lista bianca (cioè alla lista degli utenti che possono inviare e-mail senza essere processati dal sistema). Il secondo maggior vantaggio è che il messaggio di errore SMTP 4xx non determina l'occupazione di ulteriori risorse. La maggior parte dei software di riconoscimento dello spam occupano spesso molta memoria e gravano sulla cpu in modo evidente. Bloccando lo spam prima che venga esaminato si possono risparmiare queste risorse.

## Svantaggi

Dato che il greylisting, per autorizzare un messaggio, necessita di vederlo nella medesima tripletta almeno due volte in successione, il primo invio da un mittente estraneo al dominio locale verso un determinato destinatario comporterà un ritardo, corrispondente ad tempo che il MTA remoto impiega per tentare nuovamente la consegna (quindi indipendente dall'embargo time impostato sul MX). Alcuni server leciti purtroppo non osservano il criterio di ritrasmissione (v. RFC2821), per cui può accadere che qualche MTA non sia in grado di completare la consegna.
Molti provider con grande numero di utenti dispongono di più MTA che operano con logiche round-robin: questo comporta una possibile variazione dell'IP mittente in caso di ritrasmissione, invalidando la tripletta che il greylisting utilizza come riferimento per determinare la legittimità del messaggio: ciò quindi comporta un ritardo rilevante nell'inoltro del medesimo. Alcuni software antispam permettono di ignorare l'IP, basandosi unicamente su indirizzi mittente e destinatario: in questo modo si riduce l'efficacia del greylisting, ma si riduce il tempo di consegna nel caso di MTA multipli.
Nel caso siano presenti uno o più server di backup, si osserva che il server mittente dapprima tenta la consegna al server MX configurato con il numero di preferenza più basso e, risultando fallita la consegna, ripete il tentativo con i server di backup; se anche questi ultimi sono provvisti di greylisting, il MTA mittente ritenterà la consegna verso l'ultimo server al quale si è connesso, ovvero al backup con numero di preferenza massimo. Una volta memorizzata in tal modo la tripletta da parte di uno dei server di backup, i messaggi da quel mittente a quel destinatario percorreranno sempre quella via, poiché il MX primario non riceverà mai la tripletta di conferma, a meno che il retry time del greylisting non venga impostato per un tempo inferiore al successivo invio di quel particolare messaggio; il MX di backup invece avrà la tripletta valida e la lascerà quindi passare immediatamente. Su questo comportamento il mittente non ha nessuna possibilità di correzione.