Dans 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.
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. 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 commandeHELO
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ôteHELO
ouEHLO
est blacklisté.reject_rhsbl_reverse_client
rejette un e-mail lorsque le nom d’hôte inversé (enregistrementPTR
) d’un client est blacklisté.reject_rhsbl_sender
rejette un e-mail lorsque le domaineMAIL FROM
est blacklisté.reject_rbl_client
rejette un e-mail lorsque l’adresse IP du client est blacklistée.
Certains 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 :
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.
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