4. Agents de Transport du Mail

Contenu de cette section

Cette section contient des informations concernant les `agents de transport', qui désignent la couche logicielle de bas niveau qui connecte votre système local aux systèmes distants.

4.1 Smail v3.1

Smail3.1 semble être un agent de transport standard de facto pour les sites uniquement uucp et quelques sites smtp. Il compile sans modification du code source. De plus, smail est distribué sous forme binaire dans la distribution SLS de Linux.

La distribution newspak contient des fichiers de configuration pour smail3.1.28 sous Linux que vous pouvez utiliser pour commencer.

Si vous construisez smail à partir des sources, vous aurez besoin de la ligne suivante dans votre fichier os/linux pour que `sed' vous donne des shell scripts qui fonctionnent correctement.

        CASE_NO_NEWLINES=true

Pour un système uniquement uucp qui a un MX-record et qui veut un en-tête domainisé (qui utilise un smart-host pour tout), voici les fichiers de configuration complets dont vous aurez besoin~:

        #-------- /usr/local/lib/smail/config -----------------------------
        #
        # domaines auxquels nous appartenons
        visible_domain=sous_domaine.domaine:uucp
        #
        # par quel nom complet nous sommes connus (fully-qualified-site-name)
        visible_name=mon_nom_de_site.sous_domaine.domaine
        #
        # par qui nous passons - serveur dedie
        smart_path=mon_voisin_uucp
        #
        #---------- /usr/local/lib/smail/paths ----------------------------
        #
        # le site est domainise, soyons certains d'accepter le courrier
        # adresse aux deux noms
        mon_nom_de_site                      %s
        mon_nom_de_site.sous_domaine.domaine %s
        #
        #------------------------------------------------------------------
Pour utiliser smail comme un démon smtp, ajoutez la ligne suivante dans /etc/inetd.conf:
                smtp stream tcp nowait  root  /usr/bin/smtpd smtpd
Le courrier sortant sera envoyé automatiquement, en utilisant elm. Si votre liaison internet est coupée quand vous envoyez un courrier, alors il est placé dans /usr/spool/smail/input. Quand la liaison sera rétablie, la lancement de runq provoquera l'émission du mail.

4.2 Sendmail+IDA

J'ai un site uniquement uucp et j'utilise sendmail5.65b+IDA1.5 à la place de smail3.1.28 à cause de son incroyable facilité d'utilisation. Il en existe une distribution binaire dans sunsite.unc.edu:pub/Linux/system/Mail. Pour l'installer~:

Une autre chose intéressante est que si vous avez l'option mail.debug positionnée et que vous utilisez syslogd, vos messages entrants et sortants seront tracés. Voir le fichier /etc/syslog.conf pour des détails.

Le source de sendmail+IDA peut être trouvé à uxc.cso.uiuc.edu. Il ne demande aucune modification pour compiler sous Linux.

Si vous pensez utilisez sendmail+IDA, je vous recommande fortement la version sendmail5.67b+IDA1.5 car toutes les modifications spécifiques à Linux sont dorénavent dans les sources originales et plusieurs trous de sécurité ont été fixés, qui ETAIENT (!!!) présents dans l'ancienne version que vous avez peut-être prise ou compilée avant le 1er décembre 1993.

L'édition de mai/juin 1994 du Linux Journal présente un article conséquent sur l'installation et l'administration de sendmail+IDA. La prochaine sortie du Networking Administration Guide du Linux DOC Project en aura une description encore plus détaillée et complête.

Le fichier sendmail.m4

Sendmail+IDA vous demande de mettre à jour un fichier sendmail.m4 plutôt qu'éditer le fichier sendmail.cf directement. L'avantage de cette méthode est qu'il est simple de mettre sur pied des configurations pour le mail qui sont extrêmement difficiles (voire totalement impossible pour la plupart des personnes) avec smail ou le traditionnel sendmail.

Le fichier sendmail.m4 qui correspond à l'exemple donné plus haut pour smail, ressemble à ceci~:

  dnl #------------------ EXEMPLE DE FICHIER SENDMAIL.M4 ------------------
  dnl #
  dnl # (la chaine `dnl' est l'equivalent en m4 d'une ligne de commentaire)
  dnl #
  dnl # on ne veut generalement pas modifier LIBDIR des chemins compiles ou sont
  dnl #define(LIBDIR,/usr/local/lib/mail)dnl    # tous les fichiers de
                                                # configuration
  define(LOCAL_MAILER_DEF, mailers.linux)dnl    # mailer pour delivrance locale
  define(POSTMASTERBOUNCE)dnl                   # postmaster gets bounces
  define(PSEUDODOMAINS, BITNET UUCP)dnl         # ne pas essayer DNS sur ceux-ci
  dnl #
  dnl #-------------------------------------------------------------
  dnl #
  dnl # les noms sous lesquels nous sommes connus
  define(PSEUDONYMS, myhostname.subdomain.domain myhostname.UUCP)
  dnl #
  dnl # notre nom primaire
  define(HOSTNAME, myhostname.subdomain.domain)
  dnl #
  dnl # notre nom uucp
  define(UUCPNAME, myhostname)dnl
  dnl #
  dnl #-------------------------------------------------------------
  dnl #
  define(UUCPNODES, |uuname|sort|uniq)dnl       # nos voisins uucp
  define(BANGIMPLIESUUCP)dnl                    # soyons certains que le mail
  define(BANGONLYUUCP)dnl                       # uucp soit correctement traite
  define(RELAY_HOST, my_uucp_neighbor)dnl       # notre smart relay host
  define(RELAY_MAILER, UUCP-A)dnl               # nous joignons moria par uucp
  dnl #
  dnl #--------------------------------------------------------------------
  dnl #
  dnl # les diverses dbm lookup tables
  dnl #
  define(ALIASES, LIBDIR/aliases)dnl            # alias systeme
  define(DOMAINTABLE, LIBDIR/domaintable)dnl    # sites domainises
  define(PATHTABLE, LIBDIR/pathtable)dnl        # base de donnee des chemins
  define(GENERICFROM, LIBDIR/generics)dnl       # adresses generiques
  define(MAILERTABLE, LIBDIR/mailertable)dnl    # mailers par site ou domaine
  define(UUCPXTABLE, LIBDIR/uucpxtable)dnl      # chemins vers les sites
                                                # que nous feedons
  define(UUCPRELAYS, LIBDIR/uucprelays)dnl      # chemins court-circuites
  dnl #
  dnl #--------------------------------------------------------------------
  dnl #
  dnl # inclure le `veritable' code qui fait tout fonctionner
  dnl # (inclus dans le code source)
  dnl #
  include(Sendmail.mc)dnl                         # LIGNE INDISPENSABLE !!!
  dnl #
  dnl #------------ FIN DE L'EXEMPLE DE FICHIER SENDMAIL.M4 -------
 

Définir un mailer local

Contrairement à la plupart des distributions Unix, Linux ne propose pas d'agent de délivrance du mail local par défaut. Je recommande l'utilisation du programme deliver communément disponible, qui est un paquetage optionnel dans certaines distributions Linux usuelles. Pour ce faire, vous aurez besoin de définir une ligne LOCAL_MAILER_DEF dans le fichier sendmail.m4 qui nommera un fichier qui ressemble à ceci~:

  # -- /usr/local/lib/mail/mailers.linux --
  #     (mailers locaux pour l'utilisation avec Linux)
  Mlocal, P=/usr/bin/deliver, F=SlsmFDMP, S=10, R=25/10, A=deliver $u
  Mprog,  P=/bin/sh,       F=lsDFMeuP,   S=10, R=10, A=sh -c $u

Il y a aussi une option par défaut pour deliver dans le fichier Sendmail.mc qui est inclus dans le fichier sendmail.cf. Pour l'utiliser, vous ne devez pas utiliser le fichier mailers.linux mais définir à la place la ligne suivante dans votre fichier sendmail.m4~:

   dnl --- (dans sendmail.m4) ---
   define(LOCAL_MAILER_DEF, DELIVER)dnl # mailer pour la delivrance locale

Malheureusement, Sendmail.mc suppose que deliver est installé dans /bin, ce qui n'est pas le cas avec Slackware1.1.1 (qui l'installe dans /usr/bin). Dans ce cas vous devrez le tromper avec un lien ou reconstruire deliver à partir des sources pour qu'il réside dans /bin.

Les tables dbm pour Sendmail+IDA

La mise en place des facilités spéciales pour des sites ou des domaines s'effectue à travers un nombre de tables dbm optionnelles plutôt que d'éditer les fichier sendmail.cf directement. Référez-vous au numéro de juillet 1994 du Linux Journal, aux documentations dans les sources, ou au chapitre sur sendmail dans la nouvelle version du Networking Administration Guide du Linux DOC Project qui sera disponible, dans très peu de temps maintenant, pour plus de détails.

Quelles sont les Entrées Réellement Nécessaires~?

Quand on n'utilise aucune des tables dbm optionnelles, sendmail+IDA délivre le courrier via le DEFAULT_MAILER (et peut-être RELAY_HOST et RELAY_MAILER) défini dans le fichier sendmail.m4 utilisé pour générer sendmail.cf. Il est facilement possible d'outrepasser cette facilité avec des entrées dans domaintable et uucpxtable.

Un site générique qui est sur Internet et qui utilise le Domain Name Service, ou un autre qui utilise seulement UUCP et transfère tout son courrier via UUCP à un RELAY_HOST, n'ont probablement pas besoin du tout d'entrées spécifiques dans ces tables.

Logiquement, tous les systèmes devraient positionner les macros DEFAULT_HOST et PSEUDONYMS, qui définissent le nom canonique du site et les alias sous lesquels il est connu, et DEFAULT_MAILER. Si vous n'avez qu'un site relai et un relay mailer, vous n'aurez pas besoin de définir ces valeurs par défaut car cela fonctionnera automagiquement.

Les sites UUCP auront aussi besoin de positionner UUCPNAME à leur nom UUCP officiel. Ils positionneront aussi RELAY_MAILER, et RELAY_HOST qui autorise le routage vers le smart-host à travers un mail relay. Le transport de mail à utiliser est défini avec RELAY_MAILER et devrait normalement être UUCP-A pour les sites UUCP.

Si votre site est seulement SMTP et connaît le `Domain Name Service', vous devrez changer le DEFAULT_MAILER à TCP-A et probablement effacer les lignes RELAY_MAILER et RELAY_HOST.

4.3 Sendmail 8.6

Sendmail 8.6.x de Berkeley est la dernière révision majeure après sendmail5. Il contient un excellent support pour la compilation sous Linux. Tapez juste "make linux" et tout sera configuré.

4.4 Autres "agents de transport"

Les logiciels suivants sont aussi connus pour fonctionner sous Linux. Consultez "archie" pour trouver les détails de leur emplacement...

4.5 Agents de Distribution Locaux

Contrairement à la plupart des systèmes d'exploitation, Linux ne propose pas le mail en standard. Vous aurez besoin d'un programme pour distribuer le mail local. Le programme "lmail" de Rich Braun en est un bon, mais j'utilise maintenant le programme "deliver", plus répandu et accessible.

La documentation pour l'utilisation et la distribution locale est dans la distribution binaire de sendmail5.67b+IDA1.5 (sur sunsite) mentionnée plus haut.


Chapitre suivant, Chapitre Précédent

Table des matières de ce chapitre, Table des matières générale

Début du document, Début de ce chapitre