Postgrey antispam
Da PiemonteWireless.
Postgrey: un metodo antispam semplice ed efficace
Il software Postgrey usa delle liste di quarantena, chiamate greylist in cui deposita le mail in arrivo. Il funzionamento è semplice: ogni mail in ingresso viene identificata dalla tripletta IP_SORGENTE/MITTENTE/DESTINATARIO (CLIENT_IP/SENDER/RECIPIENT). Se è la prima volta che la tripletta viene incontrata, o se è già stata vista da meno di 5 minuti, la tripletta (e quindi la mail) è messa in quarantena (greylisted), e la mail sarà respinta con un messaggio di "errore temporaneo". Se la stessa tripletta è vista dopo 5 minuti e prima di 35 giorni, la mail sarà accettata (ovviamente i valori di 5 minuti e 35 giorni sono configurabili).
L'idea chiave alla base di questo metodo antispam è che gli spammers non possono rispettare gli standard RFC che dicono che quando una mail non può essere trasmessa, il mail server deve riprovare di nuovo dopo un tot di tempo. Inviando così tante mails, gli spammer non hanno le risorse per tentare di rispedire tutte quelle mail che per una ragione o un'altra sono state repsinte, quindi vanno oltre se la mail non è accettata al primo colpo.
Installiamo Postgrey
$sudo apt-get install postgrey
Nell'installazione di default Postgrey è legato alla porta 60000 dell'interfaccia di loopback 127.0.0.1 (non è quindi raggiungibile dall'esterno).
Integrare Postgrey con Postfix è molto semplice. La sola modifica da fare è nel file /etc/postfix/main.cf: bisogna aggiungere alla regola smtpd_recipient_restrictions la condizione check_policy_service inet:127.0.0.1:60000:
smtpd_recipient_restrictions = reject_unauth_pipelining, permit_mynetworks,
permit_sasl_authenticated, reject_non_fqdn_recipient,
reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, permit
La vostra configurazione potrebbe essere leggermente diversa a seconda di come avete configurato Postfix.
Adesso riavviate Postfix:
$sudo /etc/init.d/postfix reload
e il gioco à fatto.
Se volete vedere un report della greylist il comando è:
#cat /var/log/mail.log | postgreyreport \ --nosingle_line --check_sender=mx,a --show_tries \ --separate_by_subnet=":===============================================================================================\n"

