Règle 0
La règle 0 définit le triplet composé du nom symbolique de l'agent de livraison (delivery agent) du courrier (local, smtp, error...), de l'hôte (host part) chargé de prendre en charge le courrier (localhost, nom de machine, adresse IP,..) et l'adresse email que Sendmail passe au mailer (user part):
Exemple 1: Un utilisateur a pour adresse arnaud.fileux@decaservices.com. Il possède un login arno sur la machine local. Il récupère son courrier à l'aide du programme /usr/bin/mail. La règle 0 doit alors être faite ainsi:
1 Consultation d'une base virtusertable et réécriture de arnaud.fileux@decaservices.com en arno.
2 Le triplet contient
- delivery agent = local
- host part = localhost
- user part arno
Pour réaliser cela, on peut appeler une règle que nous créons:
R$+<@$=m.> $: $>99 $1@$2 On appelle la regle 99
S99
R$+@$+ $: $(virtuser $1@$2 $:$1.INVALIDUSER $) Inspection de la base virtusertable
R$+.INVALIDUSER $#error $@5.7.1 $:Utilisateur $1 inconnu...
R$+ $#local $@ localhost $: $1
En mode debbug:
hendrix# /usr/sbin/sendmail -bt -d21.12 -C/etc/mail/sendmail.cf ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter
Nous obtenons bien notre triplet local - localhost - arno pour notre adresse de courrier arnaud.fileux@decaservices.com
Le nom symbolique de l'agent de transport local est en fait un programme (içi mail.local sur mon FreeBSD) défini dans la section MAILER DEFINITION:
Mlocal, P=/usr/libexec/mail.local, F=lsDFMAw5:/|@qPrmn9, S=EnvFromL/HdrF romL, R=EnvToL/HdrToL,
T=DNS/RFC822/X-Unix,
A=mail -d $u
Note: je passe l'adresse sous le format nom<@domaine.com.> et non nom@domaine.com car c'est l'adresse 3 qui passe ce type d'adresse à la règle 0. Si vous souhaitez donner une adresse nom@domaine.com appelez d'abord la règle 3 puis la règle 0 en tappant juste 3,0 au lieu de 0.
Si vous devez router du courrier vers un autre MTA, dans ce cas vous serez amener à utiliser un mailer agent plutôt du type smtp et l'hôte ne sera pas localhost mais un nom de machine et la partie utilisateur ne sera pas juste un nom d'utilisateur mais une adresse email complète comme par exemple:
S99
R$+@$+ $: $(virtuser $1@$2 $:$1.INVALIDUSER $) Inspection de la base virtusertable
R$+.INVALIDUSER $#error $@5.7.1 $:Utilisateur $1 inconnu...
R$+ $#esmtp $@ clapton.decaservices.com $: $1
Dans votre virtusertable, la réécriture d'adresse sera par exemple arnaud.fileux@decaservices.com en arno@ailleurs.com.