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...