Table des matières

Spamassassin

L'anti-spam ultime peut se greffer sur Postfix sous la forme d'un milter.

 apt install spamass-milter

Une impressionnante liste de dépendances s'impose, dans laquelle nous retrouvons spamassassin, spamc et spamd.

L'installation fait ce qu'il faut pour que spamd soit démarré automatiquement par systemd:

systemctl status spamd

spamd.service - Perl-based spam filter using text analysis
     Loaded: loaded (/usr/lib/systemd/system/spamd.service; enabled; preset: enabled)
     Active: active (running) since Thu 2025-05-29 17:05:46 CEST; 39s ago
...
     CGroup: /system.slice/spamd.service
             ├─3414 /usr/bin/perl "-T -w" /usr/sbin/spamd --pidfile=/run/spamd.pid --create-prefs --max-children 5 --helper-home-dir
             ├─3418 "spamd child"
             └─3419 "spamd child"
...
mai 29 17:05:47 mail spamd[3414]: spamd: server started on IO::Socket::IP [::1]:783, IO::Socket::IP [127.0.0.1]:783 (running version 4.0.1)
De même, systemd démarre automatiquement spamass-milter:
systemctl status spamass-milter

spamass-milter.service - LSB: milter for spamassassin
     Loaded: loaded (/etc/init.d/spamass-milter; generated)
     Active: active (running) since Thu 2025-05-29 17:33:10 CEST; 6s ago
       Docs: man:systemd-sysv-generator(8)
    Process: 42590 ExecStart=/etc/init.d/spamass-milter start (code=exited, status=0/SUCCESS)
      Tasks: 5 (limit: 2248)
     Memory: 492.0K
        CPU: 19ms
     CGroup: /system.slice/spamass-milter.service
             └─42604 /usr/sbin/spamass-milter -P /var/run/spamass/spamass.pid -f -p /var/spool/postfix/spamass/spamass.sock -u spamass-milter -i 127.0.0.1 -I
...

Configuration de base

Il n'est pas question ici d'entrer dans le détail de la configuration de cette usine. Voyons juste une façon simple de mettre en œuvre ce filtre complexe.

Un fichier /etc/default/spamd est créé et peut être laissé tel quel. Un autre fichier; /etc/default/spamass-milter est également créé. Il peut également laissé tel quel. Il permet de définir les paramètres de démarrage de spamass-milter, mais il n'est pas inutile de consulter le manuel du milter pour éventuellement modifier ces valeurs ou en ajouter.

Ajouter à la liste des milters dans le main.cf de Postfix qui est désormais de la forme:

smtpd_milters = unix:opendkim/opendkim.sock unix:opendmarc/opendmarc.sock unix:/spamass/spamass.sock

Et rafraîchir avec un:

postfix reload

ou si l'on préfère:

systemctl reload postfix

Contrôle

À réception d'un message, nous trouvons dans l'en-tête:

X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,
	RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,
	RCVD_IN_ZEN_BLOCKED_OPENDNS,TVD_SPACE_RATIO autolearn=ham
	autolearn_force=no version=4.0.1
X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on mail.nain-t.net
Le «score» requis pour décréter que le message est un spam est par défaut réglé à 5. C'est peut-être excessif. Par ailleurs, spamc par défaut ne passe pas à spamd les messages dont la taille est supérieure à 500 KB, ce qui laissera certainement passer des messages pourris.

Ces paramètres peuvent être revus dans /etc/default/spamass-milter de la façon suivante:

OPTIONS="-u spamass-milter -i 127.0.0.1 -I -r 10 -- -s 100000000"
Le surlignage jaune indique ce qui est ajouté à la configuration par défaut:

Ce qui est surligné en orange indique à spamc qu'il ne doit court-circuiter les messages que si leur taille est >= à 100 MB (la valeur par défaut étant de seulement 500 KB).

En cas de modification, relancer tous les services concernés: spamass-milter, mais aussi spamd et postfix.

Court-circuiter spamassassin

whitelist et blacklist

Il peut être utile dans certains cas d'exempter de filtrage certains messages. Le «plug-in» Shortcircuit activé par défaut dans notre installation permet d'utiliser des listes d'exceptions qui dispenseront du filtrage, soit pour laisser passer sans filtrer (whitelist), soit, au contraire, pour bloquer sans faire d'analyse supplémentaire.

Par exemple, pour autoriser sans filtre les messages provenant de toute adresse @mondomaine.tld , il faudra dans le fichier /etc/spamassassin/local.cf décommenter la ligne:

shortcircuit USER_IN_WHITELIST       on

et ajouter ceci en fin de fichier:

whitelist_from *@mondomaine.tld

Adresse IP ou sous-réseau sûr

Il est également possible de dispenser de filtrage les messages provenant d'une adresse IP réputée sûre (ou d'un sous-réseau). Par exemple, notre réseau local est connecté au Net par un routeur NAT (La box du F.A.I) qui dispose d'une adresse IP publique, disons 82.67.12.48. La directive:

trusted_networks 82.67.12.48

ajoutée au fichier '/etc/spamassassin/local.cf'' dispensera de filtrage tout message issu de notre réseau local

Bien entendu, redémarrer les services smapd et spamass-milter après toute modification du fichier de configuration.