Exemples de filtres Sieve

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’écrive 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 emails de renouvellement dans un répertoire « Renouvellements »

Ce filtre va rediriger tout email en provenance de « support-renew@gandi.net » vers un sous répertoire de votre boite de réception nommé « Renouvellements ».

# Send emails 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'email 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 email que vous créez « à la volée » en ajoutant « +tag » à la partie « nom » d’une adresse email. Par exemple si je veux créer un nouveau compte sur Amazon™ sans donner ma « vraie » adresse email, je peux utiliser « monadresse+amazon@example.com ». Je recevrais toujours les emails sur « monadresse@example.com », mais l’adresse email 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 emails vers un répertoire spécifique.

# Déplacer les emails 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 email. 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 emails de plusieurs sous-adresses dans des répertoires du même nom (tag).

require ["variables", "envelope", "fileinto", "subaddress"];

if envelope :is :user "to" "edvil" {
  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 email spécifique.

# marque tous les emails reçus de "vip@example.com"
require ["imap4flags","envelope"];
if envelope "from" "vip@example.com" {
  setflag "\\Flagged";
  stop;
}