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 dessous exé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
- 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
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 :
- 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 «%
»
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.
Syntaxe | Type d'expression | sensible à la casse |
---|---|---|
expression
| expressions rationnelles étendues | non |
/expression/
| expressions rationnelles étendues | non |
/expression/e
| expressions rationnelles étendues | non |
/expression/E
| expressions rationnelles étendues | oui |
/expression/b
| expressions rationnelles basiques | non |
/expression/B
| expressions rationnelles basiques | oui |
/expression/p
| expressions rationnelles compatibles avec perl | non |
/expression/P
| expressions rationnelles compatibles avec perl | oui |
/expression/pu
| expressions rationnelles UTF-8 (unicode) compatibles avec perl | non |
/expression/Pu
| expressions rationnelles UTF-8 (unicode) compatibles avec perl | oui |
/expression/a
| liste d'adresses | non |
/expression/A
| liste d'adresses | oui |
/expression/f
| expressions du shell | non |
"expression"
| expressions du shell | non |
'expression'
| expressions du shell | non |
/expression/F
| expressions du shell | oui |
$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
»
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