Spam FilterDans notre série d’articles sur les serveurs mail, nous avons abordé dernièrement le filtrage des mails 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.

InfoIl 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 passé quelque temps à expérimenter avec les restrictions SMTP diverses et variées. Elles permettent d’effectuer une série de tests sur la validité de nom d’hôte, de l’enregistrement PTR ou de la commande HELO. J’en ai tiré la conclusion suivante.

  • Beaucoup de spammeurs disposent de serveurs correctement configurés, avec un enregistrement PTR, une commande HELO valide, etc.
  • En contrepartie, une minorité d’utilisateurs tout à fait légitimes échouent aux exigences de certaines restrictions SMTP.
  • Dans le doute, on préférera donc une approche conservatrice avec une politique de filtrage pas trop agressive.

Dans la configuration ci-dessous, j’utilise les RBL (Realtime Blackhole Lists) du projet Spamhaus, qui fournit notamment des listes d’adresses IP de spammeurs et de domaines suspects.

# Restrictions SMTP
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_rhsbl_helo dbl.spamhaus.org,
  reject_rhsbl_reverse_client dbl.spamhaus.org,
  reject_rhsbl_sender dbl.spamhaus.org,
  reject_rbl_client zen.spamhaus.org,
  reject_unauth_destination

Quelques remarques sur les directives utilisées.

  • rhs signifie right hand side, autrement dit le nom de domaine.
  • reject_rhsbl_helo entraîne le rejet d’un e-mail lorsque le nom d’hôte HELO ou EHLO est blacklisté.
  • reject_rhsbl_reverse_client rejette un e-mail lorsque le nom d’hôte inversé (enregistrement PTR) d’un client est blacklisté.
  • reject_rhsbl_sender rejette un e-mail lorsque le domaine MAIL FROM est blacklisté.
  • reject_rbl_client rejette un e-mail lorsque l’adresse IP du client est blacklistée.

InfoCertains spammeurs utilisent le serveur mail de Google et passent à travers le filtre reject_rhsbl_helo. En revanche, la plupart utilisent leur propre nom de domaine dans l’en-tête MAIL FROM et se font attraper par reject_rhsbl_sender.

Prendre en compte la nouvelle configuration.

$ sudo systemctl reload postfix

À partir de la, les spams bloqués grâce aux RBL apparaissent comme ceci dans les logs de Postfix.

Jun 7 05:26:29 sd-48011 postfix/smtpd[27536]: NOQUEUE: reject: 
RCPT from unknown[183.129.48.170]: 554 5.7.1 Service unavailable; 
Client host [183.129.48.170] blocked using zen.spamhaus.org; ...

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 à deux ou trois spams au grand maximum, que SpamAssassin détecte correctement et m’envoie directement à la Corbeille.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


0 commentaire

Laisser un commentaire

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