PostfixDans notre série d’articles sur les serveurs mail, nous avons abordé dernièrement le filtrage des spams avec SpamAssassin. Ce dernier est assez efficace pour identifier les spams, et d’après ce que j’ai pu observer durant ces derniers mois, il n’y a pas de faux positifs. Autrement dit, aucun mail légitime n’a été faussement identifié comme spam jusque-là.

Le problème avec SpamAssassin, c’est qu’il ne gère que le filtrage et l’identification. Après, c’est à chaque utilisateur de définir une règle de filtrage correspondante dans Thunderbird pour envoyer le spam directement à la Corbeille.

Notons au passage qu’il est certes possible de déplacer les messages identifiés comme spams directement sur le serveur. Mon compatriote Michael Kofler décrit cette manière de faire sur son blog, mais c’est un peu une usine à gaz.

Un autre inconvénient de SpamAssassin, c’est que les spams passent quand-même par le serveur et utilisent les ressources de celui-ci. On va donc tenter de régler le problème en amont.

Le serveur Postfix permet de définir toute une série de restrictions SMTP. C’est assez bien expliqué dans la documentation officielle, et il existe même une version française pas tout à fait à jour. En dehors de cela, on trouve une quantité de tutoriels sur la question, d’une qualité assez inégale.

J’ai donc passé quelque temps à expérimenter avec les restrictions SMTP diverses et variées, et au bout de quelques semaines de tentatives et d’échecs, j’ai fini par trouver une configuration qui fonctionne plutôt bien. Dans mon fichier /etc/postfix/main.cf, voici ce que j’ajoute juste après la section concernant l’authentification SMTP.

# /etc/postfix/main.cf
...
# Restrictions SMTP
smtpd_helo_restrictions = reject_unknown_helo_hostname
smtpd_sender_restrictions = reject_unknown_sender_domain,
  check_sender_access hash:/etc/postfix/sender_access
smtpd_recipient_restrictions = permit_mynetworks,
  permit_sasl_authenticated,
  reject_rbl_client zen.spamhaus.org,
  reject_rhsbl_reverse_client dbl.spamhaus.org,
  reject_rhsbl_helo dbl.spamhaus.org,
  reject_rhsbl_sender dbl.spamhaus.org
smtpd_relay_restrictions = permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_destination
smtpd_data_restrictions = reject_unauth_pipelining

Sans trop rentrer dans les détails, voyons un peu qu’est-ce qui fait quoi là-dedans.

  • La directive reject unknown_helo hostname refuse de communiquer avec les systèmes qui ne connaissent pas leur propre nom de machine.
  • La directive reject_unknown_sender_domain n’accepte pas le courrier des domaines qui n’existent pas.
  • La directive check_sender_access a été abordée en détail dans un précédent article. Elle s’avère pratique pour rectifier le tir à la main, en bloquant individuellement des domaines de spammeurs qui passent à travers les mailles du filet.
  • Les directives reject_rbl_client, reject_rhsbl_reverse_client, etc. utilisent les RBL (Realtime Blackhole Lists) du projet Spamhaus, qui fournit notamment des listes noires d’adresses IP de spammeurs et de domaines suspects.
  • Enfin, la directive reject_unauth_pipelining coupe le caquet aux clients qui parlent trop tôt.

Le succès de cette configuration est assez spectaculaire. Sur mon adresse mail principale, je suis passé de près de deux cents spams par jour à un ou deux spams au grand maximum, que SpamAssassin détecte correctement et m’envoie directement à la Corbeille.

 

 


0 commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.