La LHS
La LHS correspond à l'adresse email testée en réecriture. Afin d'affiner les tests, plusieurs types d'opérateurs existent. Ils sont utiliser pour des vérifications de correspondances d'adresses (çi-dessous c'est $+ @ $=m qui est testé).
Si ce test est présent dans la règle check_mail (vérification de l'expéditeur) et que l'expéditeur est arnaud.fileux@decaservices.com alors la LHS coincide avec l'adresse de l'expéditeur et pourra être réécrite en fonction de la RHS (non présente içi).
R$+ @ $+
arnaud.fileux @ decaservices.com
Ok l'adresse coincide
Les opérateurs
Les opérateurs possibles dans la LHS sont: $+, $-, $*, $@, $=, $~
$+ correspond à n'importe quel littéral sauf un blanc. (ex: arnaud.fileux@decaservices.com ou bien arnaud.fileux ou encore decaservices.com )
$- correspond exactement à un littéral. (ex: arnaud ou fileux ou decaservices ou fr mais pas arnaud.fileux ni arnaud.fileux@decaservices.com ni decaservices.com)
$* correspond à n'importe quel littéral y compris un vide.
$@ correspond à un vide. ( <$@> correspond à une adresse email vide. Pour répondre aux normes RFC, ce type d'addresse existe dans votre configuration)
Exemple:
# handle null input (translate to <@> special case)
R$@ <@>
$= correspond exactement à une macro. (si $j vaut mail.domaine.com alors $=j vaut mail.domaine.com)
$~ correspond à un seul littéral.
Utiliser les macros dans la LHS
Les macros définies (y compris celles internes à Sendmail) peuvent et doivent être utilisées dans les règles de réécritures. Les macros sont interprétées de la façcon suivante:
============ SYSTEM IDENTITY (after readcf) ============
(short domain name)
$w = mail (canonical domain name)
$j = mail.domaine.com (subdomain name)
$m = domaine.com (node name)
$k = mail.domaine.com
========================================================
Pour connaître la définition de toutes vos macros tapez: /usr/sbin/sendmail -bt -d35.9
Autres exemples:
R$+ @ $=m
arnaud.fileux @ decaservices.com
Ok l'adresse coincide si mon domaine est decaservices.com
R$- @ $+
arnaud.fileux @ decaservices.com
Pas de correspondance possible, il n'y aura pas réécriture car $- coincide avec arnaud uniquement
Adresse testée: arnaud@decaservices.com
R$+ @ $+
arnaud @ decaservices.com
Ok l'adresse coincide
R$- @ $+
arnaud @ decaservices.com
Ok l'adresse coincide
Adresse testée: arnaud
R$+ @ $+
arnaud
Pas de correspondance possible car pas de @ et nom de domaine
R$- @ $+
arnaudPas de correspondance possible car pas de @ et nom de domaine R$+
arnaudOk l'adresse coincide (1 ou plusieurs littéral)
R$-
arnaudOk l'adresse coincide (exactement 1 litéral) R$*
arnaud
Ok l'adresse coincide (1 ou plusieurs litéral ou rien)
Pour vous familiariser avec le principe, créez vous des règles du type
#####Regle 55 de test S55 R$+ @ $+ $: $1 R$+ @ $+ $: $2 #####Regle de 56 test S56 R$+ $: $1 #####Regle 57 de test S57 R$+ @ $+ $: $2
Puis testez les en mode debugg pour bien comprendre les réécritures:
/usr/sbin/sendmail -bt -d21.12
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter