Filtrer les spamsDans 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.

AstuceIl 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. 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é les conclusions suivantes :

  • 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 :

# SMTP restrictions
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.

AstuceCertains 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.

# systemctl reload postfix

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

RBL Spamhaus

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.

 

Catégories : SécuritéServeur

3 commentaires

Ze · 19 janvier 2024 à 8 h 54 min

Le’filtrage direct sans pondération avec des rbl est efficace pour un serveur gérant peu de comptes mais dès que le nombre d’échanges augmentent c’est dangereux on rejeté facilement beaucoup de messages légitimes emits par des serveurs ayant été blacklist à cause de leurs voisins par exemple. Dans ce cas là le mieux est de pondérer avec d’autres signes. Rspamd permet de faire ça globalement et efficacement par exemple

    kikinovak · 19 janvier 2024 à 9 h 55 min

    Effectivement. J’en suis conscient dans un coin de ma tête. La configuration décrite est utilisée sur un petit serveur de production hébergeant une cinquantaine de comptes. Il y a de fortes chances à ce que ma prochaine configuration utilise Rspamd.

zone tuto · 19 janvier 2024 à 19 h 29 min

Merci pour le tutoriel je ne pensais pas que c’était aussi facile à mettre en place

Laisser un commentaire

Emplacement de l’avatar

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