[gull] sendmail

Daniel Cordey dc at mjt.ch
Wed Sep 21 13:11:55 CEST 2005


On Wednesday 21 September 2005 12:14, Leopoldo Ghielmetti wrote:

> En effet sendmail ne lit pas le fichier nsswitch.conf mais cet autre
> fichier.

J'avais oublie...

Ceci mis a part, voici un bon moyen de tester ce que sendmail a l'intention de
faire avec une adresse :

mjtlnx3:/home/dc # sendmail -Csendmail.cf -bv toto at gmail.com
toto at gmail.com... deliverable: mailer esmtp, host gmail.com., user toto at gmail.com
mjtlnx3:/home/dc #   

Dans ce cas, on voit que sendmail va tenter d'etablir une connexion en utilisant le 'mailer' esmtp.
Ceci sera une connexion directe avec le serveur de mail (suppose) gmail.com

Si maintenant je rajoute la ligne suivante dans mon fichier sendmail.cf

DSmy-smart-relay.ch

L'execution de la commande precedente me donnera :

mjtlnx3:/home/dc # sendmail -Csendmail.cf -bv toto at gmail.com
toto at gmail.com... deliverable: mailer relay, host my-smart-relay.ch, user toto at gmail.com
mjtlnx3:/home/dc #   

Dans ce cas, le mail sera envoye tel quel a 'my-smart-relay.ch'

L'option -bv de sendmail permet de tester ce que sendmail va vraiment faire avec cette adresse.
C'est tres utile pouyr debusquer les comptes qui ont un ~/.forward ou un alias qui trainent. Toute
la chaine d'execution de sendmail est executee et le resultat est juste "recuperer" et afficher avant
l'appel du "mailer" (au sens sendmail). Ne l'oubliez donc pas !


Il est possible de debugger de maniere plus profonde les differentes regles de "transformation" et 
interpretation des adresses passees a sendmail. On peut tester chaque "ruleset' de maniere 
individuelle. Ceci de la manire suivante :

mjtlnx3:/home/dc # sendmail -Csendmail.cf -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0 toto at gmail.com
parse              input: toto @ gmail . com
Parse0             input: toto @ gmail . com
Parse0           returns: toto @ gmail . com
Parse1             input: toto @ gmail . com
Parse1           returns: $# local $: toto @ gmail . com
parse            returns: $# local $: toto @ gmail . com
> 3 toto at gmail.com
canonify           input: toto @ gmail . com
Canonify2          input: toto < @ gmail . com >
Canonify2        returns: toto < @ gmail . com . >
canonify         returns: toto < @ gmail . com . >
> 5 toto at gmail.com
localaddr          input: toto @ gmail . com
MailerToTriple     input: < vews01 . localnet > toto @ gmail . com < @ vews01 . localnet >
MailerToTriple   returns: $# relay $@ vews01 . localnet $: toto @ gmail . com < @ vews01 . localnet >
localaddr        returns: $# relay $@ vews01 . localnet $: toto @ gmail . com < @ vews01 . localnet >

(y'avait un DH... qui trainait)

>ParseRecipient toto at gmail.com
ParseRecipient     input: toto @ gmail . com
CanonAddr          input: toto @ gmail . com
canonify           input: toto @ gmail . com
Canonify2          input: toto < @ gmail . com >
Canonify2        returns: toto < @ gmail . com . >
canonify         returns: toto < @ gmail . com . >
Parse0             input: toto < @ gmail . com . >
Parse0           returns: toto < @ gmail . com . >
CanonAddr        returns: toto < @ gmail . com . >
ParseRecipient   returns: toto < @ gmail . com > dequote local part
> mjtlnx3:/home/dc #   

Dans ce cas, j'ai teste comment sendmail traitait mon adresse toto at gmail.com dans les rulesets :

0, 3, 5 et ParseRecipient

On peut donc tester toutes les etapes. On voit par exemple que 'ParseRecipient' a appele 
'CanonAddr' qui lui-meme a appele 'canonify', appelant 'Canonify2', pour ensuite retourne dans 
'ParseRecipient', engendrant ensuite un appel a 'Parse0'... et revenir a la fin de 'ParseRecipient'.

Ceci est utile en cas de re-ecriture de certaines regles (optimisation, raccourci, introduction de programmes
intermediaires... etc.), ou en cas de relay un peu complexe avec re-ecriture des adresses avec masquage
'maison'. On ne se lance la-dedans que si l'on a epuise toutes les autres solutions de recherche
de problemes. Mais au moins, ca evite de devoir se taper le code source pour le debugging :-)

dc






More information about the gull mailing list