J’ai déjà depuis plusieurs semaines un serveur avec Exim 4, Dovecot (IMAP) et SpamAssassin.
(le logo Exim est de Jenniger Greenley, celui de SpamAssassin est de Christian Rauh)
Mais la configuration n’était pas terminée.
Si SpamAssassin tournait bien et positionnait une ligne avec son score dans l’entête du mail, Exim ne déplaçait pas encore les mails indiqués comme Spam dans un dossier séparé.
Je vais ajouter cette fonctionnalité.
Je me base sur l’article Installing and configuring Exim 4 on Debian de Justin Koivisto.
Si vous n’avez pas encore installé Exim4 ou SpamAssassin, j’avais fait un billet à ce sujet il y a deux mois :
Configuration antivirus et antispam avec Exim4
J’étais en fait proche du but !
Pour qu’Exim déplace automatiquement les mails détectés comme spam, il faut ajouter un fichier contenant les règles de filtrages et de déplacement. Ce fichier est propre à chaque user !
Je remarque que SquirrelMail, que nous avons aussi installé, a un dossier Junk. Ce dossier correspond à un sous-dossier .Junk dans ma boîte mails.
Thunderbird, quand on active la détection des indésirables, a aussi un dossier « Indésirable ». Dans la traduction anglaise, ce dossier s’appelle Junk. C’est bien le même dossier réellement dans toutes les langues : le sous-dossier .Junk également.

Ce n’est important que si vous accéder à vos mails en IMAP. Dans ce cas, le dossier Indésirable que vous voyez à l’écran est bien le sous-dossier .Junk qui se trouve sur le serveur.
Si vous accédez à vos mails en POP3, alors ce dossier Indésirable est purement local sur votre disque dur.
Je désire donc qu’Exim déplace automatiquement les mails indiqués comme spam par SpamAssassin dans ce sous-dossier .Junk.
Pour ce faire, je crée un fichier /home/blog/.forward (si l’utilisateur s’appelle « blog ») commençant par « # Exim filter » :
# Exim filter
if $h_X-Spam-Status: CONTAINS "Yes"
or
$h_X-Spam-Flag: CONTAINS "Yes"
then
save $home/Maildir/.Junk/
finish
endif
Cela fonctionne.
Quand SpamAssassin donne un score supérieur à 5 à son analyse anti-spam, il positionne « Yes » dans l’entête du mail et Exim le déplace dans le dossier .Junk.
Attention, il faut créer ce fichier .forward pour tous les utilisateurs.
Le plus simple est de le mettre dans /etc/skel pour qu’il soit repris automatiquement à la création d’un nouvel utilisateur.
Il est intéressant également de mettre dans /etc/skel une boîte Maildir pour ne pas devoir la recréer manuellement à chaque nouvel user.
Je crée donc un fichier avec les règles dans /etc/skel :
vi /etc/skel/.forward
# Exim filter
if $h_X-Spam-Status: CONTAINS "Yes"
or
$h_X-Spam-Flag: CONTAINS "Yes"
then
save $home/Maildir/.Junk/
finish
endif
Pour créer une boîte au format Maildir dans /etc/skel :
maildirmake /etc/skel/Maildir
Je vérifie :
ks12345:/etc/skel# ls -la total 40 drwxr-xr-x 3 root root 4096 2007-10-29 06:24 . drwxr-xr-x 82 root root 8192 2007-10-29 05:34 .. -rw-r--r-- 1 root root 266 2004-11-22 17:05 .alias -rw-r--r-- 1 root root 220 2006-12-11 22:20 .bash_logout -rw-r--r-- 1 root root 414 2006-12-11 22:20 .bash_profile -rw-r--r-- 1 root root 2227 2006-12-11 22:20 .bashrc -rw-r--r-- 1 root root 375 2004-11-22 17:05 .cshrc -rw-r--r-- 1 root root 131 2007-10-29 06:21 .forward drwx------ 5 root root 4096 2007-10-29 06:24 Maildir
Lors de la création d’un nouvel utilisateur, sa boîte Maildir et son fichier .forward seront donc automatiquement créés.
Voilà pour le déplacement des spams détectés par SpamAssassin.
Il me reste un problème !
Je trouve le score de détection de SpamAssassin assez faible. ![]()
Il faut 5 minimum pour qu’un mail soit rejeté en Spam. C’est rarement le cas.
Je dois donc chercher comment améliorer la détection de SpamAssassin…
Ce sera pour un autre billet ![]()




















