Modifications des règles de filtrage
|
Ce document reprend la liste des modifications visibles par
l'utilisateur effectuées sur le système de filtres.
|
Modifications du vendredi 21 novembre 2003
|
Nouvelles fonctionnalités
Commande stop
Cette commande arrete l'exetution du filtre et utilise la méthode
de livraison par défaut. Mis à part qu'elle est plus propre, cette
commande est équivalente à un skiptovers une étiquette
inexistante.
Interface avec SpamAssassin
SpamAssassin est un filtre de
courrier pour identifer un spam. Sa base de règles reprend de
nombreux tests heuristiques sur les en-têtes et le texte du message
pour identifier un "spam" (courrier commercial non sollicité).
L'interface envoie le courrier à SpamAssassin, récupère le résultat
et les tests effectués, puis elle les présente afin que vous puissiez
déterminer l'action appropriée. Les tests recourant au réseau (DNS,
RAZOR, PYZOR, DCC, etc.) sont désactivés.
- Une commande
spamassassin qui ajoute
les entêtes X-Spam-Status et
X-Spam-Level
- Un scalaire «
a » qui donne nombre de
points de SpamAssassin pour ce message. Le nombre de points est
plus important pour les spams.
Exemples
Rejeter un message dont le nombre de points est supérieur à 5 :
$a>5 bounce
Rejeter un message que SpamAssassin voit comme un spam :
: spamassassin
X-Spam-Status: /^yes/ bounce
Décompte d'en-têtes
Le scalaire « h » indique le nombre
d'entête présente dans le message. Si « h » est
suivi d'une liste d'en-têtes, séparés par « : »,
le nombre des en-têtes de cette liste est indiqué.
Exemples
$h>20 bounce plus de 20 en-tetes
$hCc:To>20 bounce plus de en-tetes 20 To et Cc
|
Modifications du lundi 10 novembre 2003
|
Nouvelles fonctionnalités
Commande debug
La commande debug génère un courrier reprenant la
liste des lignes du filtre qui ont déclanché une action à partir de la
ligne où a été activée cette commande.
Vous pouvez déclancher le débugage selon l'expediteur, le sujet,
etc. Par exemple :
Return-Path: /toto@example.com/a debug
#
# suite du filtre ...
|
Modifications du lundi 20 octobre 2003
|
Changements incompatibles avec la version précédente
Antivirus par défaut
Lorsque l'anvivirus a détécté un virus dans le courrier et le
courrier n'a pas été explicitement délivré par une commande du filtre
(deliver , forward , drop , etc.),
alors une notification est déposée et le courrier est jeté.
Cette notification reprend le nom du virus détecté et les entêtes
du courrier.
Si vous voulez
- * Ne plus recevoir de virus ni de notification
- Mettez une ligne comme ceci au début
-
$v>0 drop virus
- * Recevoir les virus sans les notification
- Il faut que vous demandiez explicitement à les recevoir. Par exemple :
-
$v>0 deliver
- * Recevoir les notifications tout en filtrant.
- Il faut brancher le filtre sur la fin, en l'envoyant sur une
étiquette inexistante.
-
$v>0 skipto fin
Remarquez que la notification est envoyée à l'emplacement indiqué par
la commande default .
|
Modifications du lundi 13 octobre 2003
|
Changements incompatibles avec la version précédente
Les caractères accentués ne sont plus supportés en direct
dans les filtres
Aucune restriction n'est pour l'instant mise en œuvre, tout continue
de fonctionner comme avant mais ceux qui utilisent des caractères non
ascii dans leurs filtres doivent faire autrement.
Par exemple, pour vérifier qu'un en-tête contient des plus de cinq
caratères sur 8 bits de suite, n'écrivez pas /[¡-ÿ]{5}/
mais /[^ -~]{5}/ .
Bien que n'ayant jamais été officiellement supportés, les
caratères non ASCII ont été tolérés. Leur désuétude dans les filtres a
pour but de remplacer à moyen terme leur système de codage par un
système plus universel.
Nouvelles fonctionnalités
Décodage RFC 2047 des en-têtes.
Il est possible de décoder des en-têtes comporant des séquences
codées selon la RFC 2047. Ses séquence ont la forme suivante :
=?XXX?Y?ZZZZZZZZZZZZ?=
Pour celà, il faut faire précéder le nom de l'en-tête que l'on
veut décoder par un tilde « ~ » :
~Subject: /test/
Vérifiera un courrier dont le sujet est
=?us-ascii?b?dGVzdA==?= sous sa forme codée.
L'en-tête sera transformé en un jeu de caractère universel et codé
UTF-8 sur lequel on peut faire passer des filtres.
Voir la documentation pour plus de
détails.
Type d'expression compatibles avec perl et supportant UTF-8
Les expressions de forme //pu et //Pu
reconnaissent les caractères en UTF-8. Les autres types d'expressions
doivent être réservés à des séquences simples ou ne comprennant que
des caractères ASCII.
Voir la documentation pour
plus de détails.
Décompte des en-têtes
Le scalaire « h » indique le nombre d'en-têtes
présents dans le courrier. Il peut être suivi d'une liste de noms
d'en-têtes, séparés par deux points (« : »)
pour restreindre ce compte aux en-têtes de cette liste. Exemple :
$hTo:Cc>10 bounce Too many To and Cc
|
Modifications du lundi 8 septembre 2003
|
Changements incompatibles avec la version précédente
Changement d'Antivirus
L'antivirus interne des filtres a été remplacé par ClamAV.
Nouvelles fonctionnalités
Commande « moved »
Cette commande renvoie le courrier avec une notification indiquant que
l'adresse a changé. Une nouvelle adresse peut être précisée en
argument et l'on peut rédiger son propre message d'erreur.
Consultez la documentation pour les détails.
|
Modifications du mercredi 27 août 2003
|
Changements incompatibles avec la version précédente
Suppression de liste noire
La liste OSIRUSOFT n'est plus en état
de marche.
|
Modifications du mercredi 9 avril 2003
|
Nouvelles fonctionnalités
Test de domaine
Les listes d'adresses (expressions //a et
//A ) peuvent vérifier toutes les adresses d'un domaine.
La syntaxe est la suivante :
To: /@example.com/a deliver
Tous les courriers dont l'entête To contient une adresse
du domaine example.com seront délivrés.
Ensembles d'entête
Il y a 26 groupes d'entêtes, une par lettre de l'alphabet,
définissables par l'utilisateur à l'aide de la commande
header_set . Par exemple :
: header_set t To Cc Delivered-To
: header_set f From Sender X-Sender Return-Path
Défini deux ensembles « t » et
« f » contenant les entêtes To,
Cc et Delivered-To pour le premier et
From , Sender , X-Sender et
Return-Path pour le second. Il est alors possible des les
utiliser pour filtrer des entêtes en les préfixant par
« % » :
%t: /@example.net/a drop
%f: /@example.com/a deliver
Ce qui évite d'écrire
To:Cc:Delivered-To: /@example.net/a drop
From:Sender:X-Sender:Return-Path /@example.com/a deliver
Notez que seul la première lettre du nom de l'ensemble est
prise en compte. Les deux lignes suivantes sont équivalentes :
: header_set f
: header_set from
ainsi que les deux lignes ci dessous :
%f: /@example.com/a deliver
%from: /@example.com/a deliver
|
Modifications du vendredi 14 mars 2003
|
Changements incompatibles avec la version précédente
Suppression de liste noire
La liste VISI n'est plus en état
de marche.
|
Modifications du mercredi 12 février 2003
|
Changements incompatibles avec la version précédente
Format des logs
Désormais, lorsqu'un courrier subit plusieurs actions de
livraisons (en raison de duplicateurs comme deliver2 ou
forward2 , sa trace n'est mise dans les logs qu'une fois
et plusieurs lignes "Action: " sont insérées. L'ordre
correspond à l'ordre d'exécution de ces actions, l'action finale
(deliver , bounce , etc.) est toujours
exécutée la première et apparait donc en tête de liste. Le délai
affiché est celui de l'exécution complète et le score est le score
final.
Les logs sont écrites intégralement si un des évènements de livraison est actif à l'endroit
où l'action est définie.
Nouvelles fonctionnalités
Tests de scalaires
Il est possible de comparer des variables entières (scalaires) sans
avoir à affecter le score.
$x<y action
$x<=y action
$x>y action
$x>=y action
$x=y action
$x<>y action
Exécute "action" si le scalaire x est respectivement
strictement inférieur, inférieur ou égal, strictement supérieur,
supérieur ou égal, égal ou différent du scalaire y.
Pour tester si un scalaire x est non nul, on procède ainsi
$x action
Les variables scalaires sont les variables utilisées pour affecter
le score (s pour la taille, l pour le nombre de ligne,
etc.) Si un scalaire est omis, c'est le score qui est comparé. Les lignes ci
dessous regarde toutes si le score est inférieur à 10 :
<10 action
$<10 action
$10> action
Par exemple, si on voulait déposer dans le dossier petit les
courriers de taille inférieurs à 10 Ko, il fallait procéder ainsi :
: score =s
<10k deliver petit
On peut maintenant avoir le même résultat en une ligne sans
affecter le score :
$s<10k deliver petit
Nouvelle liste noire
La liste noire SPAMCOP a été
ajoutée. Elle vérifie les adresses de manière assez aggressive.
|
Modifications du vendredi 10 janvier 2002
|
Changements incompatibles avec la version précédente
Ajout du délai de traitement dans les logs utilateurs
Le champ Status dans les logs indique désormais le délai
de traitement, dans l'exemple ci dessous, il est de 13 centièmes de
seconde. Par exemple :
Status: score=0, size=189419, lines=2486, rcpts=1, delay=0.13s
Une valeur importante régulièrement (une seconde de traitement est une
valeur importante) indique que vos filtres, demande de RBL, antivirus,
sont trop gourmands. Si ce n'est pas le cas, contactez
l'administrateur.
Nouvelles fonctionnalités
Antivirus
L'agent de livraison est relié de manière experimentale à un
antivirus. Il y a deux moyens d'accès en ajoutant un entête, soit en
affectant le score.
Commande antivirus
Cette commande permet d'ajouter une entête indiquant le résultat de
l'analyse. Elle prend l'entête à ajouter en argument.
La règle
: antivirus X-Antivirus
ajoute l'entête X-Antivirus avec une description de
l'analyse (le nom de l'antivirus utilisé ainsi que les éventuels virus
détectés)
La règle
: antivirus -X-Antivirus
avec un signe « - » précedant l'entête, n'ajoute
ces information que si un virus que lorsqu'un virus est détecté.
Si un entête est ajouté, celui ci n'est ajouté aux logs que
lorsqu'un virus est détecté. Pour l'avoir en permanence, coupler la
commande avec une commande
trace :
: antivirus X-Antivirus
: trace -X-Antivirus
Variable de score « v »
Cette variable indique le nombre de virus trouvés par l'antivirus. 0
s'il n'en a pas detecté ou -1 si une erreur est survenue lors de
l'analyse. Exemple :
: score =v
>0 bounce mail containts virus
Notes
L'antrivirus actuellement utilisé est Dr.Web (disponible aussi en russe) dans sa version d'évaluation.
Ce n'est pas nessesairement le plus fiable mais il a les avantages
d'être facilement interfaçable avec l'agent et de tourner sur FreeBSD.
Étant donné qu'il s'agit de logiciels exterieurs sur lequel nous
n'avons pas le contrôle, l'antivirus peut être interrompu si des
problèmes surviennent. Les commandes de vérification resteront alors
valides mais indiqueront systematiquement qu'il n'y a pas de virus
détecté.
|
Modifications du mercredi 18 décembre 2002
|
Nouvelles fonctionnalités
Score maximal
Le score peut aller jusque 9223372036854775807 (précision de 18
chiffres) à la place de 2147483647 précédement.
Tri aléatoire
Le score peut être muliplié par un nombre aléatoire entre 0 (inclus)
et 1 (exclus) suivant une loi uniforme. Celà permet par exemple de
ranger équitablement des courriers dans des dossiers :
: score =6?
=0 deliver zero
=1 deliver un
=2 deliver deux
=3 deliver trois
=4 deliver quatre
=5 deliver cinq
On peut aussi rejeter 10% des courriers ainsi :
: score =100?
<10 bounce unlucky
: deliver
|
Modifications du lundi 9 septembre 2002
|
Nouvelles fonctionnalités
Commande default
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
courrier. 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
cette directive.
Dans l'exemple suivant, le courrier qui est passé ) travers le filtre des entêtes est redirigé vers
postmaster@example.com car il n'y a pas de commande de
livraison finale (deliver , forward ,
bounce , drop , trash ...) :
: default postmaster@example.com
From: /toto/ drop
Subject: /foobar/ drop
|
Modifications du mardi 13 août 2002
|
Changements incompatibles avec la version précédente
Disparition de listes noires
Les listes noires ORBZ et ORBL ayant cessé de fonctionner, celles
ci sont désactivées.
Nouvelles fonctionnalités
Tri en fonction du retour d'une liste noire
Pour les listes qui retourne une adresse parmi plusieures, il est
possible de n'activer la commande que lors d'un retour bien précis.
Par exemple :
: blacklist osirusoft=127.0.0.2 X-Blacklist: relai ouvert %q
: blacklist osirusoft*=127.0.0.2 X-Blacklist: relai ouvert %q
Le premier n'ajoute l'en-tête que si "osirusoft" renvoie 127.0.0.2
dans le premier relai. Le second fait de même pour tous les relais.
Consultez la documentation
pour les détails d'implémentation ou sur les retours connus des
listes.
Nouvelles listes noires
De nouvelles listes noire SPAMHAUS , VISI ,
SSFABEL et IPWHOIS sont activées.
Également un nouveau type de listes, vérifiant le domaine de l'émeteur,
est disponible. Les listes de ce type sont BADWHOIS
DSN , NOABUSE , NOPOSTMASTER et
DNS-BL .
Consultez la documentation
pour connaitre leurs fonctionnalités
Type d'expression « liste d'adresses »
Les expressions //a et //A sont des
listes d'adresses. Elles sont composée d'une liste d'éléments (des
mailbox au sens de la RFC 2822) séparés par des virgules. 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)>
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.
Expression spéciale « mailinglists » L'expression spéciale $mailinglists est une liste
d'adresse construite à partir des mailing listes paramétrées dans les
préférences du webmail.
Dans l'exemple suivant, le message signalant les vacances
(vacation) est envoyé à tous sauf les mailing listes
déclarées :
To:Cc: $mailinglists skipto novacation
: vacation je suis en vacances
: vacation jusqu'à plus tard
:novacation
Ci dessous, les courriers des mailing listes déclarées
n'apparaissent plus dans les logs :
To:Cc: $mailinglists log off
Commande deliver2
La commande deliver2 fonctionne comme
deliver à la différence qu'elle ne termine pas le filtre.
Par exemple :
: deliver2 toto
: deliver
Délivre le courrier dans la boîte toto et dans la boîte
principale.
|
Modifications du jeudi 25 juillet 2002
|
Nouvelles fonctionnalités
Log des commandes bounce et trash
Les commandes bounce et trash peuvent
prendre un arguemnt sous la forme d'un mot commençant par
« - ». Cet argument est uniquement loggué et
n'influe pas sur le fonctionnement de la commande.
Exemples
# envoie l'erreur "beurk" mais loggue "-toto beurk"
: bounce -toto beurk
# envoie le message d'erreur par défaut (Permission Denied)
# mais loggue "-toto"
: bounce -toto
# délivre silencieusement le courrier dans la poubelle et loggue "-toto"
: trash -toto
# délivre le courrier dans la poubelle, loggue "-toto beurk" et renvoie
# le message d'erreur "beurk"
: trash -toto beurk
Expressions spéciales
Les expressions commençant par le caractère
« $ » et suivies d'un mot sont générées
dynamiquement. Le seul mot reconnu pour l'instant est
return-path qui crée une expression vérifiant l'adresse
de l'emeteur dans l'enveloppe (présenté dans l'en-tête
Return-Path ) ou la chaîne fixe arbitraire
MAILER-DAEMON si cette adresse est vide. Utilisez avec
précaution, après avoir filtré les mailing listes auquelles vous êtes
abonnés ainsi que les Return-Path vides (qui
correspondent normalement à des retours d'erreur)
Exemple
# jette le message si l'adresse de l'émeteur dans l'enveloppe
# n'est pas inclus dans l'en-tête Sender ou From
!Sender:From: $return-path drop
|
Modifications du mardi 18 décembre 2001
|
Nouvelles fonctionnalités
Une extension destinataire est la chaîne de caractère
qui suit le signe « + »
dans la partie locale de l'adresse de livraison.
Par exemple, si votre boîte est postmaster@mondomaine.fr et
que vous recevez du courrier à l'adresse
postmaster+toto@mondomaine.fr l'extension est
toto .
La boîte d'une adresse avec une extension est la même que celle sans
cette extension et donc les filtres appliqués sont les mêmes.
La nouvelle commande stow permet de ranger le
courrier dans un dossier existant du nom de l'extension (réécrit en
minuscule). Avec un argument, stow recherche le dossier
dans le répertoire en argument.
Si le courrier n'a pas d'extension ou si le dossier n'existe pas,
stow ne fait rien. Si le courrier a pu être délivré,
le filtre est arrété.
Exemple
: stow foo
: stow
: deliver
Un courrier envoyé à postmaster+toto@mondomaine.fr sera
délivré dans le dossier foo.toto s'il existe, sinon dans
toto s'il existe, sinon dans le dossier par défaut
(Inbox ). Les courriers sans extensions seront simplement
délivrés.
Normalement, l'extension est prise sur l'adresse
du destinataire mais vous pouvez la changer avec la commande
extension .
Exemple
Subject: titi extension toto
: stow
: deliver
Délivre les courriers avec l'extension toto
et ceux dont le sujet contient titi dans le dossier
toto .
Avec la commande « log », il est possible
de suspendre ou de réactiver les logs durant le parcours du filtres.
À chaque log correspond un ou plusieurs évenements :
-
deliver
- Le courrier a été délivré quelque part dans la boîte
(éventuellement dans la poubelle)
-
forward
- Le courrier a été renvoyé à l'exterieur
-
drop
- Le courrier a été jeté
-
bounce
- Le courrier a engendré une erreur visible par l'expéditeur
-
error
- Il y a eu une erreur lors du traitement
(erreur de syntaxe, boucle de courrier, )
La commande « trash » sans arguments range le
courrier dans la poubelle et donc génère un log correspondant à
l'evenement « deliver ». Avec un argument, elle
envoie en plus une erreur à l'expéditeur et le log aura les événements
« deliver » et
« bounce ».
-
log +evenement1,evenements2
- ajoute
evenement1 et
evenement2 à la liste des évenements qui
génèrent des logs
-
log -evenement1,evenements2
- retire
evenement1 et
evenement2 de la liste des évenements.
-
log evenement1,evenements2
- définie la
liste des évenements avec
evenement1 et
evenement2
-
log evenement1,-evenements2,evenements3
- la liste des évenements contient ceux
d'
evenement1 moins ceux
d'evenement2 et
d'evenement3
- etc...
Par commodité, on peut aussi utiliser un des mots clefs suivants :
-
all
-
on
-
yes
- Tous les évenements
-
none
-
off
-
no
- Aucun evenements
Le log sera activé si un des évenements qui l'a généré est dans la
liste.
Notez que les évenements « error » sont
toujours loggés sauf si on précise explicitement
« -error ».
Exemple:
# désactive les logs en cas de bounce simple
: log -bounce
Subject: foo bounce
# réactive les logs de bounce mais désactive les logs de livraison
: log +bounce,-deliver
# réactive tous les logs
: log all
# désactive tout (mais il restera les erreurs)
: log off
# plusieures méthodes pour retirer réélement tous les logs
: log none,-error
: log -all,-error
Si vous avez une adresse IP fixe, vous pouvez recevoir une notification
en temps réél des messages reçu par syslog.
Exemple:
# activer les logs par syslog
: syslog ma.machine.mondomaine.fr
# désactiver les logs par syslog
: syslog
Sur les logs de ma.machine.mondomaine.fr , il y aura des
messages comme celui ci :
Dec 17 19:15:06 pop.server.net lwa@teaser.fr: from=<lwa@teaser.fr>, size=524, action=delivered
La date et l'heure sont locales à votre machine.
pop.serveur.net est le nom de la machine
qui a envoyé la notification, lwa@teaser.fr
est la boîte au lettre concernée (celle où vous avez défini le filtre).
from=<lwa@teaser.fr> l'expediteur du courrier.
size=524 indique la taille en octet du message et
action=delivered indique ce qui est advenu du message.
La notification est envoyée au niveau LOG_INFO
avec la facilité LOG_MAIL
Pour la recevoir, vous devez avoir un démon syslog qui
accepte des messages depuis les serveurs de filtre. Sur Unix,
syslogd est fourni en standard et il existe des démons
syslog pour d'autres architectures (Windows, Machintosh,
VMS...). Si vous avez un firewall il vous faudra laisser passer les
paquets UDP du réseau du serveur de filtre vers le port 514 de votre
machine.
Attention: si vous n'avez pas d'adresse IP fixe publique,
abstenez vous d'utiliser cette commande. Il n'y a aucune garantie
de livraison de la notification. Si votre ordinateur n'est pas
connecté, elle disparait. Si vous avez une IP fixe et une liaison non
permante (ISDN, RTC, etc.), les notifications peuvent empecher votre
lien de tomber au bout d'un certain temps.
|
Modifications du mardi 30 octobre 2001
|
Changements incompatibles avec la version précédente
Premier caractère des expressions rationnelles
Comme il est possible de choisir quelle type d'expression on
veut utiliser en les entourant de certains caractères, les caractères
en question, à savoir « / »,
« " » et « ' », au
début d'une expression, doivent être précédé par un
« \ » pour leur faire perdre leur sens
particulier.
Par exemple, à la place de:
Subject: "foo deliver
Subject: /foo deliver
Il faut écrire
Subject: \"foo deliver
Subject: \/foo deliver
Vérification dans « RBL » et « RSS »
Les listes de RBL et RSS étant désormais restreintes, il n'est plus
possible de les consulter. La variable de score
« i » renvoie systématiquement
zéro. Vos êtes encouragés à retirer de vos filtres les règles
associées à la consultation de ces listes.
Nouvelles fonctionnalités
Choix des expressions rationnelles
On peut choisir le type d'expression en entourant des caractères
« / », « " » ou
« ' ». Les expressions entourés par
« / » peuvent être suivies d'une lettre
d'option :
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/f
| expressions du shell | non
| "expression"
| expressions du shell | non
| 'expression'
| expressions du shell | non
| /expression/F
| expressions du shell | oui
|
Notez qu'il n'est plus nessessaire d'utiliser le caractère
d'échapement « \ » pour signifier un espace lorsque
l'expression est délimité par « / », « " » ou
« ' ».
Par exemple, on peut désormais écrire
Subject: /1 2 3/ deliver
à la place de
Subject: 1\ 2\ 3 deliver
bien que cette dernière expression reste valable.
Par contre il est nessesaire de d'échapper le caractère délimiteur.
Pour rechercher la séquence « 1/2/3 », vous
pouvez procéder d'une des deux façon suivantes :
Subject: 1/2/3 deliver
Subject: /1\/2\/3/ deliver
Les expressions du shell sont moins puissantes mais peuvent être plus
simples à manier que les expression rationnelles.
Elles n'ont, comme caractères spéciaux que
- «
* » qui indique une séquence de caractères
quelquonque
- «
? » qui indique un caractère quelquonque
- «
[d-f] » qui indique un caractère entre
« d » et « f »
Également, elle 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/
Subject: "*cassoulet*"
Ajout d'en-tête
Vous pouvez ajouter n'importe quelle en-tête au début de vos courriers
arrivant avec la commande « add ». L'exemple ci dessous
ajoute une en-tête « X-Cuisine »
Subject: /cassoulet/ add X-Cuisine: cassoulet
Notez que les en-tête dont le nom commence par « X- » sont
réservés, dans les courrier Internet (RFC 2822), à une utilisation
privée.
Une fois que l'en-tête est mise, vous pouvez vous en servir
ulterieurement pour filtrer. Les en-têtes personnelles apparaissent,
par défaut, dans le fichier de log.
Vérification des adresses de relai dans une liste noire publique
(blacklist)
Il est possible de vérifier si le courrier a transité par une des
adresses présente dans une ou plusieures des listes ci dessous :
- ORBL
(Open Relay Black List)
- ORBZ-I
(Open Relay Block Zone, liste « input »)
- ORBZ-O
(Open Relay Block Zone, liste « output »)
- ORDB
(Open Relay Database)
- OSIRUSOFT
(Osirusoft)
- 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.
Les serveurs de listes noires sont gérés par des entités exterieures.
Nous ne pouvont garantir ni leur serieux, ni leur
pertinence ni leur bon fonctionnement.
Ils fonctionnent par des requetes DNS, si un relai est présent
dans une liste noire, le serveur DNS renvoie une addresse IP (un
enregistrement « A ») et eventuelement un comentaire 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
relai suspect et d'ajouter un en-tête au courrier pour le signaler.
Par exemple :
: blacklist wsff,invalid* X-Blacklist: %q bloqué 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 (« * »), tous les relais seront
vérifier, sinon, seul le relai par lequel le serveur de filtrage
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'adrese IP vérifiée 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 »
(1 pour le relai ayant envoyé un courrier au serveur de filtrage,
2 pour le relai ayant envoyé un courrier au précedent, etc.)
- «
%a » l'adresse retournée par la liste (en « A »)
- «
%t » le commentaire eventuelement 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.
Arithmétique sur le score
En des additions et des soustractions sur le score, on peut désormais
faire des multiplications, des divisions et un calcul de modulo.
L'exemple suivant multipliplie le score par 2, le divise par 2 et
calcule sont résidu modulo 2.
: score *2
: score /2
: score %2
Filtre sur le corp du message
On peut désormais 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 a la fin
du corps du message.
L'exemple si dessous délivre le courrier si la chaîne bonjour
est présente dans les 200 premiers octets :
+200 /bonjour/ deliver
Dans cet exemple, par contre, on délivre le courrier si
la chaine au revoir est présente dans les 200 derniers octets
du message :
-200 /au revoir/ deliver
Il est possile de nier l'expression :
+200 !/bonjour/ bounce les gens polis disent bonjour
Le corps du message débute toujours par une première ligne vide.
Retour chariot et tabulation dans les expressions
Les expressions rationnelles (hormis les expressions compatibles avec
perl) et les expressions du shell ne contiennent normalement pas de
moyen élégant de vérifier une tabulation ou un retour chariot.
Ces expressions sont pré-interprétée par le système de filtre
pour remplacer les séquences de caractères suivants :
- «
\n » est interprété comme un passage à la ligne
- «
\t » est interprété comme un caractère de tabulation
L'exemple ci dessous délivre le courrier s'il contient,
dans ses 200 premiers octets, une ligne commençant par
bonjour, enventuelement précédé par des blancs :
+200 /\n[\t ]*bonjour/ deliver
Casse du nom d'un en-tête
La recherche selon un en-tête était et reste insensible à la casse.
Par exemple, les quatre lignes ci dessous vérifient la même chose :
Subject: /toto/
subject: /toto/
SuBjEcT: /toto/
SUBJECT: /toto/
Il est désormais possible de rechercher dans les en-tête écrits
avec une certaine casse en précédant le nom de l'en-tête avec sa casse
par le signe « \ ». L'exemple ci dessous
regarde s'il y a un en-tête « date » écrit en
minuscule.
\date: "*" bounce courrier probablement infecte par w32.sircam
|
|