Lorsque vous consultez votre courrier en IMAP depuis plusieurs clients différents (webmail et client sur le PC, par exemple) et que vous avez implémenté sur votre PC des règles de tri de courrier, le classement n’est pas fait lorsque vous consultez votre courrier sur le Webmail et que celui-ci n’a pas encore été classé par votre PC qui devrait resté allumé pour classer en temps réel.
La solution est de réaliser le classement directement côté serveur, afin que votre MDA (Mail Delivery Agent) réalise directement ce classement. Ainsi, peu importe l’endroit où vous vous connectez, le classement sera toujours réalisé.
Un langage, Sieve défini par la RFC 5228 permet de réaliser facilement ces traitements, sur base des en-têtes du courrier reçu. Ainsi, il est facile de vérifier la valeur d’un en-tête (l’expéditeur du mail, son destinataire, le sujet, …) ou son existence (est-ce que l’antispam a placé l’en-tête indiquant le caractère indésirable du courrier ?).
En utilisant le MDA de Dovecot, un plugin nommé cmusieve est disponible. Il suffit de l’activer dans le fichier /etc/dovecot/dovecot.conf, dans la section lda, de la manière suivante:
protocal lda {
mail_plugins = cmusieve
}
Ensuite, après avoir redémarré dovecot, pour les utilisateurs nécessitant un filtrage, rajouter à la racine de leur boîte mail un fichier nommé .dovecot.sieve (qui doit appartenir à l’utilsateur utilisé pour le mail, généralement vmail). A chaque modification du fichier, dovecot créera une version compilée, nommé .dovecot.sievec. En cas de problème avec votre fichier (erreur de syntaxe), un fichier .dovecot.sieve.err sera créé.
Ce fichier contient les règles propres à chaque utilisateur. En voici quelques exemples :
Classement du spam dans le folder Junk:
require "fileinto";
if exists "X-Spam-Flag" {
fileinto "Junk";
}
Marquer le courrier provenant de l’adresse mail@example.org comme lu:
require "imapflags";
if address :is ["From"] "mail@example.org" {
setflag "\\Seen";
}
Supprimer le courrier provenant de l’adresse mail@example.org:
if address :is ["From"] "mail@example.org" {
discard;
}
Dans le cas du classement du courrier dans un folder précis, il est indispensable de configurer votre client mail pour qu’il idle sur tous les folders (par défaut ce n’est que sur la Inbox principale).
Il est possible de définir des script globaux à tous les utilisateurs et de créer des répondeurs. Nous verrons cela dans un prochain article.
Courrier électronique
dovecot, mda, sieve