Filtrer les mails avec Dovecot

Il est possible d'appliquer des filtres soit du côté client, notamment avec Thunderbird et/ou du côté serveur. Admettons que nous recevons beaucoup de mail dont certains portant le sujet “SPAM”. Nous allons ci-dessous voir comment les déplacer automatiquement dans une sous-boite appelé “Junk”.

Configurer Dovecot

Nous aurons besoin de ce paquet :

apt-get install dovecot-sieve

Indiquons où se trouvera les fichiers où l'on écrira les règles de filtrage :

nano /etc/dovecot/dovecot.conf
protocol lda {
  mail_plugins = sieve
}

lda_mailbox_autocreate = yes

plugin {
 sieve = /var/mail/%d/%n/.dovecot.sieve
 sieve_global_path = /var/mail/sieve.default
}

Ainsi dès qu'un mail arrivera, Dovecot lira en premier le contenu de la valeur “sieve” puis regardera ensuite dans le fichier défini dans la directive “sieve_global_path”.

Commençons par définir le filtrage par défaut :

sudo -u vmail nano /var/mail/sieve.default
require ["fileinto"];
if header :contains "subject" ["SPAM", "**SPAM**"]"] {
 fileinto "Junk";
} elsif header :contains "subject" "un-mot-a-filtrer" {
 fileinto "une-mailbox-custom";
} else {
 keep;
}

Ajoutons ensuite des règles plus spécifique liée à un compte personnel tel que contact@domaine.com :

sudo -u vmail nano /var/mail/domaine.com/contact/.dovecot.sieve
# Sieve Filters
# http://wiki.dovecot.org/Pigeonhole/Sieve/Examples
# https://tools.ietf.org/html/rfc5228
require "fileinto";
require "envelope";
require "variables";
require "subaddress";
require "regex";
require "vacation";
#require "vnd.dovecot.debug";

########################################################################
# spam
# possible improvement, server-side:
# http://wiki.dovecot.org/Pigeonhole/Sieve/Examples#Filtering_using_the_spamtest_and_virustest_extensions
if header :contains "X-Spam-Flag" "YES" {
  fileinto "Junk";
  stop;
} elsif header :contains "X-Spam-Level" "***" {
  fileinto "Junk";
  stop;
}

Toujours vérifier qu'il n'y a pas d'erreur de syntaxe et on recharge la configuration :

doveconf -n >/dev/null
/etc/init.d/dovecot reload

Configurer Postfix

Il nous reste plus qu'a mettre au courant Postfix:

nano /etc/postfix/main.cf

En ajoutant cette directive :

virtual_transport = dovecot

Et le plus important en modifiants son comportement :

nano /etc/postfix/master.cf

A ajouté en fin de fichier :

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/dovecot-lda -f ${sender} -d ${recipient}

Comme d'hab, vérif + reload :

postconf >/dev/null
/etc/init.d/postfix reload