Configuration de vos filtres de messagerie

Introduction

Un filtre de messagerie permet de faire automatiquement diverses opérations sur votre courrier électronique au moment où il est reçu. Par exemple déplacer le mail dans un sous-dossier selon l'expéditeur ou le sujet, répondre automatiquement au courrier en cas d'absence, supprimer automatiquement des mails indésirables, ...

Les clients de messagerie offre la possibilité de créer des filtres. Mais il existe également la possibilité de créer des filtres directement sur le serveur de messagerie.

Avantages :

  • Si vous utilisez plusieurs ordinateurs il n'est pas nécessaire de créer des filtres sur chaque client de messagerie.

  • Permet d'avoir du courrier rangé automatiquement même si vous utilisez le webmail.

Inconvénient :

  • Il y a moins de possibilités sur le serveur que sur votre client de messagerie. Néanmoins rien ne vous empêche d'utiliser les deux de façon complémentaire.

Mode standard

Créer un filtre

Si aucun filtre n'a été défini il faut cliquer sur le bouton permettant de créer un premier filtre.

Sinon l'aspect est un peu différent : le filtre peut se placer directement entre deux filtres existants, selon l'ordre d'analyse souhaité. Il faut donc cliquer sur le bouton à droite du texte « insérer après », du filtre en-dessous duquel on souhaite créer un nouveau filtre.

On commence par donner un nom à ce filtre dans le champ de texte situé à côté des mots « Filtre appelé ».

Définir une ou plusieurs conditions

Pour qu'une action soit effectuée sur un courrier il faut que celui-ci obéisse à une ou plusieurs conditions précises.

On peut demander que le filtre s'applique à tous les messages. Il suffit alors de cocher la case « Sélection de tous les messages ».

Sinon on peut créer une condition sur :

  • L'expéditeur.

  • Le destinataire.

  • Le sujet du mail.

  • Le niveau de spam détecté par le serveur (pour experts, voir également le réglage antispam de votre compte de messagerie : https://osiris.unistra.fr/applis/authiris/bin/baledit ).

  • Le corps du message.

  • Un champ d'entête précis du courrier (pour experts).

Si on a choisi plusieurs conditions, on peut soit demander que les actions soient effectuées si toutes les conditions sont vraies à la fois (ET) ou alors seulement si au moins une condition est vraie (OU).

On peut également créer une condition par négation (« contient / ne contient pas »).

Enfin la condition peut soit être explicite (une chaine de caractère précise), soit être une expression régulière utilisant des métacaractères (pour experts).

Pour ajouter une autre condition, cliquer sur le bouton « + » à côté d'une condition déjà remplie.

Le bouton « - » sert lui à supprimer une condition.

Définir une ou plusieurs actions

On peut :

  • Déposer le message dans un sous-dossier de la boîte de réception : écrire alors le nom exact de ce sous-dossier dans le champ de texte qui apparaît à côté. S'il n'existe pas, le serveur le créera automatiquement.

  • Répondre automatiquement avec un message précis à écrire dans le champ de texte qui apparaît à côté (voir également https://osiris.unistra.fr/applis/authiris/bin/baledit pour activer un répondeur sans créer de filtre).

  • Transférer le message à une autre adresse mail que l'on écrit dans le champ de texte qui apparaît à côté.

  • Supprimer directement le mail.

  • La dernière condition « Stopper ici le filtrage » permet de dire au serveur de ne pas se soucier des autres filtres pour ce mail.

Pour ajouter une autre action, cliquer sur le bouton « + » situé à côté d'une action déjà remplie.

Le bouton « - » sert lui à supprimer une action.

Les flèches haute et basse servent à déplacer l'ordre d'exécution des actions par le serveur.

Quand vous avez fini de créer des filtres, n'oubliez pas de les enregistrer (bouton « enregistrer » en haut et en bas de la page).

Divers

  • Quand on affiche les filtres existants, ceux-ci sont « repliés » par défaut pour gagner de la place à l'écran. Pour faire apparaître un filtre il faut donc cliquer sur le bouton « voir » situé à côté de son nom. On peut ensuite replier le filtre en cliquant sur le même bouton dont l'intitulé est devenu « masquer ».

  • Si on veut changer l'ordre d'examen des filtres par le serveur il suffit de se servir des flèches haute et basse situé à côté du bouton « voir/masquer ».

  • On peut choisir une période ou une date limite de validité pour le filtre à l'aide de la liste déroulante « validité ». On a le choix entre :

  • Validité permanente.

  • Date limite de validité.

  • Période de validité (exemple ci-dessous).

  • Pour supprimer un filtre il suffit de cliquer sur l'icône « corbeille » à droite du bouton « Insérer après ».

     

Exemples

  • Si l'expéditeur est di-infra@unistra.fr, ranger le mail dans le dossier « di-infra » de ma boîte de réception :

  • Si le sujet du mail contient [urgent], répondre « Désolé je ne suis pas disponible mais ce mail a été transféré à toto@unistra.fr » et réaliser le transfert du courrier vers toto@unistra.fr. Le filtre s'appliquera entre le 11/05/2010 et le 01/06/2010 :

Mode expert

L'application Authiris vous permet de définir vos propres filtres en mode standard ou en mode avancé qui seront pris en compte sur le serveur de messagerie, c'est à dire que chaque message sera trié lorsqu'il arrivera sur le serveur.

Ainsi, quel que soit le logiciel utilisé pour lire le contenu de votre boîte aux lettres (Thunderbird, Webmail, autre), vous retrouverez toujours vos courriers ordonnés comme vous le souhaitez.

Chaque message peut :

  • être trié dans une boîte aux lettres spécifique selon vos critères
  • être transféré vers une autre adresse électronique, par exemple si vous êtes en déplacement ou si vous souhaitez rediriger des messages spécifiques vers une ou plusieurs autres personnes
  • provoquer une réponse automatique, par exemple lorsque vous êtes absent
  • être supprimé, par exemple si c'est un message indésirable

Principe et structure

La page Web d'édition des filtres associe à votre boîte aux lettres une spécification de filtrage, selon un langage clair et rigoureux. Ce langage définit une succession de filtres, ayant le format suivant :

filter NUMERO NOM {
select ... {
...
}
actions {
...
}
}
filter NUMERO NOM {
...
}
...

Nom et numéro de filtre

Chaque filtre porte un numéro et un nom. Le numéro est important car les filtres sont évalués dans l'ordre des numéros. Le nom, si vous le choisissez bien, vous permet de repérer facilement et rapidement l'objet d'un filtre sans avoir à le lire entièrement.

Sélecteur

Le sélecteur définit à quels messages s'appliquent les actions. Vous pouvez sélectionner tous les messages, ou sélectionner seulement certains basés :

 

  • sur le niveau de Spam identifié par l'anti-spam du relais de messagerie Osiris, ou
  • sur la valeur de champs d'en-tête : tel émetteur, tel sujet, tel destinataire, etc., ou
  • sur le corps (contenu) du message

Actions

Une fois le message sélectionné, une ou plusieurs actions sont appliquées, qui peuvent être les suivantes :

  • deliver : dépose le message dans le dossier spécifié, qui sera automatiquement créé sur le serveur s'il n'existe pas déjà
  • vacation : envoie une réponse automatique (sauf si votre correspondant a déjà reçu cette même réponse automatique il y a moins de 7 jours)
  • redirect : renvoie le message vers une autre adresse
  • discard : supprime le message
  • break : arrête l'évaluation des filtres.

Les filtres sont exécutés l'un après l'autre dans l'ordre des numéros, sauf si une action break arrête l'évaluation. De même, à l'intérieur d'un filtre, toutes les actions sont exécutées en séquence, sauf si une action break arrête l'évaluation. Ceci vous permet par exemple :

  • de sélectionner un message spécifique et d'exécuter deux actions qui sont de le message dans un dossier spécifique et d'en transmettre une copie à un collègue (les deux actions s'enchaînent sans break), ou
  • de ranger un message dans un dossier spécifique et d'arrêter (avec break) l'évaluation pour éviter que ce même message soit conservé dans votre dossier de réception.

Validité

Chaque filtre peut comporter une période de validité. Ainsi, si vous partez en vacances du 14/07/2007 au 15/08/2007, vous pouvez mentionner le filtre suivant :

	filter 1 repondeur {
valid { 14/07/2007 15/08/2007 }
select and {
not spam 5
}
actions {
vacation "Je serai en vacances jusqu'au 16 aout au matin
je prends bonne note de votre message et je vous
répondrai à mon retour."
}
}

Le filtre ne sera activé que le 14 juillet 2007 à 0h et sera désactivé le 15 août 2007 à 23h59. Les messages sélectionnés sont ceux qui n'ont pas été détectés comme du spam (niveau inférieur à 5). Une réponse est générée. Comme il n'y a pas de break, l'évaluation se poursuit ce qui déclenchera vraisemblablement le dépot du message dans le dossier de réception.

Dossiers

Si vous souhaitez trier vos messages lors de la réception, vous devez utiliser l'action deliver suivie d'un nom de dossier de votre choix, ce dossier étant automatiquement créé pour vous sur le serveur. Un dossier peut être lui-même rangé dans un autre dossier, et ainsi de suite. Par exemple :

  • / : dossier de réception par défaut
  • /mon-ufr : dossier de nom mon-ufr
  • /amis/toto : sous-dossier toto dans le dossier amis
  • /travail/recherche/2006/projet-truc/collaborations : sous-dossier collaborations dans le sous-dossier projet-truc etc.

Chaînes et expressions régulières

Un certain nombre d'éléments du langage sont des chaînes :

  • nom d'un filtre
  • chaîne à chercher (dans un en-tête ou dans le corps)
  • message du répondeur
  • nom de dossier
  • adresse de transfert
  • etc.

Les chaînes doivent être placées entre guillemets (caractère « " »). Lorsqu'il n'y a pas d'espace ou de caractère spécial (du type accolade, barre oblique inverse, etc.), les guillemets peuvent être omis. Lorsque le filtre est enregistré, les guillemets sont automatiquement ajoutés.

Certains sélecteurs de messages peuvent contenir des expressions régulières. Voir le manuel d'expressions régulières pour plus d'informations.

Filtres système

Vous pouvez utiliser les numéros de filtre supérieurs à 10 et inférieurs à 990. Les numéros inférieurs à 10 ou supérieurs à 990 sont réservés pour des « filtres système », qui correspondent à l'interface simple de gestion de boîte aux lettres.

Vous pouvez vous-même définir ou modifier ces « filtres système », sous réserve de conserver les éléments fondamentaux (numéro du filtre, nom du filtre, critère de sélection, action). Un « filtre système » peut être absent, mais s'il est présent, il doit avoir une syntaxe bien précise.

Vous trouverez ci-dessous les « filtres système » que l'on peut définir, avec en majuscules les éléments que vous pouvez modifier.

	filter 1 "repondeur" {
VALID ... # période de validité optionnelle
select and {
not spam NIVEAU # 5 par défaut
}
actions {
vacation "MESSAGE"
}
}
filter 2 "transfert" {
VALID ... # période de validité optionnelle
select all
actions {
redirect "ADRESSE" # adresse de destination
}
}
filter 3 "pas_de_copie_locale" {
VALID ... # période de validité optionnelle
select all
actions {
discard
break
}
}
filter 4 "antispam" {
VALID ... # période de validité optionnelle
select and {
spam NIVEAU # 5 par défaut
}
actions {
deliver "/Spam"
break
}
}
filter 999 "inbox" {
select all
actions {
deliver "/"
break
}
}

Exemples, trucs et astuces

Tri des courriers envoyés par des personnes en particulier

Je veux classer tous les courriers émis par les personnes de mon équipe dans un dossier spécifique :

	filter 50 "equipe" {
select or {
string header "From" "Jacques.Selere@mon-labo.unistra.fr"
string header "From" "Jean.Braye@mon-labo.unistra.fr"
string header "From" "Jean.Darme@mon-labo.unistra.fr"
string header "From" "Paul.Hisse@mon-labo.unistra.fr"
string header "From" "Harry.Cover@labo-associe.stanvard.edu"
}
actions {
deliver "/travail/equipe"
break
}
}

Tri des courriers envoyés à une adresse

J'organise une conférence PPOIS'07 (sur la culture des petits pois), j'ai demandé  à avoir une adresse électronique secondaire (ppois07@monlabo.unistra.fr), et je veux classer tous les courriers envoyés à cette adresse dans un dossier spécifique.

	filter 130 "ppois" {
select and {
string dest "ppois07@monlabo.unistra.fr"
}
actions {
deliver "/ppois"
break
}
}

Tri sur plusieurs critères

Pour la conférence PPOIS'07 (cf ci-dessus), je souhaite rediriger tous les courriers relatifs aux inscriptions au secrétariat du laboratoire.

	filter 120 "ppois-inscr" {
select and {
string dest "ppois07@monlabo.unistra.fr"
string header "Subject" "inscription"
}
actions {
redirect "secretariat@monlabo.unistra.fr"
}
}

Comme ce filtre est évalué avant le précédent (numéro 120 inférieur à 130), le champ "Subject" du courrier est examiné, et les courriers sont redirigés vers le secrétariat. Comme il n'y a pas de break, les messages sélectionnés continuent leur évaluation en séquence, et seront également pris en compte par la règle 130, plus générale.

Tri des courriers envoyés à une liste de diffusion

Je souhaite classer le bulletin d'information de l'UdS, envoyé sur la liste « info@unistra.fr » dans un dossier que je lis prioritairement.

	filter 610 "une-liste" {
select and {
string header "List-Id" "info@unistra.fr"
}
actions {
deliver "/urgent"
break
}
}

Pour rédiger ce filtre, une analyse des en-têtes du message a été effectuée pour déterminer le champ du robot de liste de diffusion utilisé. Ici, le robot Sympa utilise le champ normalisé « List-Id: ».

Tri de courriers envoyés par un automate

L'appareil électro-radio-spectro-expanseur-de-champ-magnéto-de-masse de mon laboratoire est capable d'envoyer automatiquement des courriers toutes les 10 minutes pour me permettre de suivre la manip en cours. Ces courriers ont un sujet spécifique, qui peut avoir l'une des formes suivantes :

  • Subject: experiment NN init
  • Subject: experiment NN data
  • Subject: experiment NN debug
  • Subject: experiment NN failure
  • Subject: experiment NN end

La valeur NN est le numéro de l'expérience. Je souhaite ignorer les messages de mise au point (debug), classer les messages normaux, et déposer les messages d'échec dans mon dossier de réception.

	filter 350 "manip-debug" {
select and {
string header "From" "automate@mon-labo.unistra.fr"
regexp header "Subject" "experiment [0-9]+ debug"
}
actions {
discard
break
}
}
filter 360 "manip-ok" {
select and {
string header "From" "automate@mon-labo.unistra.fr"
regexp header "Subject" "experiment [0-9]+ (init|data|end)"
}
actions {
deliver "/ma-manip"
break
}
}

Syntaxe

Spécification EBNF

La spécification du langage de filtre en notation EBNF est la suivante :

        specification ::= filtre*

filtre ::= "filter" numero nom { validite selection actions }

validite ::= (rien)
| "valid" { dates }

dates ::= (rien)
| date-fin
| date-deb date-fin
date-fin ::= jj/mm/aaaa
date-deb ::= jj/mm/aaaa

selection ::= "select" "all"
| "select" and-or { exp-critere* }
and-or ::= "and"
| "or"
exp-critere ::= critere
| "not" critere
critere ::= "spam" niveau
| "regexp" expr
| "string" expr
expr ::= "dest" chaine
| "header" champ chaine
| "body" chaine
champ ::= chaine

actions ::= "action" { action* }
action ::= "redirect" adresse
| "vacation" message
| "deliver" dossier
| "discard"
| "break"
message ::= chaine
dossier ::= chaine
adresse ::= chaine

Les numéros et les noms des filtres doivent être uniques (numéro unique, et nom unique).

Représentation des chaînes

Une « chaine » est une suite de caractère avec ou sans guillemets. S'il y a un caractère spécial (retour-chariot, espace, guillemet barre oblique inverse « \ »), il faut impérativement mettre des guillemets. De plus, quand la chaîne contient elle-même des guillemets ou barres obliques inverses, il faut mettre « \ » devant.

Exemples :

Chaîne Représentation
toto toto (ou "toto")
5 5 (ou "5")
cou cou "cou cou"
" "\""
\ "\\"
' ' (ou "'")
{} {} (ou "{}")
{ } "{ }"

Signification des critères de sélection

Critère Description
spam niveau spécifie le niveau minimum de Spam tel qu'identifié sur les relais de messagerie Osiris (0 = pas spam, 5 = seuil par défaut de l'anti-spam Osiris, 10 = spam absolument certain)
string dest adresse sélectionne le message si l'adresse est spécifiée dans un des champs de destinataire (champ « To » ou « Cc »)
string header champ chaine sélectionne le message si la sous-chaîne « chaine » est contenue dans le champ d'en-tête « champ »
string body chaine sélectionne le message si la sous-chaîne « chaine » est contenue dans le corps du message (et pas dans l'en-tête)
regexp dest adresse sélectionne le message si l'adresse, reconnue comme une expression régulière, est spécifiée dans un des champs de destinataire (champ « To » ou « Cc »)
regexp header champ chaine sélectionne le message si la sous-chaîne « chaine », reconnue comme une expression régulière, est contenue dans le champ d'en-tête « champ »
regexp body chaine sélectionne le message si la sous-chaîne « chaine », reconnue comme une expression régulière, est contenue dans le corps du message (et pas dans l'en-tête)

Chaque critère de sélection peut être inversé par l'utilisation de « not ». Par exemple, le filtre système 1 (répondeur) n'envoie de réponse qu'aux messages qui ne sont pas identifiés comme des spams. De même, le critère « not string header From toto@ailleurs.fr » sélectionne les messages qui ne proviennent pas de l'utilisateur spécifié.

Chaînes et sous-chaînes

Attention : les adresses et les chaînes mentionnées dans les critères string et regexp sont des « sous-chaînes ». Par exemple :

  • string dest "pois" : ce critère sélectionne les messages adressés à « ppois07@monlabo.unistra.fr » ainsi que ceux adressés à « les-poissons-rouges@ailleurs.fr »
  • regexp header "Subject" "[xX][pP]" : ce critère sélectionne tous les messages dont le sujet contient la lettre « x » suivie de « p », comme par exemple les messages dont le sujet est « experiment NN debug » et aussi ceux qui contiennent « Windows XP SP3 »
  • string header "Subject" "" : ce critère sélectionne tous les messages qui ont un sujet (car la chaîne vide est une sous-chaîne valide de n'importe quelle chaîne, même vide).
  • not regexp header "Subject" "." : ce critère sélectionne tous les messages qui n'ont pas de sujet, ou dont le sujet n'est pas vide (car l'expression régulière « . » est une sous-chaîne de toute chaîne d'au moins un caractère)
Champs d'en-tête

Les noms des champs d'en-tête sélectionnés avec « string header » ou « regexp header » sont définis par la RFC 2822 et sont en Anglais. Il est possible que votre outil de messagerie vous affiche ces noms de champ en Français : vous devez en toute circonstance vous référer aux noms Anglais. Les champs les plus couramment utilisés sont :

Champ Description
From expéditeur du message
To destinataire principal du message
Cc destinataire(s) en copie du message
Subject objet du message
List-Id identification de la liste de diffusion
X-Spam-Status indique (Yes ou No) qu'un message est reconnu comme un spam sur le relais de messagerie Osiris
X-Spam-Level représente par un nombre d'étoiles l'estimation par le relais de messagerie du niveau de Spam du message. 5 étoiles est le niveau à partir duquel le message est considéré par défaut comme du Spam.

Signification des actions

Action Description
deliver dossier dépose le message dans le dossier spécifié, qui sera automatiquement créé sur le serveur s'il n'existe pas déjà. Certains caractères sont interdits dans les noms de dossiers (espaces et retours-chariots, caractères non affichables, point, « % » et « * »).
vacation message envoie une réponse automatique à tous les correspondants qui ne l'ont pas déjà reçu depuis 7 jours.
redirect adresse redirige le message vers l'adresse spécifiée. Il est possible d'indiquer plusieurs adresses séparées par des espaces (dans la même chaîne, entre guillemets)
discard supprime le message
break arrête l'évaluation des filtres. Si le message n'a pas été déposé ou redirigé dans un filtre précédent ou une action précédente, il est perdu.