Accueil > Howto > Le greylisting (liste grise) avec Postfix et Postgrey

Le greylisting (liste grise) avec Postfix et Postgrey

SpamLe greylisting est une solution simple et efficace pour lutter contre le spam.
Le principe consiste à rejeter tout nouveau mail de manière temporaire, alors qu’un serveur SMTP normal vous le renverra plus tard, un spammeur va passé à sa victime suivante…

Note: Si vous avez plusieurs serveurs SMTP, il faut mettre en place le greylisting sur chacun d’eux, sinon cette solution est inefficace.

 

Comment le greylisting fonctionne exactement?
 

Scénario n°1, le mail légitime:

jp.dupond@dupond.net m’envoie un mail à moi@moi.org, le serveur SMTP de dupond.net est 194.20.5.15.

Postgrey va analyser ces 3 éléments -> c’est la première fois que jp.dupond@dupond.net envoie un mail à moi@moi.org depuis 194.20.5.15.

 - Il va stocker ces informations dans une « base de données » et va renvoyé une erreur temporaire (type 450 4.2.0) au serveur distant.

 - Le serveur distant (194.20.5.15) va tenté d’envoyer le mail aux serveurs SMTP de backup, qui agiront de la même manière.

 - Le serveur distant va conserver le mail dans une file d’attende afin de la renvoyer plus tard, 5 à 15 minutes en général.

 - 5 à 10 minutes plus tard, 194.20.5.15 tente de remettre à nouveau le mail.

 - Postgrey analyse une nouvelle fois l’origine et la destination du mail, regarde dans sa base et constate que ce mail s’est déja présenté il y a au moins 5 minutes.

 - Il va maintenant mettre ces 3 éléments dans une liste blanche automatique, pour éviter un futur blocage et laisser le mail poursuivre son chemin.

 Extrait de logs:

Nov 24 23:19:15 sl07 postgrey[1995]: action=greylist, reason=new, client_name=smtp.dupond.net, client_address=194.20.5.15, sender=jp.dupond@dupond.net, recipient=moi@moi.org
Nov 24 23:24:13 sl07 postgrey[1995]: action=pass, reason=triplet found, client_name=smtp.dupond.net, client_address=194.20.5.15, sender=jp.dupond@dupond.net, recipient=moi@moi.org
Nov 24 23:47:51 sl07 postgrey[1995]: action=pass, reason=client AWL, client_name=smtp.dupond.net, client_address=194.20.5.15, sender=jp.dupond@dupond.net, recipient=moi@moi.org

 

Scénario n°2, le spammeur:

Il faut savoir que les 3/4 des spams sont envoyés par des programmes type malware/virus, et bien souvent, le propriétaire ne le sait même pas. Ces programmes visent plutôt la quantité que la qualité, ils ne vont pas chercher à renvoyer un mail qui aurait été rejeté une première fois de manière temporaire. Bien que certain FAI bloquent par défaut le port 25 en sortie, c’est loin d’être le cas pour tous.

service@paypal.com m’envoie un mail à moi@moi.org via 82.189.0.184.

Postgrey va analyser ces 3 éléments -> c’est la première fois que service@paypal.com envoie un mail à moi@moi.org depuis 82.189.0.184.

 - Il va stocker ces informations dans une « base de données » et va renvoyé une erreur temporaire (type 450 4.2.0) au « serveur » distant.

 - Le « serveur » distant ne va généralement pas tenté de renvoyer le mail sur un autre de vos serveurs SMTP, rappelons que ces malwares cherchent à viser un maximum de victimes et sont bien souvent codés avec les pieds.

 - Postgrey effacera les informations au bout de 35 jour (par défaut, il est possible de raccourcir ce délai dans le fichier de configuration)

 

Installation (Ubuntu/Debian):

sl07:~# aptitude install postgrey

c’est tout… :)

Puis dans le fichier main.cf de Postfix:

sl07:~# cd /etc/postfix
sl07:/etc/postfix# vi main.cf
[...]
#Requirements for the recipient address
smtpd_recipient_restrictions = check_policy_service inet:127.0.0.1:60000,  ...
[...]
sl07:~# /etc/init.d/postfix reload

 

Configuration:

Le fichier de configuration est situé dans /etc/default/:

sl07:~# cd /etc/default/
sl07:/etc/default# vi postgrey
# postgrey startup options, created for Debian
# (c)2004 Adrian von Bidder avbidder@fortytwo.ch
# Distribute and/or modify at will
# see also the postgrey(8) manpage
POSTGREY_OPTS="--inet=127.0.0.1:60000 --max-age=20 --delay=300"
# the --greylist-text commandline argument can not be easily passed through
# POSTGREY_OPTS when it contains spaces. So, insert your text here:
#POSTGREY_TEXT="Your customized rejection message here"

–inet=127.0.0.1:60000 -> Postgrey écoute en local sur le port 60000
–max-age=20 -> les entrées sont effacées au bout de 20 jours
–delay=300 -> le délai minimal (en secondes) avant d’accepter le mail

 

Les listes blanches:

Postgrey gère deux types de liste blanche, l’une pour les destinataire, l’autre pour les clients (serveur distant).
Ces fichiers se trouvent dans /etc/postgrey/:

sl07:~# cd /etc/postgrey/
sl07:/etc/postgrey# ll
-rw-r--r-- 1 root root  189 jun  4 15:56 whitelist_recipients
-rw-r--r-- 1 root root 7,6K nov 18 14:49 whitelist_clients

 

N’oubliez pas de répliquer votre configuration sur tout vos serveurs SMTP.

Categories: Howto Tags: , , ,
  1. Pas encore de commentaire
  1. Pas encore de trackbacks