On peut laisser l'antispam faire son travail tranquille dans son coin. Toutefois, c'est intéressant de lui indiquer les quelques mails indésirables qu'il n'a pas détecté ou au contraire les faux-positifs afin qu'il apprenne et devienne de plus en plus efficace.
Si vous utilisez dovecot afin de consulter vos messages avec un client IMAP, il est possible de marquer comme spam les messages que vous déplacez dans le dossier “Junk” (par exemple). De la même façon vous pouvez marquer un message comme légitime si vous le retirez du dossier “Junk”.
Notez que cette fonctionnalité pourra être mise en place quel que soit l'antispam que vous utilisez.
L'installation va se dérouler en trois étapes :
Tout ceci est décrit dans la documentation de dovecot
Pour configurer dovecot de cette façon, nous commençons par installer le plugin pigeonhole qui donnera accès à sieve.
# pkg_add dovecot-pigeonhole
On active ce plugin en ajoutant les lignes suivantes à la fin du fichier /etc/dovecot/local.conf
:
protocol imap { mail_plugins = $mail_plugins imap_sieve }
Enfin, toujours dans le même fichier, on configure ce plugin :
plugin { sieve_plugins = sieve_imapsieve sieve_extprograms # De n'importe ou vers le dossier spam imapsieve_mailbox1_name = Junk imapsieve_mailbox1_causes = COPY imapsieve_mailbox1_before = file:/usr/local/lib/dovecot/sieve/report-spam.sieve # Du dossier des spams vers n'importe ou imapsieve_mailbox2_name = * imapsieve_mailbox2_from = Junk imapsieve_mailbox2_causes = COPY imapsieve_mailbox2_before = file:/usr/local/lib/dovecot/sieve/report-ham.sieve sieve_pipe_bin_dir = /usr/local/lib/dovecot/sieve sieve_global_extensions = +vnd.dovecot.pipe +vnd.dovecot.execute }
On crée maintenant deux fichiers dans le dossier
/usr/local/lib/dovecot/sieve/
.
report-spam.sieve
: require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; if environment :matches "imap.user" "*" { set "username" "${1}"; } pipe :copy "learn-spam.sh" [ "${username}" ];
report-ham.sieve
require ["vnd.dovecot.pipe", "copy", "imapsieve", "environment", "variables"]; if environment :matches "imap.mailbox" "*" { set "mailbox" "${1}"; } if string "${mailbox}" "Trash" { stop; } if environment :matches "imap.user" "*" { set "username" "${1}"; } pipe :copy "learn-ham.sh" [ "${username}" ];
On fait maintenant en sorte que sieve tienne compte de ces fichiers. Avant tout, il faut recharger dovecot :
# rcctl restart dovecot
Ensuite, compilez les scripts sieve :
sievec /usr/local/lib/dovecot/sieve/report-spam.sieve sievec /usr/local/lib/dovecot/sieve/report-ham.sieve
Ces deux fichiers font appel à deux scripts : learn-spam.sh
et
learn-ham.sh
. Le contenu de ces derniers va dépendre de l'antispam que
vous utilisez. Ils serviront à apprendre à votre antispam si un message est
légitime ou non. Lisez la suite pour terminer.
Voici comment remplir les
scripts d'apprentissages pour spamassassin et rspamd.
Nous mettrons ces scripts dans le dossier /usr/local/lib/dovecot/sieve
.
#!/bin/sh #learn-spam.sh /usr/local/bin/spamc -u ${1} -L spam -C report
#!/bin/sh # learn-ham.sh /usr/loca/bin/spamc -u ${1} -L ham -C report
#!/bin/sh #learn-spam.sh exec /usr/local/bin/rspamc -d "${1}" learn_spam
#!/bin/sh # learn-ham.sh exec /usr/local/bin/rspamc -d "${1}" learn_ham
Afin que ces scripts puissent être lancés, rendez-les exécutables avec cette commande :
# chmod +x /usr/local/lib/dovecot/sieve/learn-*.sh
Pour terminer, n'oubliez pas de recharger dovecot :
# rcctl reload dovecot
Et voilà, désormais, les scripts d'apprentissages seront appelés selon le dossier dans lequel les utilisateurs déplaceront les mails. Si vous souhaitez en savoir plus, vous pouvez lire cette page.