Voici une question que je me posais depuis longtemps : est il possible de paramétrer spamassassin efficacement sur un petit serveur de mail n’excédant pas 100 mails par jour ?
La réponse est oui. Spamassassin est un outil très puissant mais qui nécessite quelque paramétrages supplémentaires que ceux de l’installation type.
Dans cet article, je vais présenter l’installation de spamassassin par l’intermédiaire du MTA postfix. Je présenterai dans une deuxième partie les moyens d’optimiser spamassassin pour une détection efficace du spam. Enfin dans la troisième partie, je présenterai une petite technique maison pour permettre à spamassassin d’optimiser son filtre de détection Bayesien.
Installation de spamassassin
Installez spamassassin avec votre gestionnaire de paquets préféré. Dans un terminal, par exemple :
apt-get install -qq spamassassin spamc
Quelques opérations système sont nécessaire pour installer spamassassin avec postfix (en root) :
groupadd -g 5001 spamd useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd mkdir /var/lib/spamassassin chown spamd:spamd /var/lib/spamassassin
Pour une installation avec postfix, il vous faudra modifier la configuration comme suit :
Ajoutez les lignes suivantes à la fin de votre fichier /etc/postfix/master.cf
spamassassin unix - n n - - pipe
user=spamd argv=/usr/bin/spamc -f -e
/usr/sbin/sendmail -oi -f ${sender} ${recipient}
Brève explication : pour tout mail recu depuis une interface réseau, postfix va router le mail vers l’application /usr/bin/spamc lancé avec l’id utilisateur spamd puis renvoyer le mail avec les flags de spamassasin dans les en-têtes (spam ou non, note, règles utilisées pour la détection…).
Puisque la commande sendmail utilise le démon local de postfix, le mail renvoyé sera délivré directement à l’utilisateur sans repasser par spamassassin (le cas échéant, le mail tournerait en boucle entre postfix et spamassassin).
Optimisation de spamassassin
Vos emails doivent maintenant contenir des en têtes du type “X-Spam-Status:” ou encore “X-Spam-Checker-Version:”. Si tel n’est pas le cas, revoyez la partie 1, essayez de redémarrer spamassassin, regardez ce qui ne va pas dans vos logs de mails (/var/log/mail.log), googlez votre problème, ou bien arrêtez l’admin sys pour aller élever des chèvres dans le Larzac.
Passons maintenant aux améliorations qui vont permettre à votre spamassassin de détecter efficacement les spams :
Modification du fichier /etc/spamassassin/local.cf
Ce fichier est le fichier permettant de changer la configuration de spamassassin. Pour rappel, spamassassin fonctionne comme un système expert. Il possède une base de connaissance qui lui permet de donner des points ou d’en soustraire en fonction de si une règle s’applique (exemple : -2 si le mail vient d’un hote connu, +2 si le mail contient le mot viagra). Si le score dépasse un certain seuil, le mail est considéré comme un spam. Voilà les paramètres intéressants (parmi tant d’autres) dans le fichier de configuration de spamassassin :
Required_score 2.0 whitelist_from *@mydomain.tld
Mise à jour de la base de règles
La base de règles du système expert peut etre mise à jour très facilement. C’est réellement ce qui permet à spamassassin d’être tenu à jour des nouvelles règles de détection du spam :
/usr/bin/sa-update
wget http://spamassassin.apache.org/updates/GPG.KEY
gpg --import GPG.KEY
Mise à jour du filtre bayesien
Voici maintenant l’heure de la partie apprentissage automatique de spamassassin. Pour ca, voici une méthode basée sur le concept de honeypot que j’ai déployé récemment et qui s’avère très efficace :
Créez une fausse adresse email (spam_hole@yourdomain.tld par exemple) et routez tous les mails vers un chemin spécial (grace à procmail par exemple). Disons /var/spamassassin/spamhole.
Ensuite, inscrivez cette adresse un peu partout sur Internet (sites de vente en ligne, sites auxquels vous ne feriez jamais confiance, sites aux images un peu osées
, bref les endroits ou vous ne mettriez jamais votre adresse email en temps normal). L’idée est de faire venir un maximum de spam dans une boite pour permettre à spamassassin d’entrainer le filtre bayesien.
Une fois de plus, vous pouvez ajouter dans un script cron la commande :
/usr/bin/sa-learn --spam --mbox /var/spamassassin/spamhole
qui permettra à spamassassin d’apprendre toutes les nuits quels sont les derniers spams à la mode.
Conclusion
Avec tous ces petits réglages, spamassassin est aussi performant que le filtre antispam de gmail, en tous les cas dans mon cas avec une moyenne de 200 spams par jour.

Bonjour
Est-il possible de configurer spamassassin pour rajouter l’entête [SPAM] devant l’objet des mails qui ont un score inférieur à 10 et de supprimer systématiquement tous les mails qui ont un score supérieur ?
Bon article. Merci
Salut,
J’aimerais installer SpamAssassin sur un dédier OVH, sais tu si la dernière version s’installe bien comme celle ci ?
Merci
spamassassin est à double tranchant, très utile sans aucun doute, mais les spammeurs peuvent aussi apprendre à le contourner et s’en servir pour atteindre leur objectif de déliverabilité des courriels.
En tout cas merci pour votre article fort intéressant.
Léa
je vais vraiment me plaire sur ce blog ! que du bon !
c’est la réponse à des questions sur ma vieille EDGY
et des problèmes récurrents de mail …
merci pour cet article !
Sebastien