On peut maintenant tester la façon dont sendmail réécrit les adresses, et décide à quel mailer envoyer le message. Pour cela, on utilise l'option -bt.
On peut commencer par tester si les courriers locaux sont bien redistribués en utilisant le mailer local :
[mdecore@aline mdecore]$ sendmail -bt ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 mdecore canonify input: mdecore Canonify2 input: mdecore Canonify2 returns: mdecore canonify returns: mdecore parse input: mdecore Parse0 input: mdecore Parse0 returns: mdecore ParseLocal input: mdecore ParseLocal returns: mdecore Parse1 input: mdecore Parse1 returns: $# local $: mdecore parse returns: $# local $: mdecore > 3,0 mdecore@aline canonify input: mdecore @ aline Canonify2 input: mdecore < @ aline > Canonify2 returns: mdecore < @ aline . > canonify returns: mdecore < @ aline . > parse input: mdecore < @ aline . > Parse0 input: mdecore < @ aline . > Parse0 returns: mdecore < @ aline . > ParseLocal input: mdecore < @ aline . > ParseLocal returns: mdecore < @ aline . > Parse1 input: mdecore < @ aline . > Parse1 returns: $# local $: mdecore parse returns: $# local $: mdecore >
ou, avec le kit-jussieu :
> 3,0 waves rewrite: ruleset 3 input: waves rewrite: ruleset 19 input: waves rewrite: ruleset 19 input: waves < @ . LOCAL > rewrite: ruleset 19 returns: waves < @ machine . division . domaine . fr . EXTERNE > rewrite: ruleset 19 returns: waves < @ machine . division . domaine . fr . EXTERNE > rewrite: ruleset 3 returns: waves < @ machine . division . domaine . fr . EXTERNE > rewrite: ruleset 0 input: waves < @ machine . division . domaine . fr . EXTERNE > rewrite: ruleset 0 returns: $# smtp $@ [ mailhost . division . domaine . fr ] $: waves < @ machine . division . domaine . fr > > 3,0 mdecore@linux-france.org rewrite: ruleset 3 input: mdecore @ linux-france . org rewrite: ruleset 19 input: mdecore < @ linux-france . org > rewrite: ruleset 19 returns: mdecore < @ linux-france . org . EXTERNE > rewrite: ruleset 3 returns: mdecore < @ linux-france . org . EXTERNE > rewrite: ruleset 0 input: mdecore < @ linux-france . org . EXTERNE > rewrite: ruleset 0 returns: $# smtp $@ [ mailhost . division . domaine . fr ] $: mdecore < @ linux-france . org > >
On constate que le mailer utilisé sera bien le mailer local (returns: $# local) dans les deux cas.
Voyons maintenant pour les autres machines de notre réseau :
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 postmaster@anais canonify input: postmaster @ anais Canonify2 input: postmaster < @ anais > Canonify2 returns: postmaster < @ anais > canonify returns: postmaster < @ anais > parse input: postmaster < @ anais > Parse0 input: postmaster < @ anais > Parse0 returns: postmaster < @ anais > ParseLocal input: postmaster < @ anais > ParseLocal returns: postmaster < @ anais > Parse1 input: postmaster < @ anais > Mailertable input: < anais > postmaster < @ anais > Mailertable returns: postmaster < @ anais > MailerToTriple input: < > postmaster < @ anais > MailerToTriple returns: postmaster < @ anais > Parse1 returns: $# esmtp $@ anais $: postmaster < @ anais > parse returns: $# esmtp $@ anais $: postmaster < @ anais > >
Ce test montre que le courrier sera directement distribué à l'utilisateur postmaster de l'hôte anais via esmtp (returns: $# esmtp $@ anais $: postmaster < @ anais >).
On peut enfin tester les adresses extérieures à notre réseau, en prenant celle chez notre fournisseur d'accès par exemple :
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 mdecore@free.fr canonify input: mdecore @ free . fr Canonify2 input: mdecore < @ free . fr > Canonify2 returns: mdecore < @ free . fr . > canonify returns: mdecore < @ free . fr . > parse input: mdecore < @ free . fr . > Parse0 input: mdecore < @ free . fr . > Parse0 returns: mdecore < @ free . fr . > ParseLocal input: mdecore < @ free . fr . > ParseLocal returns: mdecore < @ free . fr . > Parse1 input: mdecore < @ free . fr . > Mailertable input: < free . fr > mdecore < @ free . fr . > Mailertable input: free . < fr > mdecore < @ free . fr . > Mailertable returns: mdecore < @ free . fr . > Mailertable returns: mdecore < @ free . fr . > MailerToTriple input: < > mdecore < @ free . fr . > MailerToTriple returns: mdecore < @ free . fr . > Parse1 returns: $# esmtp $@ free . fr . $: mdecore < @ free . fr . > parse returns: $# esmtp $@ free . fr . $: mdecore < @ free . fr . > >
Le résultat ne diffère pas de l'emple précédent, le serveur ESMTP du domaine free.fr sera contacté pour distribuer le courrier à l'utilisateur mdecore.
Si on a configuré notre réseau de telle sorte que tous les autres domaines que le notre ne soient pas reconus, on passe par le serveur du fournisseur d'accès. Dans ce cas, on aura comme sortie :
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked) Enter <ruleset> <address> > 3,0 postmaster@unautredomaine.com canonify input: postmaster @ unautredomaine . com Canonify2 input: postmaster < @ unautredomaine . com > Canonify2 returns: postmaster < @ unautredomaine . com . > canonify returns: postmaster < @ unautredomaine . com . > parse input: postmaster < @ unautredomaine . com . > Parse0 input: postmaster < @ unautredomaine . com . > Parse0 returns: postmaster < @ unautredomaine . com . > ParseLocal input: postmaster < @ unautredomaine . com . > ParseLocal returns: postmaster < @ unautredomaine . com . > Parse1 input: postmaster < @ unautredomaine . com . > MailerToTriple input: < smtp8 : [ mail . fai . fr ] > postmaster < @ unautredomaine . com . > MailerToTriple returns: $# smtp8 $@ [ mail . fai . fr ] $: postmaster < @ unautredomaine . com . > Parse1 returns: $# smtp8 $@ [ mail . fai . fr ] $: postmaster < @ unautredomaine . com . > parse returns: $# smtp8 $@ [ mail . fai . fr ] $: postmaster < @ unautredomaine . com . > >
On constate ici que le serveur SMTP mail.fai.fr sera contacté pour redistribué le courrier à l'utilisateur postmaster du domaine unautredomaine.com (returns: $# smtp8 $@ [ mail . fai . fr ] $: postmaster < @ unautredomaine . com . >). En fait, tous les noms de domaines non reconnus sont supposés être exérieurs à notre réseau, si bien qu'on considère qu'il faut passer par le fournisseur d'accès. Le nom de domaine peut très bien ne pas exister, il passera quand même par fai.