~rom1v/blog { un blog libre }

Filtrer les spams sur un serveur mail (SpamAssassin)

Pour continuer ma série d’articles sur l’auto-hébergement de ses mails, je vais présenter l’installation de SpamAssassin.

Pour mon serveur mail (et plus généralement pour les outils que j’utilise), j’essaie de mettre en place uniquement ce dont j’ai besoin. Et jusqu’ici, je n’avais pas l’utilité d’un anti-spams, ne recevant aucun courrier indésirable. Mais depuis peu, j’en reçois un de temps en temps… C’est donc l’occasion de m’y mettre.

Installation et configuration

Il existe plusieurs méthodes, j’ai choisi la plus simple : c’est procmail qui fournit les mails à SpamAssassin.

Il faut tout d’abord installer et configurer procmail, puis installer le paquet spamassassin :

sudo apt-get install spamassassin

Ensuite, rajouter dans ~/.procmailrc la règle suivante (copiée de doc) :

# Pipe the mail through spamassassin (replace 'spamassassin' with 'spamc'
# if you use the spamc/spamd combination)
#
# The condition line ensures that only messages smaller than 250 kB
# (250 * 1024 = 256000 bytes) are processed by SpamAssassin. Most spam
# isn't bigger than a few k and working with big messages can bring
# SpamAssassin to its knees.
#
# The lock file ensures that only 1 spamassassin invocation happens
# at 1 time, to keep the load down.
#
:0fw: spamassassin.lock
* < 256000
| spamassassin

Enfin, éditer /etc/spamassassin/local.cf.

Pour uniquement ajouter les en-têtes de spam (ce qui est suffisant pour filtrer), il faut changer la valeur de report_safe :

report_safe 0

Pour ajouter un tag dans le sujet d’un mail considéré comme un spam :

rewrite_header Subject *****SPAM*****

Il est également possible de configurer le score requis pour qu’un mail soit considéré comme un spam. Plus cette valeur est faible, plus le filtre est agressif. La valeur par défaut (5.0) est un peu faible, je vous conseille d’augmenter un peu si vous voulez limiter les faux-positifs :

required_score 6.0

Rajouter éventuellement les lignes suivantes :

# Langues attendues (les autres auront un score plus élevé)
ok_languages fr

# Rapports en français
lang fr

Pour ajouter un expéditeur en liste blanche, rajouter :

whitelist_from any@mail.com

Test

Pour tester, le plus simple est de mettre un filtre très sévère, par exemple avec un score négatif :

required_score -2

En m’envoyant un mail à moi-même qui contient comme sujet test, je constate à la réception que les en-têtes ont été modifiés :

Subject: *****SPAM***** test
Date: Thu, 25 Mar 2010 21:19:52 +0100
Message-Id: <1269548392.9798.9.camel@rom-laptop>
X-Spam-Flag: YES
X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on rom-eeebox
X-Spam-Level: ***
X-Spam-Status: Yes, score=3.9 required=-2.0 tests=ALL_TRUSTED,

Le mail a bien été détecté comme un spam. Ça fonctionne.

Filtrage

Maintenant que les spams sont détectés, il faut les traiter (les déplacer dans un dossier prévu à cet effet).

Il suffit pour cela de créer un dossier sur le serveur :

maildirmake.dovecot ~/Maildir/.Spams

et d’ajouter la règle suivante dans ~/.procmailrc (plus d’infos) :

:0
* ^X-Spam-Status: Yes
.Spams/

Conclusion

Les spams auront maintenant un peu plus de mal à se glisser dans ma boîte mail.

La configuration présentée ici est vraiment minimale. Selon son efficacité il faudra peut-être l’affiner.

Voir aussi

Mes précédents billets sur l’auto-hébergement des mails :

Commentaires

[…] This post was mentioned on Twitter by Planet-Libre and ubuntufr, Jérôme Tux Ubuntero. Jérôme Tux Ubuntero said: RT @planetlibre: ®om : Filtrer les spams sur un serveur mail (SpamAssassin): Pour continuer ma série d’articles sur l’auto-héberge… http://bit.ly/ajJUCN […]

Salut,

2/3 trucs qui peuvent intéresser/compléter :

http://michauko.org/blog/tag/spamassassin/

http://michauko.org/blog/tag/postfix/

C’est du Debian, ce qui ne doit rien changer pour un ubuntu server

bye

Tu as aussi Dspam. Une des fonctionnalités qui font que je l’utilise c’est qu’il s’interface bien avec dovecot (serveur imap) il y a un plugin qui permet d’avoir un dossier spam et tout ce qui est mis dedans est rapporté comme spam à Dspam.

phil

Merci pour ce nouvel article Rom ! Je suis très tenté de m’inspirer sur ce que tu as mis en oeuvre avec procmail d’une part et spamassin/procmail de l’autre.

On voit tout de même que l’acteur central de cette organisation est procmail et si j’hésite, c’est parce que je sais que je pourrai affiner au fil de l’eau mes règles procmail sur le serveur mais qu’en sera-t-il si je fourni une boîte mail à quelqu’un de ma famille par exemple ? Existe-t-il un plugin roundcube pour piloter un peu procmail ou suis-je obliger de me tourner vers Sieve pour permettre ce genre de chose ? Sieve me semble plus compliqué : peut-il quand même être interphasé simplement avec spamassassin ?

(Je sais que tu as justement choisi procmail mais je suppose que tu as déjà lu pas mal de doc sur la question ^^).

Merci pour tes contributions !

®om

Je ne connais que procmail, je n’ai pas essayé sieve, et je suis en attente de retours d’expériences (notamment pour la configuration des règles de filtrage sur le serveur à partir d’un client mail).

Donc n’hésitez pas à essayer et à blogger :-)

[…] termine par un filtre à spam coté serveur : - soit le classique Spamassassin, - soit Maia Mailguard, qui propose une interface […]

[…] vous pouvez trouver des fonctionnalités à mettre en place (un webmail tel que RoundCube, un anti-spam, le tri des mails sur le serveur, une authentification […]

Les commentaires sont fermés.