Utilisation des filtres sieves sur le serveur de courrier
Éric Doutreleau <Eric.Doutreleau@int-evry.fr>
9 juin 2003
Abstract:
Ce document décrit sommairement l'utilisation des filtres sieve sur
le serveur de courrier. Ce n'est en rien une présentation exhaustive
de toutes les fonctionnalites.
Vous trouverez dans les liens suivants des formats plus appriopriés
à d'autres usage que la consultation sur le WWW.
- Texte
- http://www.int-evry.fr/mci/user/doutrele/sieve/sieve.txt
- Postscript
- http://www.int-evry.fr/mci/user/doutrele/sieve/sieve.ps
- PDF
- http://www.int-evry.fr/mci/user/doutrele/sieve/sieve.pdf
L'utilisation des filtres sur le serveur repond a un besoin fondamental
de la messagerie electronique:
Pouvoir faire des pre traitements automtique sur le courrier qui nous
est adressé. Cela s'appplique par exemple au cas suivant:
- Faire suivre son courrier en son absence
- Mettre en place un répondeur automatique
- Rejeter du courrier suivant des critères précis
- Préclasser le courrier dans différentes boites.
Historiquement sur les machines UNIX possédant une messagerie SMTP
cela se faisait en éditant un fichier .forward qui
se trouvait dans le compte UNIX de l'utilisateur et qui faisait appel
à différents programmes.
Dans le serveur cyrus une boîte au lettre n'est pas rattaché à un
compte unix. Il faut donc trouver un autre mécanisme.
Sieve est un un language qui permet d'écrire des filtres pour le courrier
électronique. Nous verrons par la suite comment placer ces scripts
sur le serveur.
De bon exemples étant plus explicite que de long discours voici quelques
exemples de script
-
- if size :over 100K { /* this is a comment
this is still a comment */
discard /* this is a comment */ ; }
Si le mail depasse les 100 kilo octet il sera effacé de manière silencieuse
-
- require "reject";
if size :over 100K {
reject "trop gros" ;}
Si le mail dépasse les 100 kilo octet il sera effacé et un message
sera envoyé à l'expéditeur indiquant que le courrier na pas été mis
livré pour la raison indiqué
-
- require "reject";
if header :contains "From" "toto@int-evry.fr" { reject "Go away spammeur";
}
Si un mail arrive et qu'il est expédié par toto@int-evry.fr il sera
automatiquement effacé et un courrier d'avertissement sera renvoyé
à l'expéditeur.
-
- redirect "toto@int-evry.fr"
Tout le courrier sera redirigé vers l'adresse toto@int-evry.fr
-
- redirect "toto@int-evry.fr";
keep;
La même chose que précedement mais on garde une copie locale.
-
- require ["vacation","reject"];
vacation :days 7 :addresses "toto.titi@int-evry.fr" text:
Je ne vais pas lire mon courrier pendant un certain temps.
Je le lirai à mon retour.
.
;
Ici on active le répondeur automatique
- On répond au mail adressé à toto.titi@int-evry.fr
- On ne renvoie pas de nouveaux avant 7 jours pour le même expéditeur.
- Le message est celui indiqué dans la variable text.
L'INT a installé pour une période de tests une passerelle anti-spam
Mailscanner. Cette passerelle note les messages et indique
la note dans l'entête du message.
Voici ce que l'on doit placer dans son filtre sieve si on veut
-
- Placer dans une boîte les messages avec un score de 5
Effacer les messages avec un score de 20
Voila enfin un exemple plus complexe ou suivant les Entêtes du courrier
on va placer le courrier dans différentes boîtes.
-
- "require "fileinto";
if header :is "From" "Norton_AntiVirus_Gateways@int-evry.fr" {
fileinto "shared.mci.virus";}
elsif address :contains :all ["to", "cc", "bcc"] "openh323@openh323.org"
{ fileinto "INBOX.video";}
elsif allof (address :contains ["from"] "Cron Daemon")
{ fileinto "shared.mci.cron";}
else {
fileinto "INBOX";
}
Cela se fait de manière fort simple. Il suffit de se connecter sur
une des machines LINUX de MCI et d'utiliser la commande sieveshell.
Un exemple d'utilisation:
-
- sieveshell -user=doutrele -authname=doutrele molure
connecting to molure
Please enter your password:
>
- l'option -user indique l'utilisateur dont on va modifier
les filtres
- l'option -authname indique l'utilisateur sous l'indentité
on va travailler.
Pour la majorité des personnes ces deux paramètres sont égaux à votre
login
On rentre alors dans une interface qui ressemble à un client ftp.
On peut lister , recuperer ou telecharger un filtre.
-
- > ls
filter.sieve <- active script
> put toto.sieve
> ls
filter.sieve <- active script
toto.sieve
On peut stocker plusieur scripts mais un seul peut être actif à la
fois. On active le script voulu par la commande activate.
Voici l'aide complète de sieveshell
-
- Usage: sieveshell [-u username] [-a authname] [-r realm] <server>
help - this screen list -
list scripts on server
put <filename> [<target name>] - upload script to server
get <name> [<filename>] - get script. if no filename display to stdout
delete <name> - delete script.
activate <name> - set a script as the active script
deactivate - deactivate all scripts
quit - quit
Pour les personnes allergiques à la programmation il existe une interface
WWW qui offre moins de fonctionnalités mais qui est plus simple d'utilisation.
Vous trouverez cette passerelle WWW à l'url suivante:
https://email.int-evry.fr/cgi-bin/easysieve.pl
On peut effectuer les opérations suivantes:
- Faire suivre son courrier
- Activer le répondeur automatique.
Ce sont bien souvent les seules fonctionnalités utilisées par les
utilisateurs.
Vous trouverez de la documentation sur sieve aux url suivantes:
- RFC
- http://www.faqs.org/rfcs/rfc3028.html
- Ressources diverses
- http://www.cyrusoft.com/sieve/
Utilisation des filtres sieves sur le serveur de courrier
This document was generated using the
LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -long_titles 20 -no_subdir -split 0 -show_section_numbers -address 'Eric Doutreleau ' sieve.tex
The translation was initiated by Eric Doutreleau on 2004-10-08
Eric Doutreleau