Filtrage de mail avec SpamAssassin et Postfix sous gentoo

Eh oui le spam est à la mode en ce ce moment (avec 75% de messages spam sur internet), bien que ce soit une mode forcée, effectivement c'est rarement par choix que l'on reçoit ces inombrables pubs (anglophone pour la plupart) dans notre boîte aux lettres virtuelle.

Ne faisant pas exception j'ai vu le nombre de spam dans ma boîte de réception grossir et je me suis enfin décidé à ajouter une solution de filtrage à mon postfix adoré en utilisant le célèbre SpamAssassin.

Dans un premier temps il faut donc installer SpamAssassin sur votre distribution, par exemple sous gentoo, il suffit de taper la commande suivante :

emerge -av spamassassin

Une fois SpamAssassin installé, par précaution, sauvegarder maintenant votre configuration postfix, on sait jamais une bétise est vite arrivé, vous voilà prévenu !! Par exemple avec un "tar cvf ~/backup_postfix.tar /etc/postfix" Une fois ceci fait, éditer le fichier master.cf (par défaut il est situé dans /etc/postfix) et modifier la ligne concernant smtp de la manière suivante :

smtp      inet  n       -       n       -       -       smtpd -o content_filter=spamfilter:dummy

Cette ligne demande à postfix d'appeler le filtre spamfilter lors de la réception d'un mail en SMTP, il faut donc aussi ajouter la ligne suivante au fichier master.cf :

spamfilter unix  -       n       n       -       -       pipe flags=Rq user=spamfilter argv=/usr/bin/spamfilter -f ${sender} -- ${recipient}

La ligne ci-dessus déclare le filtre spamfilter qui sera invoqué lors de la réception d'un mail, et exécutera le script /usr/bin/spamfilter avec le compte utilisateur spamfilter (le créer au besoin avec comme shell /bin/nologin).

Voila c'est tout pour la configuration de postfix, si vous regardez sur votre système de fichier, le script /usr/bin/spamfilter n'existe pas, nous allons le créer avec le contenu suivant :

#!/bin/sh
/usr/bin/spamc | /usr/sbin/sendmail -i "$@"
exit $?

Ce script appelle tout simplement le client spamassassin spamc pour traiter le mail (ajout de ****SPAM**** dans l'objet du message, ou encore les X-Headers dans l'entête du mail), puis invoque la commande sendmail pour délivrer le mail.

Voila la configuration est terminée, il nous reste à lancer le démon SpamAssassin et recharger la configuration de Postfix :

/etc/init.d/spamd start
postfix reload

Voilà notre filtrage est en place, j'ai controlé que tout fonctionnait bien à l'aide du "tail -f /var/log/messages" pour afficher les évènements en temps réel. Il ne reste plus qu'a vous envoyer un mail depuis l'extérieur, regarder qu'au niveau des logs tout est bon, pour ensuite sous votre client messagerie préféré regarder l'entête du message (Ctrl+U sous Thunderbird) afin de voir les champs X-Spam-Flag, X-Spam-Level par exemple.

Si SpamAssassin marche correctement, il ne vous reste plus qu'à ajouter le lancement de SpamAssassin au démarrage de votre poste via la commande suivante :

rc-update add spamd default

Ah oui j'oubliais, vous pouvez ajuster le comportement de SpamAssassin via le fichier /etc/spamassassin/local.cf, notamment les listes blanches/noires.

Liens utiles :

Site officiel de postfix Site officiel de SpamAssassin Tutoriel en anglais

Vus : 421
Publié par David Dup : 20