Dans un environnement de messagerie, il est parfois intéressant de pouvoir transformer des adresses email:
Lorsqu’une entreprise change de dénomination sociale, une personne se marie et change de nom, pour des raisons de sécurité, etc.
Sendmail offre un dispositif standard de réécriture d’adresses: la genericstable.
Ce dispositif est destiné à transformer une adresse en une autre durant l’expédition d’un message. Malheureusement, ceci ne fonctionne qu’avec les domaines locaux, ceux qui sont gérés via le local-host-name. Le problème se pose donc lorsque l’on veut modifier une adresse distante, celle d’un FAI par exemple.
Heureusement, la grande force de Sendmail est justement de pouvoir réécrire n’importe quelle adresse. Il suffit donc de créer une nouvelle règle et de l’insérer dans le fichier sendmail.mc. Néanmoins pour des raisons de clarté, il est préférable de mettre la règle dans un fichier satellite.
J’ai appelé celui-ci « rewrite », et en voici son contenu:
LOCAL_RULE_3
D{DOMAINE}mon-domaine.com #` mon-domaine.com’
D{WANAGOO}wanagoo.fr #`wanagoo.fr’
Rlaurent<@${DOMAINE}>$* laurent.baloche<@${WANAGOO}>$1
Rcharles<@${DOMAINE}>$* charles.vanpiperzen<@${WANAGOO}>$1
Et en voici les explications:
Tout d’abord, la règle sera placée dans le groupe numéro 3 (LOCAL_RULE_3) en charge du prétraitement des adresses.
La lettre D définit la macro « DOMAINE » et y affecte le domaine, ici mon-domaine.com.
La lettre D définit la macro « WANAGOO » et y affecte le domaine distant, ici wanagoo.fr.
L’instruction suivante utilise la réécriture, la lettre « R » pour transformer l’adresse initiale lauren@mon-domaine.com en laurent.baloche@wanagoo.fr.
Idem pour charles@mon-domaine.com qui est transformée en charles.vanpiperzen@wanagoo.fr
Ceci fait, il suffit d’inclure les règles dans le fichier sendmail.mc:
include(`/etc/mail/rewrite’)
Puis de reconstruire le sendmail.cf:
#m4 sendmail.mc >sendmail.cf
et enfin faire relire à sendmail sa configuration:
#kill -HUP `head -1 /var/run/sendmail.pid’
Attention, cette opération doit être exécutée à chaque fois que l’on insère une nouvelle entrée dans le fichier rewrite.