Messagerie : exemple de filtre sieve

Boris HUISGEN
Boris HUISGEN
|

Voici un exemple de filtre sieve incluant le filtre global spam.sieve ainsi que le filtre personnel vacation.sieve (dont la ligne sera à décommenter pour être actif).

Il y a quelques règles pour flager les mails (TODO, monitoring, etc), les classer (cron, mailings) et les marquer automatiquement comme lus.

require "fileinto";
require "imap4flags";
require "include";
require "regex";

include :global "spam.sieve";
#include :personal "vacation.sieve";

# important
if anyof (
    address "from" "alert@hbis.fr",
    header :regex ["subject" ][".*security alert.*" ]) {
  addflag "$label1"; # important
}

# todo
if header :regex ["subject" ] [".*TODO.*" ] {
  addflag "$label4"; # todo
}

# mailings
if exists "List-Id" {
  fileinto "INBOX.mailings";
}

# backup
if header :regex ["subject" ] [
    ".*backup.*" ] {
  fileinto "INBOX.admin.backup";
}

# cron
if exists "X-Cron-Env" {
  fileinto "INBOX.admin.cron";
}

# periodic
if header :regex ["subject" ] [
    ".* security run output",
    ".* monthly run output",
    ".* daily run output",
    ".* weekly run output" ] {
  fileinto "INBOX.admin.periodic";
}

# awstats
if header :regex ["subject" ] [
    "awstats report" ] {
  fileinto "INBOX.admin.awstats";
  setflag "\\seen";
}

Le script ci-dessous est un exemple de répondeur automatique, dont les notifications sont limitées à une seule notification par jour (pour un même expéditeur) :

require "vacation";

vacation
  :days 1
  :subject "Out of office"
  "I'm currently out of office.";

N’oubliez pas que les options disponibles dépendent de l’implémentation et des extensions de votre serveur SIEVE.

Boris HUISGEN
Boris HUISGEN
Blog owner
  • #sieve