
                     sendmail address rewriting mini-HOWTO

Thomas Roessler, roessler@guug.de

   v0.0, 6 May 1998
     _________________________________________________________________

   _Ce document dcrit brivement la mise en place du fichier de
   configuration de sendmail pour un accs individuel  l'Internet via le
   rseau tlphonique commut. _
     _________________________________________________________________

1. Introduction

   On suppose que votre accs  l'Internet repose sur le principe le plus
   couramment rencontr de nos jours : une connexion au rseau d'un
   fournisseur d'accs via une liaison PPP au dessus d'une liaison srie.
   Le courrier qui vous est destin est rcupr auprs d'un serveur POP
   ou IMAP tandis que le courrier sortant est transmis via SMTP. Comme
   vous ne possdez pas de nom de domaine, tout doit transiter par la
   _mme_ adresse.

   On suppose vous avez dj install une version rcente du sendmail
   d'Eric Allman. A l'criture de ces lignes, la version courante est la
   8.8.8. Elle devrait fonctionner sans problmes.

   Le texte fait parfois rfrence  certaines spcificits des
   distributions GNU/Linux de Debian. Les utilisateurs de systmes
   diffrents adapteront.

   Vrifiez que vous disposez bien des informations suivantes :

     * Le nom du serveur de courrier de votre Fournisseur d'Accs
       Internet
     * Votre adresse lectronique

   On attend de la configuration  venir :

    1. que l'envoi de courrier entre utilisateurs locaux soit possible,
    2. que le reste de l'Internet voit les adresses des utilisateurs
       telles qu'elles sont dfinies au niveau du FAI ( et non les
       adresses locales ! ).

   Pour atteindre cet objectif, on utilisera la fonctionnalit
   genericstable de sendmail.

2. Fichiers impliqus

   On regroupe tous les fichiers de configuration de sendmail dans un
   rpertoire particulier sous /etc : /etc/mail. Sendmail s'attendant 
   les trouver en /etc, /etc/sendmail.cf sera un lien symbolique vers
   /etc/mail/sendmail.cf.

   On trouvera dans /etc/mail :
     * aliases - des adresses supplmentaires
     * genericsdomain - diverses informations sur la configuration du
       systme
     * genericstable - rgles de traduction
     * sendmail.cf - fichier de configuration de sendmail
     * sendmail.mc - la matrice du sendmail.cf.

   Certains de ces fichiers s'accompagnent de fichiers .db contenant les
   bases de donnes haches que sendmail utilise directement.

   L'arborescence d'origine de sendmail est cense se trouver en
   /usr/lib/sendmail.cf ainsi que c'est le cas avec les distributions
   GNU/Linux Debian. Reportez vous  la documentation de votre
   distribution si celle-ci diffre.

3. Configuration de sendmail

3.1 Le fichier de configuration principal

   La configuration de Sendmail repose sur un ensemble de rgles assez
   complexes. Bien que cela puisse s'avrer trs puissant, il n'est pas
   courant de fabriquer ex-nihilo un sendmail.cf. Il faudrait de surcroit
   y passer pas mal de temps. Si vous tes motiv, lancez vous dans la
   lecture de la bible disponible chez O'Reilly.

   Au lieu de forger  la main les rgles, on utilise le pr-processeur
   de macros m4 pour fabriquer un fichier de configuration  partir des
   lments prts  l'emploi qui sont fournis avec sendmail.

   Jetons un oeil sur les premires lignes du sendmail.mc :
     _________________________________________________________________

include(/usr/lib/sendmail.cf/m4/cf.m4)
VERSIONID(`sendmail.mc - roessler@guug.de')
OSTYPE(debian)
define(`ALIAS_FILE',`/etc/mail/aliases')
     _________________________________________________________________

   Tout d'abord, on inclut cf.m4. Ce fichier m4 contient de nombreuses
   macros utiles pour la suite. Ne vous trompez pas dans les chemins
   d'accs. Ceux que nous donnons ici correspondent typiquement  un
   systme GNU/Linux Debian. La macro OSTYPE positionne les valeurs par
   dfaut de certaines variables. Si vous n'utilisez pas une Debian,
   remplacez ici "debian" par "linux". ALIAS_FILE fournit  sendmail
   l'emplacement du fichier d'alias.

   Les lignes suivantes forcent l'utilisation des fonctionnalits
   genericstable et prcisent o trouver les fichiers ncessaires :
     _________________________________________________________________

FEATURE(masquerade_envelope)
FEATURE(genericstable, `hash -o /etc/mail/genericstable')
GENERICS_DOMAIN_FILE(`/etc/mail/genericsdomain')
     _________________________________________________________________

   masquerade_envelope rclame qu'une mise en forme du type en-tte soit
   applique  l'enveloppe des messages  expdier. Est concerne
   l'adresse vers laquelle les agents de transport extrieurs dirigeront
   leurs messages d'avertissement ou leurs avis d'checs. Les fichiers
   generics* seront dtaills plus loin.

   A prsent, on dfinit un hte intelligent ( "smart agent" ), c'est 
   dire une machine capable de grer le courrier sortant  notre place.
   Il ne s'agit pas ncessairement des serveurs POP ou IMAP de l'ISP. La
   hotline vous aidera le cas chant  dissiper les doutes.
     _________________________________________________________________

define(`SMART_HOST',`relai-de-sortie.mon.fournisseur')
     _________________________________________________________________

   Remplacez _relai-de-sortie.mon.fournisseur_ par le nom complet ( FQDN
   ) correspondant  votre fournisseur d'accs.

   Les deux dernires lignes incluent les dfinitions des "mailer" grce
   auxquels sendmail dtermine comment manipuler les diffrents types de
   courrier :
     _________________________________________________________________

MAILER(local)
MAILER(smtp)
     _________________________________________________________________

   Pour gnrer le fichier sendmail.cf  partir du sendmail.mc, excutez
   les commandes suivantes en tant qu'utilisateur root :
     _________________________________________________________________

# m4 sendmail.mc > _sendmail.cf
# mv -f _sendmail.cf sendmail.cf
     _________________________________________________________________

   Notez la technique qui consiste  enregistrer la sortie de m4 dans un
   fichier temporaire avant de l'installer au bon endroit. On vite ainsi
   que sendmail ne lise des fichiers de configuration incomplets !

3.2 Modification des adresses

   On commence par prciser  sendmail les adresses  considrer comme
   locales. Pas de difficults : rentrez le nom complet de votre machine
   dans le fichier /etc/mail/genericsdomain. Pour obtenir ce nom,
   excutez la commande suivante :
     _________________________________________________________________

 $ hostname -f
     _________________________________________________________________

   .

   Passons aux rgles de recriture proprement dites :
   /etc/mail/genericstable. Ce fichier est form de deux colonnes
   spares par des blancs. La premire contient les adresses locales et
   la seconde les adresses lectroniques qui doivent tre employes  la
   place. Le fichier devrait ressembler  a :
     _________________________________________________________________

harry   harryx@mon.fai
maude   maudey@son.fai
root    francois@mon.fai
news    francois@mon.fai
     _________________________________________________________________

   Il devrait y avoir une entre pour _chaque_ compte sur la machine
   isole de faon  ce que le courrier sortant du systme comporte des
   informations d'en-tte correctes.

   Afin d'amliorer les performances, sendmail n'utilise pas directement
   ce fichier mais une version hache. Pour la crer, excutez la
   commande suivante :
     _________________________________________________________________

# makemap -r hash genericstable.db < genericstable
     _________________________________________________________________

   Notez que les rgles issues de genericstable ne s'appliquent _pas_ au
   courrier local ni  celui que vous recevez de l'extrieur. La
   traduction n'a lieu que si un message est transmis au relai de votre
   FAI.

3.3 Alias

   Le fichier d'alias contient des adresses supplmentaires qui ne sont
   valables que pour les messages locaux. Ceci s'avre utile pour les
   comptes de maintenance tels root qui reoivent des messages crs
   automatiquement par le systme d'exploitation.

   Le point de dpart d'un /etc/mail/aliases pourrait ressembler  a :
     _________________________________________________________________

root: francois
news: root
postmaster: root
mail: root
www: root

nobody: /dev/null
MAILER-DAEMON: nobody
     _________________________________________________________________

   Dans l'exemple ci-dessus, le courrier  destination des utilisateurs
   root, news, postmaster, mail, et www sont renvoys vers francois,
   tandis que ceux pour nobody et MAILER-DAEMON seront redirigs vers le
   /dev/null.

   De mme que le genericstable, le fichier aliases peut contenir
   _beaucoup_ de donnes. Comme il serait inefficace que sendmail utilise
   le fichier texte tel quel, le mcanisme employ pour le genericstable
   s'applique encore : on gnre une base de donnes hache. Au lieu de
   la commande makemap, rentrez cette fois la commande newaliases. Tout
   fonctionne automagiquement.

4. Rfrences

   Les sources de sendmail sont fournies avec une documentation
   abondante. Lisez la donc, et tudiez plus particulirement le fichier
   /cf/README.

   Si vous souhaitez explorer davantage les options de configuration de
   sendmail, procurez vous la rfrence en la matire par Bryan Costales,
   Eric Allman et Neil Rickert : "Sendmail" ( O'Reilly, 1993 ).
