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$-         @     $+         
  -^ 
arnaud          Pas de correspondance possible car pas de @ et nom de domaine  


R$+                
  -^             
arnaud          Ok l'adresse coincide  (1 ou plusieurs littéral)


 R$-                 
  -^ 
arnaud         Ok 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

> 55 arnaud.fileux@decaservices.com
55
input: arnaud . fileux @ decaservices . com
-----trying rule: $+ @ $+
-----rule matches: $: $1
rewritten as: arnaud . fileux
-----trying rule: $+ @ $+
----- rule fails 55
returns: arnaud . fileux
>
> 56 arnaud.fileux@decaservices.com
56
input: arnaud . fileux @ decaservices . com
-----trying rule: $+
-----rule matches: $: $1
rewritten as: arnaud . fileux @ decaservices . com 56
returns: arnaud . fileux @ decaservices . com
>
> 57 arnaud.fileux@decaservices.com
57
input: arnaud . fileux @ decaservices . com
-----trying rule: $+ @ $+
-----rule matches: $: $1
rewritten as: decaservices . com
returns: decaservices . com
>