1. Installation et configuration de SpamAssassin

SpamAssassin est un utilitaire de filtrage spams. Il permet de détecter automatiquement des messages considérés comme spams en ajoutant un en-tête X-Spam-Flag: YES, ce qui permet de faire des règles de tri facilement dans les clients mail comme Thunderbird. SpamAssassin peut apprendre à détecter les spams d’après vos dossiers d’indésirables.

Pré-requis

  • Un serveur mail Postfix fonctionnel.

1.1. Installation

On commence par installer spamassassin.

# apt install spamassassin

Cela va installer toutes les dépendances nécessaires, notamment spamc, un client qui permet de communiquer avec le démon spamd pour lequel il faut créer un utilisateur système.

# adduser --disabled-login --home /var/spamd spamd

Dans le fichier /etc/default/spamassassin, passer CRON à 1, cela indiquera à SpamAssassin de mettre à jour les règles chaque semaine.

CRON=1

La configuration de SpamAssassin se fait dans le fichier /etc/spamassassin/local.cf. La configuration par défaut convient parfaitement. Il faut cependant que spamassassin se lance automatiquement à chaque démarrage du serveur.

# systemctl enable spamassassin

Il faut indiquer à Postfix qu’on utilise SpamAssassin en modifiant /etc/postfix/master.cf. On cherche la ligne :

smtp      inet  n       -       -       -       -       smtpd

et on ajoute juste en dessous `` -o content_filter=spamassassin`` de manière à obtenir :

smtp      inet  n       -       -       -       -       smtpd
 -o content_filter=spamassassin

À la fin de ce même fichier, il faut ajouter les lignes :

spamassassin unix -     n       n       -       -       pipe
 user=spamd argv=/usr/bin/spamc -f -e /usr/sbin/sendmail -oi -f ${sender} ${recipient}

On (re)démarre les services :

# systemctl start spamassassin
# postfix reload

Vérifier que Postfix fonctionne bien en vous envoyant des mails ou en vérifiant les logs. Si c’est bon, on peut s’envoyer un mail de test pour voir si SpamAssassin fonctionne bien. Envoyez-vous un mail avec en corps de mail :

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

Cette châine de charactères appelée GTUBE, Generic Test for Unsolicited Bulk Email (Test générique pour les mails en masse non sollicités). Elle est conçue pour tester SpamAssassin qui doit la reconnaître comme spam.

Dans la boîte de réception, le mail devrait apparaître comme suit :

------------------ Début de Rapport SpamAssassin ---------------------
Ce message est probablement du SPAM (message non sollicité envoyé en
masse, publicité, escroquerie...).

Cette notice a été ajoutée par le système d'analyse "SpamAssassin" sur
votre serveur de courrier "votredomaine.fr", pour vous
aider à identifier ce type de messages.

Le système SpamAssassin ajoute un en-tête "X-Spam-Flag: YES" aux
messages qu'il considère comme étant probablement du Spam.
Vous pouvez si vous le souhaitez utiliser cette caractéristique
pour régler un filtre dans votre logiciel de lecture de courrier,
afin de détruire ou de classer à part ce type de message.

Si ce robot a classifié incorrectement un message qui vous était
destiné, ou pour toute question, veuillez contacter l'administrateur
du système par e-mail à the administrator of that system.

…suivi des détails de l’analyse. Si c’est le cas, l’installation est réussie !

1.2. Apprentissage

On peut apprendre à SpamAssassin à reconnaître les spams. Pour cela, toutes les semaines par exemple, on lui donne des mails en lui indiquant que ce sont des spams, et on fait de même pour les mails non-spam (ham).

On va dans le dossier d’un de nos comptes mails (en général dans /var/vmail et on exécute les commandes :

sa-learn --showdots --spam .Junk/cur/*
sa-learn --showdots --ham cur/*

Cela suppose que vous avez déjà mis quelques mails indésirables dans le dossier Junk de votre boîte mail (Thunderbird appelle automatiquement le dossier d’indésirables Junk), et que le courrier entrant ne contient pas de mails indésirables.

Voilà, SpamAssassin a appris comment reconnaître vos mails et vos spams. Au bout de quelques mails (une centaine de spams analysés), SpamAssassin devrait reconnaître tout seul petit à petit tous vos spams ! Il peut être utile de créer une tâche dans cron qui exécuterait ces deux commandes à un intervalle de temps régulier.