Quelque part entre votre ESP et la boîte de réception, un filtre vient d’attribuer un chiffre à votre e-mail. Si ce chiffre vient de SpamAssassin et atteint 5,0, votre message dort en ce moment même dans un dossier spam. Chaque test de spam Unspam fait passer votre e-mail par SpamAssassin, entre autres contrôles, et les données rassurent : 89 % des messages testés se situent dans la plage sûre de 0 à 3,0. Les 11 % restants ignorent en général quelle règle les a brûlés.
Mon objectif ici est de décoder ce score correctement : de quoi le chiffre est fait, les vraies règles avec leurs vraies valeurs en points, là où le score décide réellement de votre sort (et là où Gmail l’ignore discrètement), et les correctifs qui font redescendre un score élevé.
Qu’est-ce que SpamAssassin ?
Apache SpamAssassin est le filtre antispam open source le plus déployé au monde. Ce n’est pas un projet à l’abandon, quoi que suggèrent les numéros de version des guides plus anciens : la version actuelle est la 4.0.2 (août 2025), la branche 4.0 a apporté la prise en charge complète d’Unicode pour le courrier international ainsi qu’un plugin DMARC dédié, et le projet livre des règles mises à jour en continu via son canal sa-update.
On croise SpamAssassin dans plus d’endroits qu’on ne l’imagine :
- L’hébergement mutualisé. La fonction « Spam Filters » de cPanel est, selon les mots de cPanel, propulsée par Apache SpamAssassin, avec un seuil par défaut de 5. Cela couvre des millions de messageries de petites entreprises.
- La messagerie d’entreprise et auto-hébergée. SpamAssassin tourne au cœur des passerelles bâties sur Exim, Postfix, MailScanner, MIMEDefang et Amavis.
- Les chaînes de test. Parce qu’il est ouvert et déterministe, c’est le moteur de scoring standard des outils de test avant envoi, dont le contrôle SpamAssassin intégré à l’audit de délivrabilité d’Unspam.
Une réserve honnête que les guides concurrents périmés passent sous silence : Gmail, Outlook et Yahoo n’utilisent pas SpamAssassin. Google filtre avec ses propres modèles d’apprentissage automatique (des classifieurs TensorFlow, puis le modèle RETVec), et Microsoft décrit son filtrage comme propriétaire. Votre score SpamAssassin compte directement pour le monde des cPanel et des passerelles, et comme approximation des signaux de contenu que pèsent les modèles des grands fournisseurs. Un score propre ne garantit pas la boîte de réception de Gmail ; un score en échec annonce à coup sûr des ennuis partout.
Comment le score fonctionne vraiment
Sous le capot, aucun mystère : de l’arithmétique. Le filtre soumet un message à des centaines de tests, chaque règle déclenchée apporte sa valeur en points (positive ou négative), et le total est comparé à un seuil appelé required_score :
- Seuil par défaut : 5,0. Un message qui atteint 5,0 ou plus est marqué comme spam ; 4,9 passe, 5,0 échoue.
- Le seuil est configurable. La documentation officielle qualifie 5,0 de « plutôt agressif », adapté à un utilisateur unique, et suggère aux fournisseurs de messagerie un réglage plus prudent, à 8,0 ou 10,0. Les hébergeurs peuvent aussi durcir le seuil, et c’est pourquoi vivre à 4,5 n’a rien de confortable.
- Une même règle peut compter différemment selon l’installation. Chaque règle porte jusqu’à quatre valeurs en points, choisies selon que le moteur bayésien et les tests réseau sont activés sur le serveur. Les valeurs ci-dessous correspondent à une installation complète (Bayes et tests réseau), celle que font tourner la plupart des filtres en production et le test d’Unspam.
- Les scores dérivent légèrement avec le temps. Les serveurs en production récupèrent des règles réévaluées via sa-update : traitez tout chiffre publié comme la valeur par défaut livrée, pas comme une constante de la nature.
Voici à quoi ressemble un vrai score quand on fait la somme :

Trois règles ont fait tous les dégâts, tandis que les deux authentifications réussies ont racheté à elles deux un dixième de point à peine. Intégrez cette asymétrie et la moitié du comportement de SpamAssassin cesse de surprendre.
Réussir l’authentification vous rapporte une erreur d’arrondi. Échouer aux contrôles de contenu vous coûte des points entiers. L’authentification est un plancher, pas un bonus.
Les règles, décodées avec leurs vraies valeurs en points
Voici les scores par défaut réels du jeu de règles officiel (valeurs pour une installation complète, Bayes et réseau) :
| Règle | Ce qu’elle signifie | Points |
|---|---|---|
BAYES_99 | Moteur bayésien : probabilité de spam de 99 à 100 % | +3,5 |
BAYES_999 | Bayes : de 99,9 à 100 %, cumulé par-dessus BAYES_99 | +0,2 |
RCVD_IN_PBL | L’IP d’envoi figure dans la PBL de Spamhaus (elle ne devrait pas envoyer en direct) | +3,335 |
URIBL_BLACK | Un lien du corps du message est sur la blacklist URIBL | +1,7 |
HTML_IMAGE_ONLY_24 | HTML chargé d’images avec presque pas de texte | +1,618 |
PYZOR_CHECK | Le corps correspond à une empreinte de spam connue (Pyzor) | +1,392 |
MISSING_DATE | Le message n’a pas d’en-tête Date | +1,36 |
DCC_CHECK | Signalé comme envoi en masse par le réseau DCC | +1,1 |
MISSING_HEADERS | Des en-têtes de base manquent, comme To | +1,021 |
RAZOR2_CHECK | Le corps correspond à une empreinte de spam connue (Razor) | +0,922 |
DKIM_VALID | Le message porte une signature DKIM valide | -0,1 |
SPF_PASS | Le contrôle SPF a réussi | -0,001 |
BAYES_00 | Moteur bayésien : probabilité de spam de 0 à 1 % | -1,9 |
GTUBE | La chaîne de test standard qui vérifie qu’un filtre fonctionne | +1000 |
Quelques constats sautent aux yeux dès qu’on regarde ce tableau :
- Bayes domine. Un seul déclenchement de BAYES_99 vaut 3,5 points, soit à lui seul 70 % du chemin vers le seuil de spam.
- Les règles de réputation frappent fort. Une inscription dans la PBL de Spamhaus (+3,335) plus un lien blacklisté (+1,7), et le score est déjà en échec.
- La plomberie cassée coûte cher. Des en-têtes Date ou To absents trahissent d’habitude un script d’envoi maison ; ils ajoutent des points parce que le message a l’air généré par une machine, avant même qu’un humain n’en lise un mot.
- Des règles négatives existent. Un courrier clairement légitime peut descendre sous zéro. Un score négatif n’est pas une erreur : c’est un compliment.
Le moteur bayésien, ou pourquoi « évitez le mot gratuit » est un conseil dépassé
Les règles BAYES viennent d’un classifieur probabiliste entraîné (la documentation de SpamAssassin le décrit comme de style bayésien, avec un combinateur du khi deux). Il évalue statistiquement le message entier par rapport à ce qu’il a appris de vrais spams et de vrai ham, et il s’adapte à mesure que les administrateurs l’entraînent avec sa-learn.
C’est pourquoi le conseil classique des listes à puces, qui consiste à bannir des mots isolés, passe à côté du sujet. Aucun mot ne porte à lui seul une pénalité fixe : le moteur juge le message entier en contexte. Une newsletter de cardiologie peut écrire « médicaments pour le cœur » sans risque, alors qu’un message qui rassemble toute l’empreinte statistique du spam (offre insistante, corps composé uniquement d’images, liens bourrés de traceurs, aucune partie en texte brut) récolte un BAYES_99 même s’il évite tous les mots déclencheurs célèbres. Les mots déclencheurs comptent encore, comme signal faible et comme drapeau rouge pour un humain, et c’est pourquoi nous maintenons un guide des mots déclencheurs de spam et un Test des mots spam gratuit, mais le moteur derrière le score juge des motifs, pas du vocabulaire.
Les tests réseau : les points que vous gagnez avant d’écrire un mot
Avec les tests réseau activés, SpamAssassin interroge internet à votre sujet :
- Les blacklists DNS. L’IP d’envoi est confrontée à Spamhaus Zen (ses composants SBL, CSS, XBL et PBL portent chacun leur propre règle et leurs propres points) et à SpamCop, entre autres.
- Les blacklists d’URI. Chaque domaine vers lequel vous pointez est confronté à des listes comme URIBL et Spamhaus DBL. Vous héritez de la réputation de chaque lien de votre pied de page.
- Les empreintes approximatives. Razor, Pyzor et DCC comparent le corps de votre message à des bases collaboratives de spams en circulation. Un contenu envoyé en masse que d’autres ont signalé ajoute des points, quelle que soit sa qualité rédactionnelle.
En pratique, donc, une partie de votre score SpamAssassin s’est jouée sur votre infrastructure et votre hygiène de liste bien avant que vous n’écriviez une ligne. Contrôlez l’adresse IP et le domaine d’envoi avant d’accuser le contenu : les tests gratuits Blacklist IP et Blacklist domaine couvrent les mêmes zones que celles qui coûtent des points ici.
Comment lire votre score : l’en-tête X-Spam-Status
Sur tout serveur qui fait tourner SpamAssassin, le verdict est inscrit dans les en-têtes du message, et apprendre à le lire transforme un score mystérieux en liste de tâches :

X-Spam-Statuscommence par le verdict (Yes ou No), puisscore=(la somme),required=(le seuil de ce serveur) ettests=(chaque règle déclenchée, c’est-à-dire la partie sur laquelle vous agissez vraiment).X-Spam-Leveldessine le score sous forme d’une rangée d’étoiles, une par point entier, pour que des règles de filtrage puissent réagir à la gravité.X-Spam-Checker-Versionvous indique quelle version de SpamAssassin et quel jeu de règles vous ont jugé.
Entre la liste tests= qui nomme les règles et le tableau ci-dessus qui les tarife, vous pouvez reconstituer exactement pourquoi un message a échoué, ligne par ligne. Cette reconstitution est précisément ce que la section SpamAssassin d’un rapport de délivrabilité Unspam fait pour vous automatiquement.
Qu’est-ce qu’un bon score SpamAssassin ?
Les paliers sont simples, et méritent d’être mémorisés en même temps que les autres seuils de délivrabilité :

- En dessous de 3,0 : sûr. Une marge confortable sous tout seuil raisonnable. C’est le palier que 89 % des e-mails testés avec Unspam atteignent déjà : une cible réaliste, pas du perfectionnisme.
- De 3,0 à 4,9 : ça passe, mais c’est exposé. À un déclenchement de Bayes ou à une nouvelle inscription sur une blacklist de l’échec, et déjà en échec chez les hébergeurs qui ont durci le seuil par défaut.
- 5,0 et au-delà : marqué comme spam sur une installation par défaut. À deux chiffres, certaines configurations suppriment discrètement le message au lieu de le livrer dans les spams (les recommandations officielles réservent la suppression automatique à 15,0 et plus).
Un mot sur le sens de lecture, parce que des guides embrouillés créent une vraie confusion : avec SpamAssassin, plus c’est bas, mieux c’est. Si un outil de test vous montre un score sur 100 où plus c’est haut, mieux c’est, il s’agit d’un score de délivrabilité composite, une tout autre bête, que nous traitons dans qu’est-ce qu’un score de spam.
Comment vérifier votre score SpamAssassin
Vous avez trois voies, et elles diffèrent surtout par la part du travail que vous voulez faire vous-même :
- Lancez un test de spam avant envoi. Le test de spam gratuit d’Unspam évalue votre message exact avec SpamAssassin et liste chaque règle déclenchée à côté des contrôles SPF, DKIM, DMARC, blacklists et HTML, en 30 secondes environ, sans inscription.
- Lisez une copie reçue. Si le message est déjà passé par un serveur qui fait tourner SpamAssassin, le verdict se trouve dans l’en-tête
X-Spam-Statusdécrit plus haut. Faites-vous suivre une copie depuis la messagerie concernée et lisez la listetests=. - Faites tourner SpamAssassin vous-même. Sur votre propre serveur, passez-lui un message brut :
spamassassin -t < message.emlaffiche le score et un rapport règle par règle. Gardez les règles à jour avecsa-update, entraînez le moteur bayésien avecsa-learn --spametsa-learn --ham, et vérifiez que la chaîne fonctionne en envoyant la chaîne de test GTUBE, conçue pour marquer 1000 points et finir dans les spams à chaque fois.
La première option est la seule qui évalue votre message avant que votre liste ne le voie, et c’est tout l’intérêt : un score découvert dans un rapport de bounce est un score découvert trop tard.
Comment faire baisser un score SpamAssassin élevé
Traitez la liste de haut en bas. Je l’ai triée par points récupérés à l’heure d’effort, et les premières entrées sont presque toujours l’origine réelle des scores élevés.
- Corrigez ce que les règles nomment littéralement. Lisez la liste
tests=de votre rapport. MISSING_DATE et MISSING_HEADERS signifient que votre script d’envoi ou la configuration de votre ESP produit des messages malformés : réparez la plomberie et ces points disparaissent complètement. - Soldez vos règles de réputation. Si des règles RCVD_IN_ ou URIBL_ se sont déclenchées, aucune retouche de texte ne vous sauvera. Faites d’abord délister l’adresse IP ou le domaine (notre guide de retrait des blacklists couvre les principales listes), puis auditez chaque domaine lié, y compris les raccourcisseurs de liens et les domaines de tracking que vous ne contrôlez pas.
- Authentifiez tout, puis arrêtez d’en attendre du crédit. Publiez et alignez SPF, DKIM et DMARC (le guide complet) ; vérifiez avec les checkers SPF, DKIM et DMARC. Cela supprime les règles de pénalité et satisfait le plugin DMARC de SpamAssassin 4.0, mais souvenez-vous de l’asymétrie : cela rapporte des fractions, cela évite des points entiers.
- Rééquilibrez le contenu. Livrez toujours une partie en texte brut à côté du HTML, gardez un vrai rapport texte/images (les règles HTML_IMAGE_ONLY existent parce qu’un message tout en images est une esquive classique du spam), et coupez les schémas qui font sonner les filtres.
- Respectez le moteur bayésien. On ne trompe pas un classifieur statistique avec des synonymes. Envoyez du contenu avec lequel les gens interagissent vraiment, à des gens qui l’ont demandé, et les règles Bayes deviennent vos alliées : BAYES_00 vous rend 1,9 point.
- Testez avant chaque envoi. Les scores changent avec les mises à jour de règles et le statut des listes : un message qui passait au trimestre dernier peut échouer aujourd’hui. Un test de spam avant envoi le détecte tant que la correction est encore gratuite.
Vérifiez votre score maintenant
Vous n’avez pas besoin de deviner quel palier est le vôtre. Faites passer votre e-mail par le test de spam gratuit d’Unspam : il évalue le message exact avec SpamAssassin, montre chaque règle déclenchée avec sa valeur en points et lance à côté les contrôles SPF, DKIM, DMARC, blacklists et contenu, en 30 secondes environ, sans inscription. Si vous êtes dans les 89 %, vous le saurez. Si vous êtes dans les 11 %, vous saurez enfin pourquoi.