<HTML> <HEAD> <TITLE>La configuration</TITLE> </HEAD> <BODY> <H1>2. <A NAME="s2"></A>La configuration</H1> <P> <A HREF="Sendmail+UUCP.html#toc2">Contenu de cette section</A></P> <P>C'est pour un système, hypothétiquement appelé <CODE>me.com</CODE>, dont le courrier est envoyé uniquement via UUCP. <CODE>mysmarthost</CODE> est le nom de la machine de mon FAI tel qu'il est configuré dans <CODE>le fichier uucp sys</CODE> et <CODE>me.com</CODE> est le nom de machine que nous utilisons ou sous lequel nous sommes connus dans les enregistrements MX sur Internet. <CODE>mysmarthost</CODE> est connecté à Internet. Nous nous moquons vraiment de savoir comment, nous savons juste qu'elle sait comment nous y conduire. <CODE>me.com</CODE>, dont la configuration que nous décrivons dans l'exemple, alimente les sites <CODE>down.com</CODE> et <CODE>system1.org</CODE> et leurs sous-noeuds. <CODE>me.com</CODE> se connecte à <CODE>down.com</CODE> via TCP/IP et se connecte à <CODE>system1.org</CODE> via une connexion UUCP directe par une ligne téléphonique. La description de la configuration est indiquée çi-dessous :</P> <P> <PRE> ------------------------ | | | Internet | | | ----------------------- | | Ligne dediee a PPP utilisant TCP-IP | ------------- | | |mysmarthost | Serveur de noms autoritaire pour | | *.me.com, *.down.com, *.system1.org | | -------------- | | UUCP par reception ligne telephonique pour | system1.org, *.system1.org,*.down.com, down.com | ainsi que me.com et *.me.com ------------ | * ***** * | ------------ | * me.com * | ------ | * * | | | | * ***** * | | | ------------ | |UUCP via ligne telephonique | uucp via TCP/IP | | ----------- ----------- | | | | |system1.org| | down.com |------- | | | | | ---------- ------------ | | | | | | | | LAN_: smtp vers le noeud | UUCP ligne telephonique | | ----------------- ---------------- | | | | |Sous-noeuds de | | Reseau local | |de system1 | | de down | | | ---------------- ----------------- </PRE> </P> <P>Prérequis</P> <P><CODE>1)</CODE> Si vous avez déjà un DNS qui marche ou avez un pointeur sur un DNS (dans votre /etc/resolv.conf) et avez une connexion directe au réseau alors passez cette partie. Vous êtes sauf. Vous n'avez pas de choses "intelligentes" à faire.<BR></P> <P><CODE>2)</CODE> Si vous êtes sur une machine utilisant uucp pour le courrier alors vous n'avez pas vraiment besoin de compiler bind/resolv dans sendmail ;</P> <P>Comment survivre à la mise sous forme canonique sur une machine indépendante sans DNS</P> <P></P> <H2>2.1 <A NAME="ss2.1"></A> PARTIE I</H2> <P>Si vous prenez un sendmail pré-compilé avec BIND dedans vous pouvez toujours y arriver (comme c'est le cas avec le sendmail de RedHat).</P> <P><CODE>a)</CODE> Vous référer à ma solution pour ça basée sur le fichier m4 décrit (mon favori). Essayez d'utiliser cette option à moins que vous teniez à b) ou c) ci-dessous. OU</P> <P><CODE>b)</CODE> Si vous me contactez je pourrais vous fournir une version non compilée avec BIND (8.8.5). Peut-être que RedHat devrait considérer la fourniture de deux binaires sendmail (comme slackware) un avec BIND et l'autre sans BIND. OU </P> <P><CODE>c)</CODE> La solution la plus rapide pour avoir un sendmail sans bind est d'éditer les lignes de <CODE>src/conf.h</CODE> ci-dessous comme je l'ai montré :</P> <P><CODE># ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* use Berkeley Internet Domain Server */</CODE></P> <P></P> <H2>2.2 <A NAME="ss2.2"></A> PARTIE II</H2> <P>Sendmail devrait cependant normallement insister à faire les requêtes de noms pour résoudre la partie machine en utilisant <CODE>gethostbyaddr()</CODE> pour chaque mail qu'il envoie (même si vous lui dites de ne pas mettre les noms sous forme canonique).</P> <P><CODE>a)</CODE> utiliser une adresse IP de la <CODE>RFC1597</CODE> (10.0.0.0-10.255.255.255, 172.16.0.0-172.31.255.255, 192.168.0.0-192.168.255.255) Editez <CODE>/etc/hosts</CODE> et ajoutez ce qui suit comme exemple pour la machine myhost <CODE>10.0.0.1 myhost.me.com myhost</CODE> OU</P> <P><CODE>b)</CODE> Si vous utilisez NIS (et NIS est compilé dans sendmail comme cela semble être le cas dans la RedHat.) assurez vous que le fichier <CODE>/etc/nsswitch.conf</CODE> contienne : <CODE>hosts: files dns</CODE> et dans <CODE>/etc/hosts</CODE> et ajoutez ce qui suit comme exemple pour la machine myhost <F>toujours en utilisant l'adressage IP de la RFC1597</F> <CODE>10.0.0.1 myhost.me.com myhost</CODE></P> <P><CODE>NOTE : </CODE> Dans a) et dans b) ci-dessus il est vital que vous listiez le long (complètement qualifié) dans le fichier /etc/hosts utilisé. i.e la ligne doit être <CODE>10.0.0.1 myhost.me.com</CODE> et NON <CODE>10.0.0.1 myhost</CODE> vous aurez aussi besoin de définir la macro sendmail <CODE>$j</CODE> pour qu'elle contienne <CODE>myhost.me.com</CODE> ajoutez ce qui suit à votre fichier <CODE>/etc/sendmail.cf</CODE> après qu'il ait été généré <CODE>Dmyhost.me.com</CODE> (ou vous pouvez utiliser <CODE>MASQUERADE_AS(myhost.me.com)</CODE> dans le fichier <CODE>.mc</CODE> ci-dessous)</P> <P><CODE>NOTE</CODE> !!!!! <CODE>myhost</CODE> comme nom de domaine est donné à titre d'exemple ; vous n'avez pas à l'utiliser tel quel. Choisissez-vous votre propre nom de machine si vous n'en avez pas déjà un.</P> <P><CODE>2)</CODE> Assurez-vous que vous avez makemap et qu'il est capable de supporter hash et/ou le format plus commun dbm ou même le format btree (La version RedHat ne supporte pas dbm). Makemap est normallement distribué avec sendmail.</P> <P></P> <H2>2.3 <A NAME="ss2.3"></A> CONFIGURATION (le fichier mc)</H2> <P></P> <P><CODE>I)</CODE> créez votre fichier .mc avec votre éditeur favori ; j'appellerai ce fichier <CODE>my.mc</CODE></P> <P><CODE>a) Pas de DNS -- machine indépendante</CODE></P> <P><CODE>include(`../m4/cf.m4')</CODE><BR> <CODE>VERSIONID(`me.com setup with uucp created by xxxx --no dns ')</CODE><BR> <CODE>dnl OSTYPE(linux)</CODE><BR> <CODE>FEATURE(nodns)dnl</CODE><BR> <CODE>FEATURE(nocanonify)dnl</CODE><BR> <CODE>FEATURE(always_add_domain)dnl</CODE><BR> <CODE>FEATURE(mailertable, hash /etc/mailertable)dnl</CODE><BR> <CODE>MAILER(local)dnl</CODE><BR> <CODE>MAILER(smtp)dnl</CODE><BR> <CODE>MAILER(uucp)</CODE><BR> <CODE>define(`SMART_HOST', uucp-dom:mysmarthost)</CODE><BR></P> <P>Dissequons ceci :</P> <P><CODE>include(`../m4/cf.m4')</CODE> requiert l'inclusion de la macro m4 qui se trouve dans ../m4/cf.m4 afin de résoudre certaines choses.</P> <P><CODE>VERSIONID(`me.com setup with uucp created by xxxx --no dns ')</CODE> C'est utilisé pour distinguer les différentes versions du fichier .cf que vous pourriez finir par créer.</P> <P><CODE>OSTYPE(linux)</CODE> Ca sert à définir/redéfinir les choses spécifiques à Linux. Il est prudent de l'avoir ici.</P> <P><CODE>FEATURE(nodns)dnl</CODE> Cela veut dire que nous n'avons pas de serveur DNS (comme nous n'utilisons uucp que pour le mail. Sendmail doit être compilé pour ne pas utiliser bind). C'est devenu obsolète. Je vais le laisser ici juste au cas où vous utiliseriez une version plus ancienne de sendmail.</P> <P><CODE>FEATURE(nocanonify)dnl</CODE> Cela veut dire Ne passez pas les addresses à la règle <CODE>$[ ... ]$</CODE> pour la mise en forme canonique. Normallement si vous avez BIND compilé dans sendmail, il essayerait et développerait l'alias/l'adresse IP en un nom canonique grâce au DNS. Vous n'en avez pas besoin si tout ce que vous avez ne sont que des approvionnements par UUCP i.e. : vous avez une machine indépendante.</P> <P><CODE>FEATURE(always_add_domain)dnl</CODE> Ceci ajoute le nom de domaine local même au mail local. Ce n'est pas nécessaire mais j'aime bien ; <CODE>Ce n'est peut-être pas prudent dans la mesure où les spammeurs, avec une configuration appropriée, peuvent vous embêter.</CODE> me.com n'est pas connecté au réseau via tcp/ip donc c'est sans danger.</P> <P><CODE>FEATURE(mailertable, hash /etc/mailertable)dnl</CODE> Le fichier <CODE>/etc/mailertable</CODE> sera une base de donnée <CODE>hashée</CODE> où nous allons stocker les informations de routage de certains sites. Si vous n'approvisionez personne vous n'en avez pas besoin. J'en dirai plus là-dessus plus tard. Si vous vouliez utiliser le format <CODE>dbm</CODE> vous auriez <CODE>FEATURE(mailertable, dbm /etc/mailertable)dnl</CODE> Si vous vouliez utiliser le format <CODE>btree</CODE> vous auriez <CODE>FEATURE(mailertable, btree /etc/mailertable)dnl</CODE></P> <P><CODE>MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp)</CODE> Ce sont les mailers que nous utilisons.</P> <P><CODE>define(`SMART_HOST', uucp-dom:mysmarthost)</CODE> Notre smarthost est chez notre FAI, il est défini dans le fichier <CODE>sys</CODE> comme <CODE>system mysmarthost</CODE>. Tous les messages que nous ne pouvons pas traiter (i.e : ceux dont les domaines ou les mailers nous sont étrangers) seront envoyés à notre smarthost/FAI qui s'en débrouillera. Notez que nous utilisons uucp-dom comme mailer uucp. Ce mailer particulier utilise des règles de réécritures de type smtp.</P> <P><CODE>b) Avec DNS</CODE></P> <P><CODE>include(`../m4/cf.m4')</CODE><BR> <CODE>VERSIONID(`me.com setup with uucp created by xxxx --dns enabled')dnl</CODE><BR> <CODE>OSTYPE(linux)</CODE><BR> <CODE>FEATURE(always_add_domain)dnl</CODE><BR> <CODE>FEATURE(mailertable, hash /etc/mailertable)dnl</CODE><BR> <CODE>MAILER(local)dnl</CODE><BR> <CODE>MAILER(smtp)dnl</CODE><BR> <CODE>MAILER(uucp)</CODE><BR> <CODE>define(`SMART_HOST', uucp-dom:mysmarthost)</CODE><BR></P> <P><CODE>II) Crééz votre fichier sendmail.cf</CODE></P> <P><CODE>a)</CODE> Sauvegardez votre ancien fichier <CODE>/etc/sendmail.cf</CODE><BR> <CODE>b)</CODE> Remplacez votre fichier sendmail.cf avec le nouveau : <CODE>m4 my.mc /etc/sendmail.cf</CODE><BR> <CODE>c)</CODE> Verifiez que le fichier sendmail.cf a été correctement créé sur les bases de vos spécifications.<BR> Les quelques problèmes que j'ai eus sont : <CODE>le mailer uucp-dom manquant</CODE> C'était parceque je n'avais pas mis le mailer smtp. En fait, j'ai compris que c'est important de le mettre avant l'uucp.<BR></P> <P><CODE>III) Crééz votre fichier /etc/mailertable</CODE><BR> Si vous n'alimentez pas de sites uucp vous pouvez omettre cette étape.<BR> <CODE>a) crééz/éditez le fichier /etc/mailertable</CODE> exemple de fichier /etc/mailertable :</P> <P><CODE>system1.org uucp-dom:system1</CODE><BR> <CODE>.system1.org uucp-dom:system1</CODE><BR> <CODE>down.com uucp-dom:down</CODE><BR> <CODE>up.down.com error: Host is unknown at me.com</CODE><BR> <CODE>.down.com uucp-dom:down</CODE><BR> <CODE>.me.com error: Host unknown at me.com</CODE><BR></P> <P>Cela veut dire que tout ce qui est adressé à <CODE>system1.org</CODE> ou à <CODE>*.system1.org</CODE> et que nous recevons sera envoyé à <CODE>system1</CODE> en utilisant <CODE>uucp-dom</CODE> en autres termes nous faisons le routage de mail pour <CODE>*.system1.org</CODE>; idem pour <CODE>down.com</CODE> et ses sous-noeuds sauf en ce qui concerne le filtrage additionnel ; nous renvoyons tout mail pour le sous-noeud de down <CODE>up.down.com</CODE> en utilisant le mailer <CODE>error</CODE> intégré à sendmail avec le message <CODE>"Host is unknown at me.com"</CODE> ; Tout ça parceque l'administrateur de <CODE>down.com</CODE> nous l'a demandé. Pour renvoyer les sous-domaines qui nous sont inconnus nous utilisons la dernière ligne de mailertable (ce que sont nous les sous-noeuds par défaut).</P> <P><CODE>b)</CODE> créez la base de données avec <CODE>makemap</CODE></P> <P>si vous utilisez <CODE>hash</CODE> : <CODE>makemap hash /etc/mailertable < /etc/mailertable</CODE> si vous utilisez <CODE>dbm</CODE> : <CODE>makemap dbm /etc/mailertable </etc/mailertable</CODE> si vous utilisez <CODE>btree</CODE> : <CODE>makemap btree /etc/mailertable </etc/mailertable</CODE></P> <P>à faire à chaque fois que vous modifiez le fichier.</P> <P><CODE>IV) Redémarrez sendmail</CODE></P> <P><CODE>V) Testez sendmail</CODE> <CODE>i)</CODE> sendmail -bv user@destination <CODE>ii)</CODE> utilisez sendmail -bt et entrez plusieurs adresses en utilisant la règle 3,0 pour voir où elles arrivent et les différentes règles et cheminements "cf" pris. <CODE>Vous y êtes !</CODE></P> <P></P> <HR> <P> Chapitre <A HREF="Sendmail+UUCP-3.html">suivant</A>, Chapitre <A HREF="Sendmail+UUCP-1.html">Précédent</A> <P> Table des matières de <A HREF="Sendmail+UUCP.html#toc2">ce chapitre</A>, <A HREF="Sendmail+UUCP.html#toc">Table des matières</A> générale</P> <P> <A HREF="Sendmail+UUCP.html">Début</A> du document, <A HREF="#0"> Début de ce chapitre</A></P> </BODY> </HTML>