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 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 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.
# 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ô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.
$ 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.
4 commentaires
Julian · 27 novembre 2020 à 14 h 28 min
Hello,
Pourquoi ne pas plutôt utiliser postscreen ?
Pour info, mon setup actuel est le suivant :
postscreen_access_list = permit_mynetworks, cidr:/etc/postfix/postscreen_access.cidr
postscreen_blacklist_action = drop
postscreen_dnsbl_sites =
zen.spamhaus.org
postscreen_dnsbl_threshold = 3
postscreen_dnsbl_action = drop
postscreen_greet_banner = Merci de patienter
postscreen_greet_action = enforce
Je vais tester, conjointement, ton setup en plus du mien.
kikinovak · 27 novembre 2020 à 17 h 33 min
Différents chemins mènent à Saint-Bauzille-de-Putois. :o)
H · 12 décembre 2020 à 23 h 12 min
Bonjour,
Merci pour la conf mais ça ne fonctionne pas terrible chez moi , je recois toujours des spams, j’ai fais quelques modifs et voici ma conf qui à l’air un peu mieux :
smtpd_recipient_restrictions=permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination,
reject_invalid_hostname,
reject_non_fqdn_sender,
reject_unknown_recipient_domain,
reject_unauth_pipelining,
reject_rhsbl_helo dbl.spamhaus.org,
reject_rhsbl_reverse_client dbl.spamhaus.org,
reject_rhsbl_sender dbl.spamhaus.org,
reject_rbl_client b.barracudacentral.org,
reject_rbl_client bl.spamcop.net,
reject_rbl_client blackholes.easynet.nl,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dnsbl-1.uceprotect.net,
reject_rbl_client dnsbl.sorbs.net,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client multihop.dsbl.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client proxies.blackholes.wirehub.net,
reject_rbl_client relays.ordb.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client zen.spamhaus.org
Julian · 25 janvier 2021 à 10 h 40 min
H,
Cette conf n’est pas forcément meilleurs, car tu fais faire à ton mail un traitement très lourd. Dans l’absolu, il ne faudrait pas dépasser les 3 ou 4 rbl pour des checks, car le jour où tu commences à recevoir des mails en grand nombre, tu vas pédaler dans la semoule.
Pour connaître la raison du spam, il faut déjà bien identifier celui-ci, car il y a plusieurs types de spam, et les RBL, même si ils font du très bon boulot, ne font pas non plus des miracles à tout te supprimer, un antispam bien configuré est indispensable. Et pour bien le paramétrer, il faut bien identifier ce qui passe encore.
Les commentaires sont fermés.