
                           Mini-HOWTO Sendmail+UUCP

Hadi Salim, jamal@glcom.com ou hadi@cyberus.ca

   25 octobre 1997

1. Introduction.

   Aprs m'tre finalement calm et aprs avoir lu le FM (le Livre de la
   Chauve Souris, pour tre prcis) j'ai rsolu l'nigme de Caramilk !
   Les tapes suivantes ont t testes avec les binaires fournis dans la
   RedHat. Peut-tre devrais-je soumettre aussi ces astuces au mainteneur
   de la FAQ Sendmail dans la mesure o il n'y a aucune mention
   d'interconnexion entre UUCP et Sendmail dedans.

1.1 Ce que ce document essaye de vous montrer

   Comment configurer une simple machine, dnote par me.com dans
   l'exemple, ne possdant aucun accs direct  Internet pour router le
   courrier lectronique pour vous via sendmail et UUCP vers une 'machine
   plus intelligente' i.e. : votre ISP. Vous pouvez optionellement
   configurer cette machine pour fournir d'autres machines i.e. : vous
   tes leur 'machine intelligente' (NDT : rfre par smarthost dans le
   reste du document) ou encore passerelle.

1.2 Ce que ce document ne vous dit pas

   J'ai reu un nombre incroyable de questions concernant des sujets
   dpassant le cadre de ce HOWTO. Le but de ce document n'est pas de les
   dcrire, donc merci d'essayer de ne pas m'envoyer de questions sur ce
   qui suit :

  Comment configurer UUCP.

   Consultez une des nombreuses rfrences bien faites, telles ques :

   UUCP HOWTO (Vince Shakan)

   Using and managing UUCP (Ed Revin et al -- ditions O'Reilly) qui est
   je pense la meilleure rfrence sur UUCP

   Linux Network Administrator Guide (Olaf Kirch)

  Comment configurer le DNS.

   Consultez une des nombreuses rfrences bien faites, telles ques :

   Caching named mini howto (Nicolai Langfeldt)

   The bat book (Sendmail;Costalles, Allman, Rickert ; ditions O'Reilly)

   DNS and BIND (Editions O'Reilly)

   TCP/IP Network Administration (Hunt, Craig ; ditions O'Reilly)

   Linux Network Administrator Guide (Olaf Kirch)

   sendmail Theory and Practice (Avolio et Vixie ; ditions Digital
   press)

  Comment configurer des bases de donnes (autres que la mailertable) pour
  fonctionner avec sendmail.

   Consultez une des nombreuses rfrences bien faites, telles ques:

   The bat book (Sendmail ; Costalles, Allman, Rickert -- ditions
   O'Reilly)

   TCP/IP administration (Editions O'Reilly)

   Sendmail Theory and Practice (Avolio et Vixie ; ditions Digital
   press)

   Documentations attaches  sendmail

  Comment crire ou modifier des ensembles rgle ou des mailers

   Toutes les rfrences du dessus en XXX

   Vous pouvez aussi trouver de l'aide dans les groupes de nouvelles
   suivants:

   comp.mail.sendmail comp.mail.uucp comp.os.linux.networking

   Canaux IRC

   #linux, #unix

2. La configuration

   C'est pour un systme, hypothtiquement appel me.com, dont le
   courrier est envoy uniquement via UUCP. mysmarthost est le nom de la
   machine de mon FAI tel qu'il est configur dans le fichier uucp sys et
   me.com est le nom de machine que nous utilisons ou sous lequel nous
   sommes connus dans les enregistrements MX sur Internet. mysmarthost
   est connect  Internet. Nous nous moquons vraiment de savoir comment,
   nous savons juste qu'elle sait comment nous y conduire. me.com, dont
   la configuration que nous dcrivons dans l'exemple, alimente les sites
   down.com et system1.org et leurs sous-noeuds. me.com se connecte 
   down.com via TCP/IP et se connecte  system1.org via une connexion
   UUCP directe par une ligne tlphonique. La description de la
   configuration est indique i-dessous :

        ------------------------
        |                       |
        |     Internet          |
        |                       |
        -----------------------
                    |
                    | Ligne ddie  PPP utilisant TCP-IP
                    |
                -------------
                |            |
                |mysmarthost | Serveur de noms autoritaire pour
                |            | *.me.com, *.down.com, *.system1.org
                |            |
                --------------
                    |
                    | UUCP par rception ligne tlphonique pour
                    | system1.org, *.system1.org,*.down.com, down.com
                    | ainsi que me.com et *.me.com
                 ------------
                | * *****  *  |
   ------------ | * me.com *  | ------
                | *        *  |      |
   |            | * *****  *  |      |
   |             ------------        |
   |UUCP via ligne tlphonique      | uucp via TCP/IP
   |                                 |
 -----------                  -----------
|           |                |           |
|system1.org|                | down.com  |-------
|           |                |           |      |
 ----------                  ------------       |
     |                                          |
     |                                          |
     |                                          |
     | LAN : smtp vers le noeud            | UUCP ligne tlphonique
     |                                          |
-----------------                             ----------------
|               |                             |              |
|Sous-noeuds de |                             | Rseau local |
|de system1     |                             | de down      |
|               |                             ----------------
-----------------

   Prrequis

   1) Si vous avez dj un DNS qui marche ou avez un pointeur sur un DNS
   (dans votre /etc/resolv.conf) et avez une connexion directe au rseau
   alors passez cette partie. Vous tes sauf. Vous n'avez pas de choses
   "intelligentes"  faire.

   2) Si vous tes sur une machine utilisant uucp pour le courrier alors
   vous n'avez pas vraiment besoin de compiler bind/resolv dans
   sendmail ;

   Comment survivre  la mise sous forme canonique sur une machine
   indpendante sans DNS

2.1 PARTIE I

   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).

   a) Vous rfrer  ma solution pour a base sur le fichier m4 dcrit
   (mon favori). Essayez d'utiliser cette option  moins que vous teniez
    b) ou c) ci-dessous. OU

   b) Si vous me contactez je pourrais vous fournir une version non
   compile avec BIND (8.8.5). Peut-tre que RedHat devrait considrer la
   fourniture de deux binaires sendmail (comme slackware) un avec BIND et
   l'autre sans BIND. OU

   c) La solution la plus rapide pour avoir un sendmail sans bind est
   d'diter les lignes de src/conf.h ci-dessous comme je l'ai montr :

   # ifndef NAMED_BIND conf.h:# define NAMED_BIND 0 /* use Berkeley
   Internet Domain Server */

2.2 PARTIE II

   Sendmail devrait cependant normallement insister  faire les requtes
   de noms pour rsoudre la partie machine en utilisant gethostbyaddr()
   pour chaque mail qu'il envoie (mme si vous lui dites de ne pas mettre
   les noms sous forme canonique).

   a) utiliser une adresse IP de la RFC1597 (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
   /etc/hosts et ajoutez ce qui suit comme exemple pour la machine myhost
   10.0.0.1 myhost.me.com myhost OU

   b) Si vous utilisez NIS (et NIS est compil dans sendmail comme cela
   semble tre le cas dans la RedHat.) assurez vous que le fichier
   /etc/nsswitch.conf contienne : hosts: files dns et dans /etc/hosts et
   ajoutez ce qui suit comme exemple pour la machine myhost [toujours en
   utilisant l'adressage IP de la RFC1597] 10.0.0.1 myhost.me.com myhost

   NOTE : Dans a) et dans b) ci-dessus il est vital que vous listiez le
   long (compltement qualifi) dans le fichier /etc/hosts utilis. i.e
   la ligne doit tre 10.0.0.1 myhost.me.com et NON 10.0.0.1 myhost vous
   aurez aussi besoin de dfinir la macro sendmail $j pour qu'elle
   contienne myhost.me.com ajoutez ce qui suit  votre fichier
   /etc/sendmail.cf aprs qu'il ait t gnr Dmyhost.me.com (ou vous
   pouvez utiliser MASQUERADE_AS(myhost.me.com) dans le fichier .mc
   ci-dessous)

   NOTE !!!!! myhost 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 dj un.

   2) Assurez-vous que vous avez makemap et qu'il est capable de
   supporter hash et/ou le format plus commun dbm ou mme le format btree
   (La version RedHat ne supporte pas dbm). Makemap est normallement
   distribu avec sendmail.

2.3 CONFIGURATION (le fichier mc)

   I) crez votre fichier .mc avec votre diteur favori ; j'appellerai ce
   fichier my.mc

   a) Pas de DNS -- machine indpendante

   include(`../m4/cf.m4')
   VERSIONID(`me.com setup with uucp created by xxxx --no dns ')
   dnl OSTYPE(linux)
   FEATURE(nodns)dnl
   FEATURE(nocanonify)dnl
   FEATURE(always_add_domain)dnl
   FEATURE(mailertable, hash /etc/mailertable)dnl
   MAILER(local)dnl
   MAILER(smtp)dnl
   MAILER(uucp)
   define(`SMART_HOST', uucp-dom:mysmarthost)

   Dissequons ceci :

   include(`../m4/cf.m4') requiert l'inclusion de la macro m4 qui se
   trouve dans ../m4/cf.m4 afin de rsoudre certaines choses.

   VERSIONID(`me.com setup with uucp created by xxxx --no dns ') C'est
   utilis pour distinguer les diffrentes versions du fichier .cf que
   vous pourriez finir par crer.

   OSTYPE(linux) Ca sert  dfinir/redfinir les choses spcifiques 
   Linux. Il est prudent de l'avoir ici.

   FEATURE(nodns)dnl 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 obsolte. Je vais le
   laisser ici juste au cas o vous utiliseriez une version plus ancienne
   de sendmail.

   FEATURE(nocanonify)dnl Cela veut dire Ne passez pas les addresses  la
   rgle $[ ... ]$ pour la mise en forme canonique. Normallement si vous
   avez BIND compil dans sendmail, il essayerait et dvelopperait
   l'alias/l'adresse IP en un nom canonique grce 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 indpendante.

   FEATURE(always_add_domain)dnl Ceci ajoute le nom de domaine local mme
   au mail local. Ce n'est pas ncessaire mais j'aime bien ; Ce n'est
   peut-tre pas prudent dans la mesure o les spammeurs, avec une
   configuration approprie, peuvent vous embter. me.com n'est pas
   connect au rseau via tcp/ip donc c'est sans danger.

   FEATURE(mailertable, hash /etc/mailertable)dnl Le fichier
   /etc/mailertable sera une base de donne hashe 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 dbm vous auriez
   FEATURE(mailertable, dbm /etc/mailertable)dnl Si vous vouliez utiliser
   le format btree vous auriez FEATURE(mailertable, btree
   /etc/mailertable)dnl

   MAILER(local)dnl MAILER(smtp)dnl MAILER(uucp) Ce sont les mailers que
   nous utilisons.

   define(`SMART_HOST', uucp-dom:mysmarthost) Notre smarthost est chez
   notre FAI, il est dfini dans le fichier sys comme system mysmarthost.
   Tous les messages que nous ne pouvons pas traiter (i.e : ceux dont les
   domaines ou les mailers nous sont trangers) seront envoys  notre
   smarthost/FAI qui s'en dbrouillera. Notez que nous utilisons uucp-dom
   comme mailer uucp. Ce mailer particulier utilise des rgles de
   rcritures de type smtp.

   b) Avec DNS

   include(`../m4/cf.m4')
   VERSIONID(`me.com setup with uucp created by xxxx --dns enabled')dnl
   OSTYPE(linux)
   FEATURE(always_add_domain)dnl
   FEATURE(mailertable, hash /etc/mailertable)dnl
   MAILER(local)dnl
   MAILER(smtp)dnl
   MAILER(uucp)
   define(`SMART_HOST', uucp-dom:mysmarthost)

   II) Crz votre fichier sendmail.cf

   a) Sauvegardez votre ancien fichier /etc/sendmail.cf
   b) Remplacez votre fichier sendmail.cf avec le nouveau : m4 my.mc
   /etc/sendmail.cf
   c) Verifiez que le fichier sendmail.cf a t correctement cr sur les
   bases de vos spcifications.
   Les quelques problmes que j'ai eus sont : le mailer uucp-dom manquant
   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.

   III) Crz votre fichier /etc/mailertable
   Si vous n'alimentez pas de sites uucp vous pouvez omettre cette tape.
   a) crz/ditez le fichier /etc/mailertable exemple de fichier
   /etc/mailertable :

   system1.org uucp-dom:system1
   .system1.org uucp-dom:system1
   down.com uucp-dom:down
   up.down.com error: Host is unknown at me.com
   .down.com uucp-dom:down
   .me.com error: Host unknown at me.com

   Cela veut dire que tout ce qui est adress  system1.org ou 
   *.system1.org et que nous recevons sera envoy  system1 en utilisant
   uucp-dom en autres termes nous faisons le routage de mail pour
   *.system1.org; idem pour down.com et ses sous-noeuds sauf en ce qui
   concerne le filtrage additionnel ; nous renvoyons tout mail pour le
   sous-noeud de down up.down.com en utilisant le mailer error intgr 
   sendmail avec le message "Host is unknown at me.com" ; Tout a
   parceque l'administrateur de down.com nous l'a demand. Pour renvoyer
   les sous-domaines qui nous sont inconnus nous utilisons la dernire
   ligne de mailertable (ce que sont nous les sous-noeuds par dfaut).

   b) crez la base de donnes avec makemap

   si vous utilisez hash : makemap hash /etc/mailertable <
   /etc/mailertable si vous utilisez dbm : makemap dbm /etc/mailertable
   </etc/mailertable si vous utilisez btree : makemap btree
   /etc/mailertable </etc/mailertable

    faire  chaque fois que vous modifiez le fichier.

   IV) Redmarrez sendmail

   V) Testez sendmail i) sendmail -bv user@destination ii) utilisez
   sendmail -bt et entrez plusieurs adresses en utilisant la rgle 3,0
   pour voir o elles arrivent et les diffrentes rgles et cheminements
   "cf" pris. Vous y tes !

3. A faire

   1) Ajouter des informations sur la mise en place du systme down.com
   (afin de montrer comment prendre en compte de ces noeuds smtp) 2)
   Ajouter des informations sur comment mettre en place la distribution
   de news via UUCP (INN de prfrence). Cela ncessitera peut-tre de
   changer le titre du document.
