Table of Contents
Filtrer ses emails avec sieve
sieve cyrus imap
Ceci est un memo pour éviter d'avoir a rechercher les infos chaque fois que j'ai un filtre qui change.
Vérifier que le serveur est lancé
Dans /etc/cyrus.conf, vérifier que sieve est présent dans les services:
SERVICES { [...] sieve cmd="timsieved" listen="sieve" prefork=0 maxchild=100 [...] }
Vérifier que sieve est correctement en écoute sur le port 2000 (par défaut):
# grep sieve /etc/services sieve 2000/tcp # Sieve mail filter daemon # netstat -tpan |grep 2000 tcp 0 0 0.0.0.0:2000 0.0.0.0:* LISTEN 3336/cyrmaster tcp6 0 0 :::2000 :::* LISTEN 3336/cyrmaster
Connection a Sieve
julien@zerhuel:~$ sieveshell -u julien -a julien localhost connecting to localhost Please enter your password: > ls filters_julien.sieve <- active script > get filters_julien.sieve Filtre_Sieve_Julien require ["fileinto","envelope","reject","vacation","imapflags","relational","comparator-i;ascii-numeric","regex","notify"]; } if header :contains "X-Spam-Flag" "YES" { fileinto "user.julien.Spam"; stop; } > quit
On se connecte au Shell de Sieve avec le nom d'utilisateur du compte. La commande ls (ou list) permet de lister les scripts présent et montre celui actuellement actif. get permet de récupérer le script voulu (le deuxième argument est le fichier de sortie).
Editer les filtres
En local, avec un éditeur de texte, il faut modifier le fichier de filtres.
Chaque fichier de filtre doit commencer avec la ligne require :
require ["fileinto","envelope","reject","vacation","imapflags","relational","comparator-i;ascii-numeric","regex","notify"];
Ensuite, on écris les régles entre des sections du type :
if header :contains "X-Spam-Flag" "YES" { fileinto "user.julien.Spam"; stop; }
exemples (de la RFC) :
if header :contains "from" "coyote" { discard; } elsif header :contains ["subject"] ["$$$"] { discard; } else { fileinto "INBOX"; }
if header :contains ["From"] ["coyote"] { redirect "acm@example.edu"; } elsif header :contains "Subject" "$$$" { redirect "postmaster@example.edu"; } else { redirect "field@example.edu"; }
Les parametres testables sont listés ici : http://rfc-ref.org/RFC-TEXTS/3028/chapter5.html
On peut aussi ajouter des actions, comme addflag “\\Seen” qui va marquer le message comme vu dans le serveur Imap.
if header :contains "X-Spam-Flag" "YES" { addflag "\\Seen"; fileinto "user.julien.Spam"; stop; }
Charger les filtres
$ sieveshell -u julien -a julien localhost connecting to localhost Please enter your password: > put filter_sieve > list filters <- active script filter_sieve > activate filter_sieve > list filters filter_sieve <- active script > quit
- On se connecte
- la commande put permet de charger un fichier, le nom correspond au fichier local
- list permet de lister les fichiers present dans le compte sieve
- activate permet de déterminer le fichier de filtres a utiliser
C'est tout :)
~~DISCUSSION~~