Outils du site


Lutter contre les spams à la réception : spamassassin

On ne présente plus spamassassin, un filtre antispam à la réception. Avec spamd, il est utilisé par OpeBSD sur leurs listes de diffusion. Voyons comment le faire communiquer avec smtpd.

C'est parti, on commence par installer les paquets utiles :

# pkg_add p5-Mail-SpamAssassin spampd

Pour que spampd puisse faire le lien entre le serveur smtpd et spamassassin qui vérifie les messages, il doit tourner en arrière-plan. On active donc ce service :

# rcctl enable spampd

Vous pouvez préciser certaines options pour spampd afin d'être sûr qu'il fonctionne comme prévu :

# rcctl set spampd flags "--relayhost=127.0.0.1:10026"

Ensuite, on démarre le service :

# rcctl start spampd

Il en va de même pour spamassassin qui doit être actif :

# rcctl enable spamassassin
# rcctl start spamassassin

Nous allons maintenant faire passer tous les messages entrants par spamassassin qui va les vérifier. Pour cela, il faut les envoyer sur le port 10025. S'il ne s'agit pas de spam, alors spampd se charge de les renvoyer sur le port 10026. Tous les messages arrivant ainsi recevront l'étiquette “SPAMASSASSIN”, pour que l'on sache qu'il faut les distribuer.

Voici donc les lignes à ajouter au fichier /etc/mail/smtpd.conf :

...
# Messages verifies par spamassassin
listen on lo0 port 10026 tag SPAMASSASSIN
...
action spamassassin relay host smtp://127.0.0.1:10025 
...
# Message venant du système
accept from local for local alias <aliases> deliver to maildir "~/Maildir"
# Message SPAMASSASSIN
match tag SPAMASSASSIN from any for domain "chezmoi.tld" action virtual_maildir
### Messages a faire verifier par spamassassin
match from any for domain "chezmoi.tld" action spamassassin
...

Référez-vous à l'exemple plus complet à la fin du document si vous le souhaitez pour bien comprendre comment les choses fonctionnent.

Actuellement, spamassassin modifie le sujet des mails spams en indiquant clairement leur nature. Vous pouvez modifier la configuration de spamassassin pour que les spams soient directement supprimés mais c'est déconseillé en cas de faux positifs.

Spamassassin ajoute un entête “X-spam” aux messages indésirables. On va modifier l'action de distribution pour ajouter le mot-clé “junk” afin que ces messages soient automatiquement classés dans le dossier des spams lorsqu'ils seront livrés :

# Dans /etc/mail/smtpd.conf
action virtual_maildir maildir "/var/vmail/%{dest.domain}/%{dest.user}/Maildir" junk virtual <virtuals>

À ce point du document, le serveur smtp fonctionne ainsi :