Module 6 · 6.1
Le fonctionnement des filtres
Module 6: Automatiser : filtres et absence · Temps de lecture : 10 minutes
Objectif pédagogique : À l’issue de cette leçon, vous saurez expliquer où et quand les filtres s’exécutent, lire un script de filtrage en Sieve et prédire dans quel dossier un courriel entrant va arriver.
Notions clés : filtre, Sieve, ManageSieve, jeu de filtres, règle, condition, action, conservation implicite, stop, contient, est égal à, correspond à l’expression
Les filtres s’exécutent sur le serveur
Un filtre trie votre courrier automatiquement : les e-mails contenant « factuur » (facture) dans l’objet vont dans le dossier Facturen (Factures), les newsletters dans un dossier à part. L’essentiel à retenir : ce tri ne se fait pas dans le webmail, mais sur le serveur de messagerie, au moment où un courriel est remis dans votre boîte mail.
Il en découle trois choses :
- Les filtres fonctionnent même lorsque le webmail est fermé. Votre ordinateur portable peut être éteint. Votre téléphone voit immédiatement le courriel dans le bon dossier.
- Les filtres ne s’appliquent qu’au nouveau courrier. Les e-mails déjà présents dans votre boîte mail restent où ils sont. Si vous créez un filtre aujourd’hui, vous déplacez vous-même les anciens courriels.
- Les filtres valent pour une seule boîte mail. Chaque boîte mail a ses propres filtres. Si vous souhaitez régler quelque chose pour toutes les boîtes mail de votre domaine, par exemple bloquer un expéditeur, faites-le dans le panneau de gestion de votre hébergement.
Les filtres sont écrits en Sieve, un langage simple conçu spécialement pour filtrer le courrier (RFC 5228). Le serveur de messagerie de WebOké utilise Dovecot avec Pigeonhole, l’implémentation Sieve de Dovecot. Le webmail convertit vos choix dans le formulaire en un script Sieve et l’envoie au serveur via le protocole ManageSieve (RFC 5804). Vous n’avez pas besoin d’écrire du Sieve, mais si vous savez le lire, vous comprenez exactement ce que font vos filtres.
Jeu de filtres, règles, conditions et actions
Un jeu de filtres est le script complet : tous les filtres de votre boîte mail dans un seul fichier. Vous pouvez avoir plusieurs jeux de filtres, mais un seul est actif à la fois.
Le jeu de filtres contient les filtres, également appelés règles dans le webmail. Chaque filtre comporte :
- un nom, uniquement pour vous ;
- une portée : le courriel doit remplir toutes les règles, l’une des règles, ou bien le filtre s’applique à tous les courriels ;
- une ou plusieurs conditions : où le filtre regarde (objet, expéditeur, un autre en-tête), comment il compare, et avec quel texte ;
- une ou plusieurs actions : ce qui se passe lorsque les conditions sont remplies.
Il existe trois façons de comparer :
| Dans le webmail | En Sieve | Signification |
|---|---|---|
| contient | :contains | le texte figure quelque part dans l’en-tête |
| est égal à | :is | l’en-tête correspond exactement à ce texte |
| correspond à l’expression | :matches | motif avec * (zéro caractère ou plus) et ? (exactement un caractère) |
Dans les trois cas, les majuscules n’ont pas d’importance. Par défaut, Sieve compare avec la règle i;ascii-casemap, qui traite majuscules et minuscules de la même façon. « factuur » trouve donc aussi « FACTUUR » et « Factuur ».
À quoi ressemble un jeu de filtres
Dans le webmail, vous pouvez afficher le jeu de filtres sous forme de texte via Filtres > Actions > Modifier le jeu de filtres. Voici un exemple tel que le webmail l’écrit :
require ["fileinto"];
# rule:[Nieuwsbrieven]
if exists "List-Id"
{
fileinto "Nieuwsbrieven";
stop;
}
# rule:[Facturen]
if allof (header :contains "subject" "factuur")
{
fileinto "Facturen";
}
# rule:[Collega Daan]
if false # header :contains "from" "daan@example.com"
{
fileinto "INBOX.Team";
}Ligne par ligne :
require ["fileinto"];demande au serveur l’extension nécessaire pour déplacer vers un dossier. Le webmail l’ajoute lui-même en haut, avec toutes les extensions utilisées par le script.# rule:[Nieuwsbrieven]est un commentaire. C’est grâce à lui que le webmail reconnaît le nom de votre filtre. Le serveur ignore cette ligne.if exists "List-Id"est la condition : le courriel possède un en-tête List-Id. Les newsletters et les listes de diffusion en ont un (RFC 2919).fileinto "Nieuwsbrieven";déplace le courriel vers le dossier Nieuwsbrieven (Newsletters). Le nom du dossier est le nom complet sur le serveur, avec le point comme séparateur (leçon 5.1). Un dossier situé sous Boîte de réception s’appelle doncINBOX.Team.stop;arrête tout le script. Les filtres suivants n’examinent plus ce courriel. Dans le webmail, cette action s’appelle Arrêter l’évaluation des règles.if false # ...est un filtre désactivé. Si vous désactivez Le filtre est activé, le webmail transforme la condition enfalse: jamais vraie. L’ancienne condition reste en commentaire, pour que vous puissiez la réactiver plus tard.

De haut en bas
Le serveur lit le script de haut en bas et examine chaque filtre. Trois règles s’appliquent.
1. Sans action, le courriel reste dans la Boîte de réception. Sieve connaît la conservation implicite (implicit keep, RFC 5228, section 2.10.2) : si aucun filtre ne fait quoi que ce soit, le courriel arrive simplement dans la Boîte de réception.
2. Après un déplacement, le courriel ne se trouve pas aussi dans la Boîte de réception. Un fileinto désactive cette conservation implicite. Le courriel arrive dans le dossier choisi et pas en plus dans la Boîte de réception. Si vous voulez les deux, utilisez Copier le courriel vers.
3. Sans stop, les filtres suivants examinent aussi le courriel. Si stop est absent, le serveur passe au filtre suivant. Si ce filtre correspond aussi, le serveur exécute également son action. Deux déplacements vers deux dossiers signifient que le courriel arrive dans les deux dossiers. Avec stop, c’est le premier filtre correspondant qui décide.
C’est pourquoi l’ordre compte. Dans l’exemple ci-dessus, Nieuwsbrieven figure au-dessus de Facturen, avec un stop. Une newsletter dont l’objet contient « Je factuur » (Votre facture) va donc dans Nieuwsbrieven, et non dans Facturen. Si vous inversez l’ordre, cette même newsletter atterrit dans Facturen, car ce filtre n’a pas de stop et passe désormais en premier. La newsletter se retrouverait même dans les deux dossiers. Placez donc les filtres les plus spécifiques en haut et ajoutez-leur un stop.
Suivre un courriel pas à pas : voici comment le prédire
Prenez un courriel et parcourez le script comme le fait le serveur :
- Commencez par le premier filtre. Est-il désactivé (
if false) ? Passez-le. - La condition est-elle remplie ? Regardez précisément l’en-tête :
subjectest l’objet,froml’expéditeur avec son nom et son adresse,tole destinataire. - Si oui : exécutez les actions. S’il y a
stop, vous avez terminé. - Si non, ou en l’absence de stop : passez au filtre suivant.
- À la fin : si aucun filtre n’a déplacé ni supprimé le courriel, il se trouve dans la Boîte de réception (
INBOX).
Avec ces cinq étapes, vous pouvez lire n’importe quel script, même long.
En pratique : comment cela fonctionne dans le webmail
Vous trouvez les filtres sous Paramètres > Filtres. La liste affiche vos filtres dans l’ordre dans lequel le serveur les exécute ; faites-les glisser pour modifier l’ordre. Sous Actions se trouve Modifier le jeu de filtres : vous y voyez et modifiez le script sous forme de texte. Les étapes pour créer un nouveau filtre figurent dans le manuel Roundcube, à la section Créer un filtre. Dans d’autres webmails, le fonctionnement est comparable : Gmail propose des filtres, Outlook.com des règles. Ils n’utilisent pas Sieve, mais l’ordre et l’arrêt des règles s’y appliquent aussi.
Résumé
- Les filtres s’exécutent sur le serveur de messagerie lors de la remise, donc même lorsque le webmail est fermé, et uniquement sur le nouveau courrier.
- Le webmail écrit vos filtres sous forme de script Sieve (RFC 5228) et le dépose sur le serveur via ManageSieve.
- Contient, est égal à et correspond à l’expression ne tiennent pas compte, par défaut, des majuscules.
- Si aucun filtre n’agit, le courriel reste dans la Boîte de réception ; après un déplacement, il ne s’y trouve pas en plus.
- Les filtres s’exécutent de haut en bas ; stop met fin au script, donc l’ordre détermine le résultat.
Quiz
Exercice
Exercice A6.1: Où arrive cet e-mail ? Ouvrez le matériel filters-1.txt, un jeu de filtres tel que l’écrit le webmail, et berichten-1.txt, qui contient les en-têtes de quatre courriels entrants, numérotés de 1 à 4. Parcourez chaque courriel en suivant les cinq étapes de cette leçon : de haut en bas, en passant les filtres désactivés et en tenant compte de stop. Pour chaque courriel, indiquez le nom du dossier où il arrive, exactement tel qu’il figure dans le script ; si le courriel arrive dans la Boîte de réception, indiquez INBOX. Le programme compare vos quatre réponses avec le corrigé et indique, pour chaque courriel, quel filtre a été déterminant.
Pour aller plus loin
Les étapes décrites dans le webmail concernent le webmail de WebOké ; dans d’autres webmails, le fonctionnement est comparable.
- Roundcube Webmail 7.1: Créer un filtre
- Roundcube Webmail 7.2: Exemples de filtres utiles
- Règles de messagerie côté serveur (filtres sur le serveur)
- RFC 5228, Sieve: An Email Filtering Language (en anglais) : https://www.rfc-editor.org/rfc/rfc5228
- RFC 5804, ManageSieve (en anglais) : https://www.rfc-editor.org/rfc/rfc5804
- RFC 2919, List-Id (en anglais) : https://www.rfc-editor.org/rfc/rfc2919
- Je filters als Sieve-script bekijken, downloaden en terugzetten
