Tux aux hermines
Accueil du site > Les Documentations > Configurer SpamAssassin

Configurer SpamAssassin

Pour se débarrasser d’une plaie.

samedi 26 avril 2003, par Vincent Correze

Au bout de quelques années de présence sur Internet (ou quelques semaines si vous n’êtes pas prudents), on se retrouve sans comprendre bombardé de messages soi-disant publicitaires. Et cela va du « achetez-nous un pingouin en cristal » à « augmentez la taille de votre b.... » voire pire.

Heureusement pour vous, SpamAssassin est là pour vous débarrasser de ce merdier.

Config Initiale

Pour pouvoir utiliser ce programme, il faut et il suffit de disposer d’un client de messagerie. Cependant, le traitement est facilité (accéléré) si l’on dispose d’un MTA local, ce qui va nous permettre d’utiliser la version « démonisée » de SpamAssassin.

Installer SpamAssassin

Sur Mandrake, il suffit de faire urpmi spamassassin-2.44-1mdk ou de l’installer via le Panneau de contrôle de Mandrake. Sur d’autres distributions, utilisez votre outil d’installation favori.

Si vous souhaitez faire l’installation « manuellement », vous pouvez lancer les commandes suivantes :

$ perl -MCPAN -e shell
o conf prerequisites_policy ask
install Mail::SpamAssassin
quit

Comment fonctionne SpamAssassin

SpamAssassin est un programme (en perl) qui fait passer un certain nombre de tests au message. En fonction du résultat de ces tests, il attribue un score au message, chaque test rajoutant des points au score.

Si le score dépasse un certain seuil, le mail est alors considéré comme du Spam. SpamAssassin modifie alors le titre du message (il l’encadre par ***** SPAM *****). De plus, SpamAssassin positionne deux nouveaux en-têtes au message : X-Spam-Status et X-Spam-Level.

Ces deux en-têtes permettent alors de créer des filtres dans votre client mail pour orienter le message (la corbeille est une bonne destination :).

Tous les messages doivent donc passer par SpamAssassin pour être traités, avant d’arriver dans leur dossier définitif.

Configurer

Pour configurer SpamAssassin, il faut éditer le fichier /etc/mail/spamassassin/local.cf. Par défaut, un certain nombre d’options sont prédéfinies. Voici les principales :
- required_hits 5 définit le score au delà duquel les mails sont considérés comme du spam ;
- ok_languages fr en indique les langues que vous acceptez de reçevoir (les autres auront un score plus élevé). Cette ligne n’est pas forcément prédéfinie ;
- lang fr pour avoir les rapports en Français ;
- whitelist_from *@linux-nantes.fr.eu.org Cette ligne (à éditer) permet de ne pas considérer les mails de LNA comme du spam. Les options whitelist_to et blacklist_from permettent respectivement de ne pas considérer comme spam les mails envoyés à l’adresse considérée, et de considérer systématiquement comme spam les mails provenant de l’adresse considérée.

SpamAssassin dispose heureusement d’un système de whitelist automatique, qui va diminuer progressivement le score de certains messages.

Pour fignoler votre configuration, il faut lire le man Mail::SpamAssassin::Conf.

Si vous n’avez qu’un client Mail

Pour ma part, j’utilise KMail, mais la procédure est relativement similaire dans les autres MUA [1].

Il faut ajouter deux filtres pour traiter les messages : l’un pour les envoyer à SpamAssassin, l’autre pour traiter le résultat.

Le premier dira donc :
Si n'importe quel en-tête contient "." alors utiliser le programme de filtre spamassassin.

Il faut décocher la case « Si ce filtre est applicable, ne pas poursuivre ».

Le second dira la chose suivante :
Si l'en-tête X-Spam-Status contient "Yes"; ou si le sujet contient *****SPAM***** , alors mettre dans le dossier Corbeille.

Je vous conseille fortement de déplacer les spams vers la corbeille, car il est possible (et même probable avec un score de 5) que certains mails qui ne sont pas du spam soient détectés comme tels. Si vous les supprimez directement, vous ne pourrez jamais les lire. Si vous les déplacez vers la corbeille ou un autre dossier, vous pourrez toujours aller voir de temps en temps pour vérifier que ce n’est pas le cas.

Je vous conseille aussi de mettre ces deux filtres en bas de la liste de vos filtres de messagerie. Ainsi, tous les messages "pré-filtrés" (par exemple provenant de listes de messagerie que vous dirigez vers un dossier spécifique) ne passeront pas par SpamAssassin : ils n’en ont pas besoin puisqu’ils viennent de correspondants connus. SpamAssassin utilisant quand même une certaine quantité de ressources systèmes, vous risquez autrement de voir votre réception mail durer assez longtemps...

Si vous utilisez un MTA+MDA+MUA...

Dans ce cas, vous avez une solution qui permet d’économiser des ressources systèmes : le couple spamd/spamc. Il s’agit en fait d’un démon (spamd) qui permet de ne lancer qu’une seule instance de SpamAssassin (au lieu de plusieurs dans le cas précédent) et qui se fait envoyer les messages par plusieurs clients spécifiques (spamc). Cela accélère nettement le temps de traitement.

Pour configurer tout ça, il faut que vous ayez un serveur Mail installé. J’utilise personnellement Postfix, mais les autres marchent aussi bien [2].

Ensuite, il faut que vous ayez un MDA. Par défaut sur la plupart des distributions, on dispose de procmail.

Il faut enfin que vous ayez un outil qui aille chercher vos mails sur vos différentes boîtes aux lettres. Fetchmail est le plus connu.

Je vous laisse aller voir les différents liens (en fin d’article) pour configurer ces trois outils là.

Pour configurer SpamAssassin pour marcher avec tout ça, il faut d’abord comprendre comment ça marche :
- Fetchmail va chercher vos mails chez votre ISP ;
- Il les délivre à Postfix ;
- Postfix les traite et les délivre à procmail ;
- Procmail les met dans votre boite aux lettres (par défaut /var/mail/$LOGNAME).
- KMail va les chercher dans votre boite et les redistribue dans vos sous-dossiers en fonction de ses filtres.

C’est procmail qui va être chargé de la lourde tâche de transférer les mails à SpamAssassin. Pour cela, il faut définir pour l’ensemble du système un fichier /etc/procmailrc.

Voici le fichier que j’utilise :

####################################################
# Run Procmail as user
DROPPRIVS=yes
#
LOGFILE=/var/log/procmail.log
VERBOSE=ON

# Spamassassin

:0fw
* < 256000

       | /usr/bin/spamc -f

       :0e
       {
               EXITCODE=$?
       }
####################################################

Il est nécessaire de bien faire attention à l’indentation pour que procmail fonctionne correctement.

Il faut aussi que votre fichier de log soit en écriture pour le groupe "mail" si vous voulez les voir. Vous pourrez désactiver le log une fois que tout fonctionne (en le mettant en commentaire avec un # devant).

Enfin, il faut vérifier que le démon spamd est bien lancé au démarrage. Sur Mandrake, vous devriez avoir un script /etc/init.d/spamassassin qu’il vous suffit de rendre exécutable.

La ligne < 256000 sert à limiter la taille des messages passés à SpamAssasin, car les spams sont en général de très petite taille et cela évite de consommer trop de ressources.

Une fois tout cela fait, il reste à vérifier que les mails sont bien traités en vous envoyant un mail. En affichant la source du mail, vous pourrez voir si les champs X-Spam-Status et X-Spam-Level sont bien présents. En allant voir le procmail.log, vous pourrez vérifier que tout s’est bien passé.

Reste enfin à mettre un filtre dans KMail pour orienter le spam vers la corbeille, comme ci-dessus.

C’est terminé !

Razor

C’est bien, vous avez maintenant configuré votre outil de lutte antispam. Pour être encore plus précis, vous pouvez aussi installer un outil qui permet de vérifier que le mail reçu n’est pas enregistré dans une base de données de Spam disponibles. C’est l’outil Razor.

Pour ce faire, il suffit d’un petit urpmi perl-Razor-Agent-2.20-2 mdk [3].

Il faut ensuite configurer Razor (je vous renvoie sur leur site).

Redémarrez spamassassin (en root) :

# /etc/init.d/spamassassin reload

Vous aurez ainsi accès à la base Razor.

Augmenter son Karma

Si vous voulez augmenter votre Karma de Netizen, vous pouvez participer au réseau de détection du Spam géré par Razor.

Pour cela, il existe deux solutions :
- Vous configurez vous-même l’envoi à Razor ;
- Vous renvoyez tous les spams à une adresse prédéfinie pour qu’ils soient rajoutés à Razor.

La première solution allant au delà de ce document [4], nous ne verrons que la deuxième : Il suffit de renvoyer tous les spams à l’adresse mon_adresse_at_mon_fai@spamtraps.taint.org (en replaçant la première partie par votre adresse au format webmaster_at_linux-nantes.fr.eu.org). Sur ce serveur, le mail sera traité et rajouté dans razor.

Un point de détail cependant, certains serveurs utilisent les bases de spams en question pour se protéger, et vont jusqu’à générer un Portscan sur votre IP pour vérifier que votre mailer est correctement configuré. Ne vous étonnez donc pas si vous êtes scannés en provenance de la même adresse régulièrement.

Liens

Voici quelques liens pour vous aider à configurer le tout.

Fetchmail
- Le site de Fetchmail
- Config Fetchmail sur Lea

Postfix
- Postfix
- Configurer Postfix
- Un Cours Postfix
- Sécuriser un serveur Postfix

ProcMail
- Procmail
- QuickStart

SpamAssassin
- Le Site

Razor
- Le Site

KMail
- Le Site

Global
- Un article proche, du CLX ;

Conclusion

Et voilà, grâce à ça, vous retrouverez enfin une boîte aux lettres débarrassée des pubs...


Notes

[1] MUA : Mail User Agent : clients de messagerie. Un MDA est un Mail Delivery Agent et un MTA un Mail Transfert Agent. Voir le Jargon Français.

[2] Non, je ne Marchau pas dans le troll ;-))

[3] Ou bien allez voir le site de razor pour l’installation.

[4] Hint : Ca doit passer par spamassassin -r ...

7 Messages de forum

  • > Configurer SpamAssassin 18 mars 2004 16:38, par Patrick CAO HUU THIEN

    bonjour,

    Votre article est tres instructif mais il me semble qu’il y a une erreur dans le fichier .procmailrc (ou alors j’ai pas trop compris procmail :-) :

    la regle :0e ne doit elle pas etre au meme niveau que la precedante ?

    • > Configurer SpamAssassin 18 mars 2004 23:13, par Vincent « Ka Teznik » Correze

      Bonjour,

      Merci pour le compliment ;-)

      Je ne crois pas qu’il y ait une erreur. En effet, c’est Of : Filtrer les mails et :Oe spamc finit bien sinon je renvoie le code d’erreur.

      J’ai ce fichier en /etc/procmailrc depuis longtemps & je n’ai aucun problème.

      A bientôt,

      • > Configurer SpamAssassin 22 juillet 2004 17:00, par Ben

        Je cherche comment configurer le contenu du rapport retourné.

        Est ce qu’il est possible de mettre le contenu du mail dans le rapport ?

        • > Configurer SpamAssassin 11 juin 2007 15:08, par guillaume

          bonjour Ben, j’aimerais savoir si tu as résolu ton problème car je connais les mêmes souci.

  • Configurer SpamAssassin 12 décembre 2006 12:31, par Meow the Catz

    Bonjour,
    Je me demandais s’il y avait possibilité de configurer spamassassin de manière plus subtile, en lui mettant par exemple une liste de mots clés dans l’en-tête / corps du message qui ferait qu’il traiterait un message comme du spam. Car je reçois des mails de spam qui ne sont pas reconnus comme tel pour spamassassin.

    Merci

  • Configurer SpamAssassin 28 février 2007 12:18, par Alex

    Bonjour,

    Trés bonne doc.

    Mais encore une fois je ne trouve pas les info qu’il me faut.

    A savoir, comment déclarer à spamassasin des spams qui a laissée passer alors que c’est du spam.

    Comment lui mettre dans ça base ?

    Comment installer les filtres suplementaire.

    • Configurer SpamAssassin 5 novembre 2007 20:13, par alain

      Bonsoir,

      Pour ajouter des régles personalisées voir le lien ci - dessous.
      Il faut ajouter vos règles dans le fichier /home/utilisateur/.spamassassin/user_prefs ou dans le fichier /etc/mail/spamassassin/local.cf (pour que ces règles s’appliquent à tous les utilisateurs de la machine.

      Avec ces exemples, vous ne devriez avoir aucun mal à créer des règles personalisées.

      A plus

      Voir en ligne : Règles spamassassin

SPIP | squelette | | Plan du site | Suivre la vie du site RSS 2.0