Filtres SIEVE Gandimail
Comment utiliser les filtres SIEVE pour filtrer vos E-mails
C’est un quoi un filtre sieve ?
Les filtres sieve sont des filtres mails que vous pouvez mettre en place pour qu’ils soient exécutés sur le serveur mail au lieu de l’être dans votre application de messagerie.
Les avantages des filtres sieve par rapport à des filtres « conventionnels » est que vous n’aurez besoin de les mettre en place qu’une fois (sur le serveur) et qu’ils seront actifs même si l’application de messagerie est fermée.
Cela veut dire que vous accédiez à vos E-mails depuis votre smartphone, le webmail, ou votre logiciel de messagerie, les E-mails seront délivrés au même endroit (répertoire choisi), seront toujours traités de la même manière sans que vous ayez besoin de configurer ou tenir à jour les filtres de chaque application séparément.
Introduction basique aux filtres SIEVE
Les filtres Sieve sont des filtres E-mails qui sont appliqués directement sur le serveur mail contrairement aux filtres habituels, limités à l’application Mail.
Avantages des filtres Sieve
Au contraire des filtres disponibles avec un logiciel de messagerie (comme Thunderbird ou Outlook par exemple), les filtres Sieve agissent sur les E-mails directement sur le serveur mail, ce qui veut dire que le filtre sera disponible pour TOUS les logiciels ou webmail que vous utilisez. Si vous utilisez Outlook à votre travail par exemple, mais SOGo chez vous, les filtres seront disponibles à ces deux emplacements.
Il n’y a rien de spécial à faire au niveau de votre nom de domaine pour démarrer. Votre adresse E-mail Gandi est prête à utiliser cette fonctionnalité.
Commencer à utiliser Sieve
Les filtres Sieve existent en tant que fichier unique sur notre serveur qui contient tous les filtres que vous aurez créés. Pour gérer ces filtres il faudra utiliser une application externe.
Étape 1. Choisir une application Sieve
Les filtres Sieve sont créés via un langage spécifique, SIEVE. Il existe certaines applications qui vous permettent d’utiliser ce langage pour écrire vos filtres à partir de rien. Il y a aussi des extensions ou plugins vous permettant de créer des filtres sans avoir à écrire une seule ligne de code. Les deux types d’applications fonctionnent de la même manière, la seule différence étant la méthode pour écrire ces codes. Les utilisateurs avancés ou ceux ayant des filtres complexes à mettre en place préféreront écrire leur propre code. Les utilisateurs débutants préféreront une interface plus interactive.
Pour les utilisateurs désirant une interface simplifiée, nos deux Webmail, SOGo et Roundcube, proposent tous deux une telle interface. Les filtres créés sur ces deux produits sont des filtres Sieve et donc ils seront pris en compte par tous les clients mails utilisés sur l’adresse E-mail concernée. Par contre aucun des deux ne propose de moyen de mettre en place des filtres rédigés en code, seule l’interface simplifiée est disponible.
Pour mettre en place vos propres filtres, les utilisateurs de Thunderbird peuvent utiliser l’extension **Sieve** de Thomas Shmidt qui fonctionne parfaitement pour cela, mais vous pouvez en chercher d’autres si vous le désirez ou si nécessaire, sur sieve.info par exemple.
Note
Si vous utilisez Sogo et que vous avez déjà créé des filtres via ce webmail vous verrez qu’il existe déjà un fichier (généralement nommé « Sogo »). Dans ce cas, ne créez pas un nouveau fichier, mais utilisez celui-ci.
Étape 2. Activer Sieve pour votre adresse E-mail
Une fois que vous avez choisi l’application Sieve que vous voulez utiliser, vous devez vous assurer qu’elle est capable de se connecter à votre boîte mail.
Si vous utilisez l’extension Thunderbird Sieve, cette opération se fait de manière automatique, vous n’avez qu’à choisir « Paramètres Sieve » dans les paramètres du compte mail concerné ou dans le menu « Outils » de Thunderbird choisir « Filtres Sieve », puis de sélectionner l’adresse E-mail concernée.
Si cela vous est nécessaire voici les informations de connexion :
- hôte : mail.gandi.net
- port : 4190
- login : l’adresse E-mail complète (exemple : nom@domaine.tld) concernée
- mot de passe : le mot de passe de l’adresse E-mail concernée
Étape 3. Créer des filtres
Chaque E-mail est constitué de deux parties. Le corps (Body) et les entêtes (Headers). Le corps contient ce que vous pensez être le contenu du mail. Les entêtes contiennent les informations comme qui a envoyé l’E-mail, de quel serveur, à quel date et heure précise, et ainsi de suite. Quelque fois les serveurs mails qui traitent ces E-mails vont ajouter des entêtes supplémentaires pour des raisons de traitement. Par exemple, les serveurs Mail de Gandi vont analyser l’E-mail concerné et créer un entête avec le résultat de cette analyse. Vous pouvez donc utiliser cet entête ajouté par nos serveurs Mail pour créer vos propres filtres antispam.
Statut X-GND
Le statut X-GND est un entête Mail qui catégorise les « types » d’E-mails. La table ci-dessous vous explique chacun des statut utilisé par Gandi.
Si vous créez un filtre Sieve via une Interface Graphique, comme via SOGo, vous pouvez filtrer par entêtes en choisissant « En-tête » dans la liste des « conditions », puis en entrant « X-GND-Status » dans le type d’entête, avant de préciser le critère du filtre.
Le même filtre, créé en code SIEVE, enverra lui aussi les E-mails « Commerciaux » dans un sous répertoire « E-mails Commerciaux ».
# Filtrer E-mails classés comme MCE ou PCE dans le répertoire commercial.
require "fileinto";
if header :contains ["X-GND-Status"] ["MCE","PCE"] {
fileinto "E-mails Commerciaux";
}
Vous pouvez aussi utiliser le code ci-dessous pour créer un filtre qui enverra tous les messages ayant un score de SPAM supérieur à 200 dans le répertoire « indésirables » :
# Filtrer E-mails avec un score de spam supérieur à 200 dans le répertoire Junk.
require ["fileinto","regex"];
if allof (header :contains ["X-GND-Status"] ["SPAM"], header :regex ["X-GND-Score"] ["[2-4][0-9][0-9]"] {
fileinto "Junk";
}
Exemples de filtres SIEVE pour les E-mails
Envoyer les E-mails de renouvellement dans un répertoire « Renouvellements »
Les filtres ci-dessous sont écrit en code « SIEVE ». Pour de plus amples informations sur la manière de créer vos propres filtres SIEVE, référez-vous à Commencer à utiliser Sieve. Vous pouvez aussi lire le chapitre Tutoriaux SIEVE pour une explication « pas à pas » sur la manière d’écrire vos propres filtres SIEVE.
Note
Un seul fichier SIEVE peut-être activé à la fois, il est donc important d’inclure tous les filtres que vous voulez utiliser dans le même fichier SIEVE.
Envoyer les E-mails de renouvellement dans un répertoire « Renouvellements »
Ce filtre va rediriger tout E-mail en provenance de « support-renew@gandi.net » vers un sous répertoire de votre boite de réception nommé « Renouvellements ».
# Send E-mails from "support-renew@gandi.net" to my renew folder.
require "fileinto";
if address :is ["from", "sender"] "support-renew@gandi.net" {
fileinto "INBOX/Renouvellements";
stop;
}
Le nom du répertoire que vous utilisez est « relatif » par rapport à la localisation racine. »INBOX/Renouvellements » fait donc référence à un sous répertoire « Renouvellements » de la boite de réception (« INBOX »).
La commande stop permet de stopper le filtrage sur le message concerné, ce qui signifie qu’aucun autre filtre ne sera appliqué sur ce type de messages après cette action.
Réponse Automatique d’absence
Ce filtre est un exemple de répondeur que vous pouvez utiliser pendant une absence. Il utilise les dates et les extensions relationnelles pour définir une période d’activation du filtre entre deux dates.
Pour de plus amples informations sur l’extension « absence », vous pouvez regarder les standards proposés : (en anglais).
# Informons les gens que je serais absent la semaine prochaine.
require ["vacation","date","relational"];
# Si la date de réception de l'E-mail reçu est supérieur ou égal au
# 1er Août et inférieur ou égale au 15 Août
if allof (currentdate :value "ge" "date" "2025-08-01", currentdate :value "le" "date" "2025-08-15") {
vacation :subject "Parti pêcher"
"Bonjour, je suis parti pêcher et je serais de retour dans 15 jours. - Mr. Smith";
}
Filtrage par sous-adresse
Une « sous-adresse » est une adresse E-mail que vous créez « à la volée » en ajoutant « +tag » à la partie « nom » d’une adresse E-mail. Par exemple si je veux créer un nouveau compte sur Amazon™ sans donner ma « vraie » adresse E-mail, je peux utiliser « monadresse+amazon@example.com ». Je recevrais toujours les E-mails sur « monadresse@example.com », mais l’adresse E-mail spécifiée dans le « Pour : » (to:) contiendra le tag, ce qui me permet de savoir qui utilise cette adresse et donc de filtrer et rediriger ces E-mails vers un répertoire spécifique.
# Déplacer les E-mails de mon adresse +amazon vers un répertoire "amazon".
require ["envelope", "subaddress", "fileinto"];
if envelope :detail "to" "amazon" {
fileinto "INBOX/amazon";
}
Le comparateur :user vérifie la partie « nom » de l’adresse E-mail. Donc pour mon adresse « monadresse+amazon@example.com » il va vérifier « monadresse ». Le comparateur :detail lui va vérifier la part supplémentaire de l’adresse, ou « amazon » dans cet exemple. Vous pouvez en apprendre plus sur les sous-adresses et son extension en lisant cette page (en anglais).
Avec le filtre ci-dessous vous pouvez rediriger les E-mails de plusieurs sous-adresses dans des répertoires du même nom (tag).
require ["variables", "envelope", "fileinto", "subaddress"];
if envelope :is :user "to" "utilisateur" {
if envelope :matches :detail "to" "*" {
set :lower "name" "${1}";
}
if string :is "${name}" "" {
fileinto "INBOX";
} else {
fileinto "INBOX/${name}";
}
}
Marquer les messages d’une personne en particulier
Le filtre ci-dessous « marque » (étiquette) tous les messages provenant d’une adresse E-mail spécifique.
# marque tous les E-mails reçus de "vip@example.com"
require ["imap4flags","envelope"];
if envelope "from" "vip@example.com" {
setflag "\\Flagged";
stop;
}
Plus d’information
Les pages suivantes vous fourniront plus d’informations et d’exemples sur l’utilisation des filtres Sieve :
- https://fr.wikipedia.org/wiki/Sieve
- https://www.telecom-sudparis.eu/s2ia/user/doutrele/sieve/sieve.html
- https://p5r.uk/blog/2011/sieve-tutorial.html
- https://protonmail.com/support/knowledge-base/sieve/
- https://ceng.metu.edu.tr/server-side-mail-filtering-using-sieve
- https://support.tigertech.net/sieve
- https://doc.dovecot.org/configuration_manual/sieve/examples/
Gérer le Spam avec Sieve
Vous pouvez créer des filtres en utilisant des paramètres qui sont disponibles dans les entêtes d’un E-mail.
Filtrer le courrier indésirable
Pour créer un filtre pour les E-mails indésirables, vous pouvez utiliser X-GND-Status et X-GND-Score, avec les conditions suivantes :
L’entête X-GND-Status contient “SPAM” et l’entête X-GND-Score corresponds à [2-4][0-9][0-9] // le score est supérieur à 200.
Il est aussi possible de créer des filtres en utilisant les entêtes X-Spam-Flag et X-Spam-Levels avec les conditions suivantes :
L'entête X-Spam-Flag est “true” et l’entête X-Spam-Flag header contient “******' // niveau supérieur à 6 astérisques,
Filtrer les E-mails via des tags
Pour créer un filtre Sieve utilisant des tags qui leur ont été attribués, vous pouvez créer un filtre utilisant l’entête X-GND-Status avec la condition suivante :
L’entête X-GND-Status contient {tag}
Le système supporte les tags suivants :
- X-GND-Status: PCE: E-mail Commercial Professionnel détecté par l’analyse de la signature. Il s’agit typiquement de campaignes d’E-mailing de la part d’une plateforme professionnelle reconnue (ESP) qui adhère aux règles concernant la publicité par E-mail, c’est-à-dire comprenant des liens de désinscription, suppression de liste, etc…
- X-GND-Status: MCE: E-mail Commercial détecté et suivant les règles du marketing E-mail, mais provenant d’une plateforme inconnue.
- X-GND-Status: SOCIAL: Notifications et alertes des Réseaux Sociaux
- X-GND-Status: PURCHASE: E-mails de confirmation d’achats par Internet.
- X-GND-Status: ACCOUNT: E-mails envoyés pour confirmer la création ou la mise à jour d’un compte utilisateur.
- X-GND-Status: TRAVEL: E-mails envoyés pour confirmation de voyage (location de véhicule, d’agence de voyage, de réservation d’hôtel).
- X-GND-Status: FINANCE: E-mails envoyés concernant des informations financières (confirmation de virement bancaire, état de votre compte, etc..)
- X-GND-Status: ALERTING: E-mails concernant l’inscription à un service d’alerte (Google alerts, Yahoo alerts, real estate, etc.)
- X-GND-Status: BOUNCE: Notification d’un E-mail ne pouvant être délivré.
- X-GND-Status: SUSPECT: Un message dont le sujet peut potentiellement être « nuisibles » (ex. E-mails dont le contenu fait référence à des transferts d’argent)
Liste des extensions SIEVE supportée par Gandi
Vous trouverez ci-dessous une liste des extensions SIEVE disponibles sur les serveurs Mail de Gandi. Pour plus d’informations sur la manière d’utiliser ces extensions suivez les liens présents sur le nom de l’extension.
body | Vérifie la présence d’une ou plusieurs chaines de caractères dans le corps du message |
comparator-i;ascii-numeric | Extraits les chiffres d’un texte et les compare pour voir s’il y a concordance |
copy | Spécifie qu’une copie d’un E-mail doit être utilisée pour effectuer une action (comme transférer ou déplacer) |
date | Permet d’effectuer une action basé sur la date ou l’heure de réception ou d’envoi d’un E-mail |
duplicate | Teste si l’E-mail est un doublon |
encoded-character | Permet l’encodage de caractères spéciaux numériquement |
envelope | Permet de tester de parties de l’enveloppe, comme l’adresse « Pour : » ou « De: » |
extracttex | A utiliser avec « foreverypart », extrait une partie spécifique du texte et l’utilise comme une variable |
fileinto | Distribue le message dans un répertoire spécifique |
foreverypart | Permet d’effectuer des commandes sur chaque partie MIME d’un message |
ihave | Teste si une extension SIEVE est disponible et effectue une action selon le résultat |
imap4flags | Permet la configuration des Flags IMAP et des mots clés dans les messages |
include | Permet l’inclusion d’un script SIEVE dans un autre |
index | Permet la correspondance de champs des entêtes basée sur la position du texte dans la chaîne (par exemple à partir du 5ème caractère) |
mailbox | Vérifie qu’un répertoire spécifié existe |
mime | Permet des tests sur des parties MIME spécifiques d’un message |
regex | Permet l’utilisation d’expressions régulières |
reject | Refuse la distribution d’un message |
relational | Permet des comparaisons relationnelles de parties d’un message |
subaddress | Permet de tester des sous-parties d’une sous-adresse |
vacation | Permet les E-mails en réponse automatique |
variables | Ajoute le support des variables |
Tutoriel : Écrire en code Sieve
Tutoriel : Écrivez vos propres filtres SIEVE
Ce chapitre est un tutoriel pour vous montrer comment écrire des scripts utilisant le langage SIEVE. Il couvrira les éléments basiques pour son utilisation. Vous allez ainsi apprendre comment créer un script qui :
- Rejette les messages au-dessus d’une certaine taille
- Filtre les E-mails d’une liste dans un répertoire spécifique
- Filtre les E-mails avec un sujet « suspect » dans le répertoire « Junk »
Il y a beaucoup d’options possibles avec SIEVE, dont beaucoup ne seront pas couvertes pas ce tutoriel. Mais ce dernier devrait vous fournir les bases pour comprendre le fonctionnement des filtres SIEVE, comment ils sont structurés, de manière à ce que vous soyez en mesure de créer vos propres filtres avec les commandes disponibles. Une liste des commandes disponibles sur les serveurs mails Gandi est disponible ici. Quelques exemples de filtres sont aussi disponibles ici.
Note
Même si votre logiciel de messagerie est en français, les parties des messages ou les répertoires seront utilisés avec leur nom « standard », c’est-à-dire en anglais, sinon le filtre ne pourra pas les reconnaître. Par exemple « boite de réception » correspond à « INBOX » et « Pour : » » à « To : »
Lister les extensions utilisées
La première chose à faire lorsque vous écrirez un filtre SIEVE est de lister les extensions qui seront requises par le filtre.
Le noyau SIEVE est constitué de quelques commandes basiques incluses ainsi que d’extensions ajoutant des fonctionnalités supplémentaires. La première ligne de votre script sera donc la commande « require » suivie de la liste des extensions qui seront utilisées dans le filtre. Dans le filtre créé dans ce tutoriel vous aurez besoin des extensions « fileinto » et « reject ».
Votre première ligne ressemblera donc à ça :
require ["fileinto", "reject"];
La liste des commandes disponibles sur les serveurs mails Gandi est disponible ici.
Commentaires
Quand vous écrirez du code, les commentaires sont du texte qui n’est pas interprété (pas pris en compte) quand le code est traité. C’est une bonne idée de commenter votre code pour expliquer à d’autres ce que vous essayez de faire avec le code, voire pour vous quand vous devrez modifier le code après un certain délai.
Vous pouvez créer des commentaires dans SIEVE un utilisant le caractère dièse (#) ou “hashtag” pour passer la ligne qui suit en commentaire, comme ci-dessous :
# Ceci est un commentaire.
Ou vous pouvez créer un commentaire sur une portion de ligne, ou sur plusieurs lignes comme ceci :
/* Ceci est aussi un commentaire. */
/* Ceci
* est
* un commentaire
* sur plusieurs lignes. */ avec une partie hors commentaire.
Le filtre que vous créez via ce tutoriel inclus des commentaires pour mieux vous expliquer chaque étape. Votre filtre devrait ressembler à cela :
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
Créer des critères de filtrage
Le filtre commence par bloquer tous les E-mails dont la taille dépasse les 2 Mo. Mais vous devez d’abord dire au filtre ce que vous recherchez. Pour cela il faut rajouter une commande if (condition). N’oubliez pas d’ajouter un commentaire aussi. Avec le commentaire et la condition votre filtre devrait ressembler à cela :
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if
Ensuite il faut dire au filtre quelle partie du message il doit vérifier. Cela peut-être l’adresse « Pour : », l’adresse « De: », le sujet, la date d’envoi, etc… Dans ce cas le filtre doit vérifier la taille de l’E-mail, soit size
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size
Ensuite il faut fournir un critère au filtre pour qu’il effectue la comparaison de la condition au contenu du message. Ce « comparateur » doit toujours être précédé d’un double point. Pour ce filtre vous allez utiliser :over. Cela dit au filtre de regarder les messages dont la taille dépasse (ou over en anglais) la taille spécifiée. Dans notre cas la taille doit être 2000K, 2000 Ko soit 2 Mo.
Nous avons donné au filtre un ensemble de critères à « comparer ». Pour dire à votre filtre que la condition est finie, il faut utiliser une accolade ouverte : {. Votre filtre doit ressembler à cela maintenant :
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
Effectuer des actions sur un message filtré
Après avoir défini quels messages vous recherchez, vous devez dire au filtre ce qu’il doit faire des messages qu’il trouve. Cela se fait en définissant une action entre des accolades ({ et }). Toutes les actions qui seront entrées entre ces accolades seront appliquées si (et seulement si) la condition est vérifiée.
Il y a plusieurs actions possibles sur un E-mail, comme le déplacer dans un répertoire spécifique , l’effacer, le transférer, etc… Ce filtre utilise la commande reject pour refuser la distribution du message dans la boite de réception.
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
Après avoir écrit toutes les actions à appliquer dans le cas de la condition vérifiée, on « ferme » la partie des actions à appliquer avec une accolade fermée : }
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
}
Après cette étape, vous avez créé un script SIEVE parfaitement fonctionnel ! Nous pourrions nous arrêter là, mais il y a d’autres E-mails à filtres, donc continuons.
Ajouter d’autres critères
Vous voudrez sûrement filtrer vos messages pour d’autres raisons. Pour ajouter des critères additionnels vous pouvez utiliser l’instruction elsif. C’est un raccourci pour else if (sinon si ..) et cela permet d’indiquer au script que d’autres critères peuvent s’appliquer sur les messages traités par le filtre qui ne correspondent pas au premier critère.
Attention
Quand vous utilisez du code SIEVE tous vos filtres doivent être dans un fichier unique. Quand vous téléverser un nouveau fichier SIEVE sur le serveur de mail il va écraser tout fichier existant. Autrement dit ne créez pas un nouveau fichier pour un nouveau filtre, mais éditez le fichier existant ou vos anciens filtres seront perdus.
Pour le prochain critère le filtre va déplacer tous les E-mails en provenance d’une mailing list dans un répertoire dédié. Pour commencer vous allez utiliser elsif :
# Mails from a mailing list will be put into the folder "mailinglist"
elsif
Pour cela le filtre a besoin de regarder la partie adresse du message. Comme vous recherchez une correspondance exacte sur l’ensemble de l’adresse vous allez utiliser le comparateur :is (est).
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is
Maintenant que vous avez spécifié quelle partie du mail vérifier, vous devez préciser le critère à rechercher pour la comparaison. Le filtre va vérifier les deux adresses « Pour : » (To) et « De: » (From) du message et appliquer les actions si l’une d’entre elle est « mailinglist@example.com ». Ceci se fait en utilisant des « crochets » ([ et ]) suivis par l’adresse :
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
Lorsque nous ajoutons l’accolage « fermée » pour clore la condition, le script ressemble à cela :
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
}
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
Déplacer des mails vers un répertoire particulier
Une des utilisations les plus fréquentes de SIEVE est de déplacer les E-mails dans des répertoires spécifiques. Cela se fait via la commande fileinto. Cette commande déplace l’E-mail dans le répertoire indiqué.
Dans le cas de ce filtre nous allons envoyer les messages en provenance ou envoyés vers « mailinglist@example.com » dans un répertoire « Mailinglist ». Comme ce répertoire sera un sous répertoire de la boîte de réception, nous allons utiliser « INBOX/mailinglist ».
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
fileinto "INBOX/mailinglist";
}
À cette étape le filtre complet doit ressembler à cela :
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
}
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
fileinto "INBOX/mailinglist";
}
Tester plusieurs critères en une fois
Pour tester plusieurs critères en une fois, vous pouvez utiliser les instructions anyof (n’importe quelle (sous-entendu « condition »)) ou allof (toutes). L’instruction anyof va effectuer l’action tant qu’au moins une des conditions des critères est valide. allof n’effectuera l’opération que si tous les critères sont valides. Ce filtre va utiliser anyof :
# si cet E-mail ne m'est pas adressé ou si le sujet contient "free money" "Nigerian
# prince" mets le dans spam.
elsif anyof
Il vous faut ensuite placer les différents critères de tri entre parenthèses, séparés par un virgule. Le premier critère va rechercher tout E-mail qui n’est pas adressé directement à votre adresse (par exemple « myemailaddress@example.com »). Pour afficher une critère négatif (dans ce cas tout message non envoyé à votre adresse,) ajoutez not au début du critère. Beaucoup d’E-mails sont envoyés à plus d’une adresse, le filtre utilise :contains (contient) de manière à ce que l’ensemble des « Pour : », « Copie à: » ou « Copie cachée à: » (to, cc, bcc) ne doivent pas correspondre exactement.
# si cet E-mail ne m'est pas adressé ou si le sujet contient "free money" "Nigerian
# prince" mets le dans spam
elsif anyof (not address :all :contains ["To", "Cc", "Bcc"] "myemailaddress@example.com",
Le critère suivant va rechercher des mots clés dans le sujet du mail. Cette fois ci vous allez utiliser le comparateur :matches. Ce dernier est assez similaire à :contains mais il vous permet d’inclure des « jokers ». Le joker * signifie que n’importe quoi peut remplacer ce caractère. Ainsi *free money* cherche n’importe quelle combinaison de caractères du moment que « free money » apparaît quelque part dans le texte. Le script avec ce critère ressemble à ça :
# si cet E-mail ne m'est pas adressé ou si le sujet contient "free money" "Nigerian
# prince" mets le dans spam.
elsif anyof (not address :all :contains ["To", "Cc", "Bcc"] "myemailaddress@example.com",
header :matches "Subject" ["\*free money\*", "\*Nigerian Prince\*"]) {
L’étape finale de ce filtre va être d’utiliser fileinto pour envoyer ces E-mails dans le répertoire de spam. Avec cette partie ajoutée le script ressemble à :
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
}
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
fileinto "INBOX/mailinglist";
}
# si cet E-mail ne m'est pas adressé ou si le sujet contient "free money" "Nigerian
# prince" mets le dans spam.
elsif anyof (not address :all :contains ["To", "Cc", "Bcc"] "myemailaddress@example.com",
header :matches "Subject" ["\*free money\*", "\*Nigerian Prince\*"]) {
fileinto "INBOX/spam";
Envoyer les mails restants vers un répertoire
Pour la dernière commande dans le filtre, nous allons envoyer tous les E-mails qui ne correspondent à aucun des critères définis dans un répertoire de « atrier ». Notez que cela n’est pas une partie obligatoire d’un script SIEVE. SIEVE considère de base que tous les E-mails qui ne sont pas « interceptés » par un filtre doivent simplement rester dans la boite de réception. Ce filtre est juste pour vous montrer comment traiter les messages restants après filtrage.
# Mets les mails restant dans un répertoire pour que je les trie plus tard.
else {
fileinto "INBOX/atrier";
}
Avec cette dernière commande notre script est maintenant finalisé.
# mon filtre SIEVE
# Liste des extensions utilisées par le script
require ["fileinto", "reject"];
# Les messages supérieurs à 2 Mo seront rejetés avec un message d erreur
if size :over 2000K {
reject "Je ne peux accepter des messages supérieur à 2 Mo.";
}
# E-mails en provenance de ou pour "mailinglist@example.com iront vers "Mailinglist"
elsif address :is ["From", "To"] "mailinglist@example.com"
fileinto "INBOX/mailinglist";
}
# si cet E-mail ne m'est pas adressé ou si le sujet contient "free money" "Nigerian
# prince" mets le dans spam.
elsif anyof (not address :all :contains ["To", "Cc", "Bcc"] "myemailaddress@example.com",
header :matches "Subject" ["\*free money\*", "\*Nigerian Prince\*"]) {
fileinto "INBOX/spam";
# Mets les mails restant dans un répertoire pour que je les trie plus tard.
else {
fileinto "INBOX/atrier";
}
Normalement à cette étape vous devriez avoir saisi le principe de fonctionnement d’un script SIEVE et de ses éléments. Rappelez vous qu’un script SIEVE est flexible et qu’il y a beaucoup d’options disponibles. Une liste des commandes disponibles sur les serveurs mails Gandi est disponible ici :
https://docs.gandi.net/fr/gandimail/sieve/extensions_sieve.html
Quelques exemples de filtres sont aussi disponibles ici :
https://docs.gandi.net/fr/gandimail/sieve/exemple_filtres.html