[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