====== Filtrer ses emails avec sieve ======
{{tag>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 [[http://rfc-ref.org/RFC-TEXTS/3028/chapter3.html|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|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~~