Accueil
  CONTACTEZ-NOUS: Service commercial | Support technique  
Identifiant Mot de passe
Documentation - filtrer et classer ses messages email
Le filtrage est décrit par un fichier de configuration. Chaque ligne de ce fichier décrit une condition. L'agent de livraison lit chaque ligne, vérifie les conditions et exécute éventuellement une commande.
Le lien sécurisé pour l'édition des filtres est : https://admin.galacsys.net/emailfilter.cgi

Format des instructions

  • commentaire

    les lignes vides, composées uniquement d'espaces ainsi que les lignes qui commencent par un dièse « # » sont ignorées.

  • tri selon un en-tête

    Les instructions de la forme

             En-Tête:     expression    commande
             En-Tête:     !expression   commande
    
    

    indiquent que la commande sera exécutée si l'en-tête existe et vérifie (ou ne vérifie pas dans le second cas) l'expression décrite.

    Les noms des en-tête sont regardés indépendament de la casse, par exemple, date: Date: DATE: DaTe: vérifient toutes les mêmes en-têtes. Pour rechercher sur un en-tête avec une casse bien précise, il faut le préfixer du caractère « \ ». Par exemple, \date: vérifie l'en-tête "date" typographié exactement de cette façon.

  • Regroupement des en-têtes

    On peut, en une seule instruction vérifier plusieurs en-têtes à la fois. Il faut concaténer les en-têtes en questions en les séparant par « : » Par exemple:

              # exécute commande si un des en-têtes parmi From, Sender
              # ou Return-Path contient l'adresse toto@example.com
              From:Sender:Return-Path:  /toto@example.com/a   commande
    
    

    On peut vérifier une expression dans toutes les en-têtes avec « * » :

             # exécute commande si le contenu d'un en-tête
             # vérifie "toto"
             *:  /toto/     commande
    
    
  • Ensemble d'en-têtes Lorsque le même groupement d'en-têtes est utilisé, il peut être plus lisible de le définir dans un ensemble d'en-têtes à l'aide de la commande header_set.
            From:Sender:Return-Path:  /toto@example.com/a   drop
            From:Sender:Return-Path:  /toto@example.net/a   drop
            From:Sender:Return-Path:  /toto@example.org/a   drop
    
    par
            : header_set f From Sender Return-Path
            %f:   /toto@example.com/a   drop
            %f:   /toto@example.net/a   drop
            %f:   /toto@example.org/a   drop
    
    L'ensemble « f » est défini et contient les en-tête « From », « Sender » et « Return-Path ». Le « %f » à la place d'une en-tête reprendra tous les en-têtes de l'ensemble.
  • Décodage des en-têtes (RFC 2047)

    Certains en-têtes peuvent avoir été codées pour passer sur les serveur de courrier. C'est notement le cas lorsqu'elles doivent contenir des caractères accentués, chinois, musicaux, et autres. Par exemple la phrase « un filtre; » peut être codé comme =?iso-8859-1?b?dW4gZmlsdHJl?= et la phrase « deux filtres; » comme =?iso-8859-1?b?ZGV1eCBmaWx0cmVz?=. Il y a d'autes codages possibles.

    Il est possible de recoder ces en-têtes dans un jeu de caractère universel (Unicode) Elles seront recodées en UTF-8 où chaque caractère est représenté en un ou plusieurs octets. Les caractères alphabétiques et numériques, la ponctuation sont représentés en UTF-8 en un seul octet, tout comme dans la représentation ordinaire (US-ASCII, ISO8858-1) en Europe occidentale et en Amérique.

    Pour transformer les séquences encodées en UTF-8, il faut faire préceder le nom de l'en-tête ou du groupe d'en-têtes par un tilde « ~; », par exemple :

          ~Subject:  /un filtre/
    
    S'il y a plusieurs en-têtes, il faut précéder chacune par un « ~ » :
         ~To:~Cc:   /toto/
    

    Notez qu'il est plus approprié d'utiliser des expressions rationnelles gérant l'UTF-8 lorsque l'on considére que la séquence a des caractères complexes (accents, idéogrammes, etc.)

  • Négation

    Il est possible de nier ces instructions (exécuter des commandes si les conditions ne sont pas vérifiées) :

            !En-tête:     expression    commande
            !En-tête:     !expression   commande
    
    
    Cela permet de filtrer sur la présence ou l'absence d'un en-tête. Voici un résumé des cas d'exécution de commandes avec les possibilités de négation :

    l'instruction ci dessousexécute la commande si
    En-tête:  ER il existe un en-tête qui vérifie l'E.R.
    !En-tête: ER aucun en-tête ne vérifie l'E.R.
    En-tête:  !ER il y a un en-tête qui ne vérifie pas l'E.R.
    !En-tête: !ER tous les en-têtes éventuels vérifient l'E.R.

  • Tri selon un scalaire

    Il est possible d'exécuter des commandes en vue de comparer des scalaires x et y de la manière suivante :

             $x=y        commande
             $x<>y       commande
             $x<y        commande
             $x<=y       commande
             $x>y        commande
             $x>=y       commande
    
    

    la commande sera exécutée selon que le scalaire x est égal, différent, inférieur, inférieur ou égal, supérieur, supérieur ou égal au scalaire y On peut tester aussi si le scalaire x est non nul comme ceci 

            $x               commande
    
    Le scalaire vide représente le score pour tester par exemple que le score est inférieur à 10, on peut procéder comme ceci :
            $<10             commande
    

  • exécution inconditionnelle

    Il est possible d'exécuter une commande en la faisant précéder de deux points « : » et d'un espace.

             :  commande
    
  • branchement

    La commande skipto permet de passer les instructions suivantes jusqu'à rencontrer une étiquette.

             :étiquette
             :étiquette  commande
    

    L'étiquette doit être immédiatement précédée du signe deux points « : ». La commande, si elle est présente, sera exécutée comme une exécution inconditionnelle

  • filtre sur le début ou la fin du corp du message

    On peut filtrer sur le début ou la fin d'un courrier. L'agent de livraison récupère un bloc de données d'une taille paramétrable (mais limitée à 1024 octets) au début ou à la fin du corps du message.

    Rechercher une expression dans les nnn premiers octets du message

            +nnn      expression   commande
    

    Rechercher une expression dans les nnn derniers octets du message

            -nnn      expression   commande
    

Commandes

Certaines commandes terminent l'analyse du filtre après leur action (deliver, drop, bounce, trash, forward, moved). Les autres (forward2, score skipto, deliver2, default, etc.) s'exécutent et le déroulement du filtre continue. Seule la commande stow peut faire s'interrompte ou pas le déroulement en fonction des circonstances.

deliver
deliver dossier
délivre le courrier dans la boîte principale ou dans un sous dossier, envoi un éventuel message de vacances et arrête l'analyse du filtre.
deliver2
deliver dossier
délivre le courrier dans la boîte principale ou dans un sous dossier et continue l'analyse du filtre.
drop
jette le courrier et arrête l'analyse du filtre. drop peut prendre un argument qui sera logué.
bounce
bounce message
bounce -texte
bounce -texte message
rejette le courrier et renvoie un message d'erreur à l'émetteur et arrête l'analyse du filtre. Cette erreur peut être donnée en argument de bounce. Les premiers mots en argument qui commencent par « - » sont éventuellement loggués mais ne font pas partie du message envoyé.
moved
moved addresse
moved @domaine
moved message
rejette le courrier et renvoie un message d'erreur à l'émetteur indiquant que l'adresse a changé et arrête l'analyse du filtre. Le message renvoyé dépend de l'argument utilisé :
  • Si la commande n'a pas d'argument, une notification est envoyée disant que l'adresse a changé mais qu'il n'y a pas de nouvelle adresse.
  • Si la commande a un argument, une notification est envoyée que l'adresse a changé et indique l'argument en tant que nouvelle adresse. Si cet argument commence par un « @ », la nouvelle adresse est construite à partir de la partie locale de la boîte et et du nom de domaine suivant l'« @ ».
  • S'il a a plusieurs arguments, séparés par des espaces, ils sont envoyés en tant que message de notification.
trash
trash -texte
trash message
trash -texte message
délivre le courrier dans la poubelle. Si un message est présent, renvoie ce message en erreur à l'expediteur. Les premiers mots en argument qui commencent par « - » sont éventuellement loggués mais ne font pas partie du message envoyé, si message il y a.
forward adresse
transfère le courrier pour l'adresse indiquée et arrête l'analyse du filtre.
forward2 adresse
transfère le courrier pour l'adresse indiquée et continue l'analyse du filtre.
default adresse
default dossier
default
défini le traitement par défaut des courriers passant le filtre sans action finale et continue l'analyse du filtre. Si l'argument est une adresse éléctronique (avec un @), ces courriers seront renvoyés à cette adresse. Sinon, l'argument est pris comme le nom du dossier où seront déposés ses courriers. S'il n'y a pas d'argument, ils seront déposés dans la boîte principale. Dans la mesure du possible, les messages émis par le système de livraison locale (comme les comptes rendus de log) suivent aussi cette directive.
stop
Stoppe l'analyse du filtre. Le courrier est traité par l'action par défaut.
score +valeur
score -valeur
score *valeur
score /valeur
score =valeur
ajoute, retire, multiplie, divise, récupère le modulo ou affecte un scalaire au score.
skipto étiquette
passe les prochaines instructions du filtre jusqu'à rencontrer l'étiquette.
add En-tete: contenu
permet d'ajouter une en-tête quelquonque au début des en-têtes déjà présentes dans le courrier. Il sera possible de filtrer ultérieurement sur cette en-tête.
blacklist liste,... [en-tête optionelle]
commande composite qui regarde si l'adresse IP d'un relai est dans une liste noire publique et effectue des actions en conséquence. Regardez le paragraphe sur les Listes Noires pour son usage.
trace [ -champ|--champ...] [message]
-champ demande à ce que l'en-tête champ du message soit loguée
--champ demande à ce que l'en-tête champ ne soit plus loguée
si un message est présent, il sera ajouté dans le champ Trace: des logs.
vacation ligne
Ajoute une ligne au message automatique envoyé pour prévenir des vacances (vacations). Ce message sera envoyé lors de l'exécution d'une commande deliver.
debug
Déclanche le mode débug. À partir du moment où ce mode est enclanché, des informations concernant le déroulement du filtre sont enregistrées puis déposées dans un courrier lors de la livraison finale.
header_set lettre [En-tête ...]
Défini l'ensemble d'en-têtes lettre contenant les en-têtes à partir du deuxième argument. Il y a 26 ensembles définisables, une par lettre de l'alphabêt.
logrotate
logrotate heures
Force la rotation des logs. Si un nombre d'heures est précisé en argument, la rotation ne se fera pas plus d'une fois par ce nombre d'heures.
timezone zone
change la zone horaire pour l'affichage de l'heure dans les logs et pour son calcul dans le score. Vous pouvez utilisez une de zone de cette liste
stow [répertoire]
Si l'adresse du destinataire contient une extension (une partie entre « + » et « @ »), le courrier sera délivré dans le dossier du nom de cette extension en miniscule si le dossier existe déjà et l'analyse du filtre s'arretera. Si un répertoire est en argument, le dossier sera cherché dans ce répertoire.
Si l'adresse ne comporte pas d'extension ou que le dossier n'existe pas, le filtre continuera
(voir exemples dans les nouveautés)
extension [chaîne]
Modifie l'extension destinataire pour être utilisée par stow
antivirus EnTete
antivirus -EnTete
Ajoute l'EnTete avec une description de l'analyse (le nom de l'antivirus utilisé ainsi que les éventuels virus détectés). Précédé du signe « - », l'en-tête n'est ajouté que si un virus est détecté.
Lorsqu'un entête est ajouté, celui ci n'est ajouté aux logs par cette commande que lorsqu'un virus est détecté.
spamassassin
spamassassin Prefixe
Envoie le courrier à SpamAssassin, ajoute les entêtes :
X-Spam-Status
Si le courrier est vu comme un spam, cet entête a la forme :
Yes, hits=nn, required=nn, tests=...
Si le courrier n'est pas vu comme un spam, cet entête a la forme :
No, hits=nn, required=nn, tests=...
Les mots clefs ont la signification suivante :
  • hits=nn le nombre de points
  • required=nn le nombre de points nessessaire pour que le message soit vu comme un spam
  • tests=...La liste des tests qui ont été vérifiés par le message
X-Spam-Level
Contient un asterisque (*) par point de score de SpamAssassin
Si un Prefixe est donné un argument à la commande, les entêtes ajouétes seront Prefixe-Status et Prefix-Level
log évenement,...
Ajoute ou retire des types d'évènements au masque d'évènements logués dans les logs utilisateurs. Un message de log peut être engendré par un ou plusieurs évènements.
Si un évènement de la liste est précédé d'un signe « + », il est ajouté ainsi que ses successeurs, si un évènement est précédé du signe « - », il est supprimé du masque ainsi que ses successeurs. Si la liste ne commence pas par « + » ou par « - », le masque est défini comme ayant les évènements de la listes.
Les évènements sont
deliver
Le courrier a été délivré quelque part dans la boîte
forward
Le courrier a été renvoyé à l'extérieur
drop
Le courrier a disparu
bounce
Une erreur a été retournée à l'expéditeur du courrier
error
Une erreur est intervenue dans la traitement
all, on, yes
Tous les évènements (sauf error)
none, off, no
Aucun évènements (hormis error)
(voir des exemples dans les nouveautés)
syslog machine
Envoie une notification de l'arrivée d'un courrier dans la boîte en temps réél par syslog à la machine en arguments.
La machine doit être sur une IP fixe publique appartenant au propriétaire du filtre.
(voir des exemples dans les nouveautés)

Scalaires

Un scalaire est un nombre entier éventuellement suivi d'une unité par laquelle la valeur sera multipliée.

  • s : taille en octets du message
  • l : nombre de lignes du message
  • v : nombre de virus détectés (-1 en cas erreur interne de l'antivirus)
  • r : nombre de récipiendaires locaux auquel le courrier est proposé
  • k : Kilo, multiplie la valeur par 1024
  • m : Mega, multiplie la valeur par 1048576
  • g : Giga, multiplie la valeur par 1073741824
  • h[en-tete1:en-tete2...] : Nombre total d'en-têtes. Suivi d'une liste de noms en-têtes séparés par deux points « : », le décompte est restreint aux en-têtes de cette listes.
  • a : score de SpamAssassin
  • ? : multiplie par un nombre aléatoire entre 0 (inclus) et 1 (exclus)
  • tformat : donne, par une succession de chiffre des éléments sur la date de réception du message. format indique les éléments souhaités :
    • c est un nombre sur deux chiffres indiquant le siècle (20)
    • y est un nombre de deux chiffres indiquant l'année dans le siecle (01, 02, etc..)
    • m est un nombre de deux chiffres entre 01 et 12 indiquant le mois.
    • d est un nombre de deux chiffres entre 01 et 31 indiquant le jour dans le mois
    • w est un chiffre entre 0 et 6 indiquant le jour dans la semaine (0 pour dimanche, 1 pour lundi, etc.)
    • h est un nombre de deux chiffres entre 00 et 23 indiquant l'heure
    • n est un nombre de deux chiffres entre 00 et 59 indiquant les minutes
    • s est un nombre de deux chiffres entre 00 et 59 indiquant les secondes
    en cas de débordement (la valeur la plus grande d'un scalaire est 9223372036854775807), -1 est renvoyé

 Vérification des adresses de relais dans une liste noire publique (blacklist)

Il est possible de vérifier si le courrier a transité par une des adresses présentes dans une ou plusieurs des listes ci dessous :
  • ORDB (Open Relay Database). Le site est partiellement traduit en français.
  • WSFF (will spam for food)
  • INVALID est une pseudo liste noire interne qui vérifie que les adresses indiquées dans les relais sont des adresses IP valides.
  • BADWHOIS, DSN, NOABUSE, NOPOSTMASTER, IPWHOIS Vérifie que le domaine de l'expediteur (ou l'adresse pour IPWHOIS) satisfait les normes SMTP. Pour les activistes SMTP seulement. Voir http://www.rfc-ignorant.org/
  • SSFABEL (Spam Source de Fabel) Liste des réseau (principalement en Asie et en Amérique du Sud) qui envoient du spam.
  • DNS-BL (DNS Providers Blacklist). Vérifie le domaine de l'expéditeur. Renvoie
    127.0.0.2
    Courrier commerciaux non sollicités
    127.0.0.3
    Utilisation de carte de crédit ou fraude éléctronique
    127.0.0.4
    Site promouvant le spam
    127.0.0.5
    Contenu illégal, pédophilie
    127.0.0.6
    Sales pratiques de maling-listes.
  • SPAMHAUS ou SBL Trois listes sont disponibles :
    SBL (Spamhaus Block List)
    Liste d'adresses IP envoyant des spams
    XBL (eXploits Block List)
    Liste d'adresses IP de logiciels tiers, incluant divers proxy, worm/virus/trojan comportant des moteurs SMTP d'envoi de spams.
    SBL+XBL
    Liste combinée des 2 précédantes
  • SPAMCOP Vérifie les adresses de manière assez aggressive.
  • DSBL Distributed Server Boycott List

    Deux listes sont disponibles : DSBL (list.dsbl.org) et DSBL-M (multihop.dsbl.org) ; voir http://dsbl.org/usage

  • SORBS
    127.0.0.2
    http.dnsbl.sorbs.net ; serveurs HTTP ouverts
    127.0.0.3
    socks.dnsbl.sorbs.net ; serveurs SOCKS ouverts
    127.0.0.4
    misc.dnsbl.sorbs.net ; serveurs ouverts non listés dans HTTP et SOCKS
    127.0.0.5
    smtp.dnsbl.sorbs.net ; serveurs SMTP ouverts
    127.0.0.6
    spam.dnsbl.sorbs.net ; liste d'IP ayant envoyé du spam aux admins de SORBS
    127.0.0.7
    web.dnsbl.sorbs.net ; serveurs WEB dont on a utilisé des failles (FormMail)
    127.0.0.8
    block.dnsbl.sorbs.net ; liste d'IP demandant à ne pas être testés par SORBS
    127.0.0.9
    zombie.dnsbl.sorbs.net ; liste d'IP de 'zombies'
    127.0.0.10
    dul.dnsbl.sorbs.net ; Liste de blocs d'IP dynamiques
    127.0.0.11
    badconf.rhsbl.sorbs.net ; Liste de domaines dont les enregistrements A ou MX pointent sur une mauvaise adresse
    127.0.0.12
    nomail.rhsbl.sorbs.net ; liste de domaines qui ne devraient pas être utilisés comme domaine expéditeur (renseignée par les propriétaires des domaines)

Les serveurs de listes noires sont gérés par des entités extérieures. Nous ne pouvont garantir ni leur sérieux, ni leur pertinence ni même leur bon fonctionnement.

Ils fonctionnent par des requêtes DNS, si un relai est présent dans une liste noire, le serveur DNS renvoie une addresse IP (un enregistrement « A ») et éventuellement un commentaire dans un enregistrement « TXT ».

La vérification se fait avec la commande « blacklist ». Cette commande est capable de vérifier si le courrier est passé par un relais suspect et d'ajouter une en-tête au courrier pour le signaler.

Par exemple : : blacklist wsff,invalid* X-Blacklist: %q bloque' par %r -- %t

La commande prend comme premier argument l'énumération, avec les éléments séparés par des virgules, de listes à vérifier (vous pouvez les saisir en minuscules ou en majuscule). Quand un des élément se termine par une étoile (« * »), si l'élément vérifie les relais (et non pas les domaines) tous les relais seront vérifiés, sinon, seul le relais par lequel le serveur qui filtre a reçu le courrier sera vérifié.

Les arguments suivants correspondent à un en-tête qui sera rajouté au courrier. Dans ces arguments :

  • « %q » l'adresse IP ou le domaine vérifié dans la liste
  • « %r » le nom de la liste
  • « %d » le domaine utilisé pour la vérification
  • « %p » le rang de l'en-tête « Received » dans le cas d'une vérification d'adresse IP (1 pour le relai ayant envoyé un courrier au serveur de filtre, 2 pour le relais ayant envoyé un courrier au précedent, etc.)
  • « %a » l'adresse retournée par la liste (en « A »)
  • « %t » le commentaire éventuellement retourné (en « TXT ») par la liste
  • « %% » le signe « % »
Cet en-tête sera logué (par défaut) et pourra être utilisé par des filtres ultérieurs.

Il est possible d'ajouter l'en-tête uniquement si l'élément a renvoyé une certaine valeur. Il suffit de le faire suivre du signe « = » et de la valeur à tester. Par exemple : : blacklist ordb=127.0.0.2 X-Blacklist: relai ouvert %q : blacklist ordb*=127.0.0.2 X-Blacklist: relai ouvert %q Le premier n'ajoute l'en-tête que si "ordb" renvoie 127.0.0.2 dans le premier relai. Le second fait de même pour tous les relais.

 En-têtes

L'en-tête est l'un de ceux qui peut apparaître dans le message, selon la RFC822, ce qui n'est pas nécessairement celui que votre logiciel de lecture affichera si celui-ci traduit les entêtes.

Quelques en-têtes intéressantes pour le filtrage :

From
Expéditeur (nom et adresse) tel qu'il se présente
Return-Path
Adresse de l'expéditeur dans l'enveloppe (utilisée pour le transport)
To
Destinataire du courrier tel que l'émetteur l'a indiqué.
Cc
Destinataires en copie du courrier.
Delivered-To
adresse déposée par les agents de livraison locaux pour détecter les boucles. Doit contenir l'adresse de votre boîte aux lettres.
Received
traces que laissent les relais de courrier contenant des informations sur les conditions du relais.
Subject
sujet du message
Content-Type
Type MIME du message. Les courrier ordinaires ont pour valeur text/plain, mais on peut trouver, entre autre, text/html pour le courrier en HTML ou multipart/mixed pour les attachements.

Expressions

On peut choisir le type d'expression en entourant de deux caractères délimiteurs identiques parmi « / », « " » ou « ' ». Les expressions entourés par « / » peuvent être suivies d'une lettre d'option pour déterminer le type. Les expressions formées par un mot commençant par « $ » sont crées dynamiquement selon le courrier reçu ou l'état de la boîte au lettre.
SyntaxeType d'expressionsensible à la casse
expression expressions rationnelles étenduesnon
/expression/ expressions rationnelles étenduesnon
/expression/e expressions rationnelles étenduesnon
/expression/E expressions rationnelles étenduesoui
/expression/b expressions rationnelles basiquesnon
/expression/B expressions rationnelles basiquesoui
/expression/p expressions rationnelles compatibles avec perlnon
/expression/P expressions rationnelles compatibles avec perloui
/expression/pu expressions rationnelles UTF-8 (unicode) compatibles avec perlnon
/expression/Pu expressions rationnelles UTF-8 (unicode) compatibles avec perloui
/expression/a liste d'adressesnon
/expression/A liste d'adressesoui
/expression/f expressions du shellnon
"expression" expressions du shellnon
'expression' expressions du shellnon
/expression/F expressions du shelloui
$return-path Compare avec l'adresse de l'en-tête Return-Path
ou, si elle est vide, avec la chaîne MAILER-DAEMON
non
$mailinglists Vérifie si l'entête contient une des adresses de
mailing listes définie dans les préférences du webmail
non

Si vous voulez indiquer un caractère délimiteur à l'interieur d'une expressions délimitée par ce caractère, il faut le faire précéder par « \ ». Par exemple, pour vérifier l'expression rationnelle « text/html » : Subject: /text\/html/ bounce Dans le cas d'expression rationnelles POSIX indépendantes de la casse, c'est équivalent à Subject: text/html bounce

Caractères Unicode

Les expressions //Pu et //pu, compatibles avec perl, peuvent traiter des chaînes en UTF-8, or seuls les octets de des caractères ASCII (lettres non accentuées, chiffres, ponctuation) sont supportés par les filtres. Pour indiquer les autres caractères, il faut indiquer leur position dans la liste des caractères unicode, précédé par \x{ et terminé par }. Les zéros initiaux de la position peuvent être retirés et si on peut représenter cette position sur deux caractères hexadécimaux, on peut indiquer ce caractère avec un \x suivi de la position sur ces deux caractères hexadécimaux.

Par exemple, la lettre minuscule latin e accent grave (è) a pour position 00E8, on peut le représenter par /\x{00E8}/pu ou plus simplement par /\xE8/pu.

Liste d'adresses

Les expressions //a et //A sont des listes d'adresses. Elles sont composées d'une liste d'éléments (des mailbox au sens de la RFC 2822) séparés par des virgules. Si un élément commence par un @, il indique toutes les adresses du domaine suivant l'@. Lors du passage du filtre, si l'un de ces éléments est égal à l'un de ceux des en-têtes testés, l'action en enclenchée. Par exemple, le filtre suivant To:Cc: /toto@example.com, titi@example.org/a Est vérifié par l'entête To: M. TOTO <TOTO@example (juste un test).com(mercial)>

Le filtre ci dessous est vérifié pour toutes les adresses du domaine example.com : To: /@example.com/a

Une liste peut être composée d'une seule adresse To: /toto@example.com/a deliver

L'analyse de l'en-tête est plutôt laxiste, afin de retomber sur ses pieds en cas d'invalidité de l'en-tête.

Ces expressions ne sont utiles que dans les en-têtes qui contiennent des données au format d'adresses (entre autre To, Cc, From, Sender, Return-Path, Delivery-To, Reply-To, Mail-Copies-To, Message-ID, ... et les Resent- de ces en-têtes). Leur utilisation dans un autre contexte est indéterminée.

Expressions du shell

les expression du shell sont conçues à l'origine pour reconnaitre les fichiers dans les interprètes de commande ou les boîtes de séléction de fichiers. Elle sont beaucoup moins puissantes que les expressions rationnelles mais peuvent être plus facile à manier.

Elles n'ont, comme caractères spéciaux, que

  • « * » qui indique une séquence de caractères quelconque
  • « ? » qui indique un caractère quelconque
  • « [d-f] » qui indique un caractère entre « d » et « f »
Également, elles vérifient toute la chaîne, alors que les expressions rationnelles ne vérifient que le motif. L'exemple ci dessous indique comment chercher un sujet contenant le mot « cassoulet » dans le champ « Subject » avec une expression rationnelle ou une expression du shell : Subject: /cassoulet/ deliver cuisine Subject: "*cassoulet*" deliver cuisine

Exemples

# la date de dernière modification s'ajoute magiquement après les deux points.
# Dernière modification: 
#
# jette le courrier venant d'une adresse contenant friend@public
# ou dont le sujet contient $$$ (on met des barres obliques 
# inversées « \ » avant les dollars « $ » car le dollar simple
# signifirait une fin de chaîne dans l'expression rationnelle.
#
To:       /friend@public/             drop
Subject:  /\$\$\$/                    drop

#
# jette un courrier qui est destiné à plus de 10 utilisateurs locaux
#
$r>10  drop

#
# délivre le courrier dont le sujet contient « urgent »
# dans le dossier « important »
#
Subject: /urgent/          deliver important

#
# jette le courrier dont le sujet contient « pas urgent »
#
Subject: /pas urgent/     drop

#
# renvoit le message d'erreur « invalid content type »
# pour les courriers en HTML ou les attachements.
#
Content-Type: /text\/html/  bounce invalid content type
Content-Type: /multipart/   bounce invalid content type

#
# délivre un peu de courrier dans le dossier « lwa »
# du répertoire « lapins »
#
From:    /lwa@teaser\.fr/      deliver   lapins.lwa

#
# Ajoute diverses informations dans le champ Trace des logs
#
: trace debut
From:   /titi/     trace from titi
!From:  /titi/     trace !from titi
From:  !/titi/     trace from !titi
!From: !/titi/     trace !from !titi
: trace fin

#
# Ajoute l'en-tête "From:" dans les logs sous certaines condition
#
From:   /suspect/    trace -from quelque chose de suspect

#
# exemple de tri en fonction de l'heure de réception
#
$twd=513   bounce de'sole', je ne recois pas de mail les vendredi 13
$twh=011   deliver recu_pendant_la_messe_de_dimanche_a_11h

$tcymd>20010614 skipto revenu
$tcymd>20010506 vacation je suis absent du 6 mai 2001 au 14 juin 2001
:revenu

# envoi une copie des courriers arrivés les jours
# de semaine entre 13h30 et 23h50
$tw=0 skipto maison
$tw=6 skipto maison
$thn<1330 skipto maison
$thn<2350 forward2 bureau@teaser.fr
:maison

# délivre le courrier si la chaîne "bonjour" est présente dans les 200
# premiers octets du corp du message
+200  /bonjour/    deliver

# rejette le courrier si le message ne contient pas "au revoir"
# dans ses 300 derniers octets
-300 !/au revoir/  bounce les gens polis disent au revoir

© Copyright GalacSYS /// Infrastructure | Mentions légales