Page suivante Page précédente Table des matières

5. Sendmail+IDA

Pour les sites d'importance, sendmail vaut la peine d'être choisi, en raison de son incroyable facilité d'utilisation, mais vous devez vous décider entre sendmail+IDA et sendmail 8.x :

Rappelez-vous, les débutants en linux ou les personnes concernées par la sécurité/facilité de la configuration devraient plutôt essayer d'utiliser smail ou qmail, qui sont plus facile à utiliser et plus sûr.

5.1 Installation du source

Vous devrez aussi mettre à jour votre version en au moins la 5.67b puisqu'il y a un vilain trou de sécurité dans la 5.67a et les précédentes. Une autre amélioration est que si mail.debug est indiqué et que vous utilisez syslogd, votre courriel entrant et sortant sera tracé. Voir le fichier /etc/syslog.conf pour les détails.

Les sources de sendmail+IDA se trouvent sur vixen.cso.uiuc.edu ; Ils ne nécessitent aucun patch pour fonctionner sous linux si vous êtes sous quelque chose comme le noyau 1.00.

Si vous avez un noyau > 1.1.50, vous aurez le plaisir d'appliquer la plupart des patch linux qui sont maintenant dans les sources vanilla. (Je vous *avez* dit que ce sendmail était seulement pour les noyaux anciens :-)

Il est particulièrement évident de savoir où cela doit être fait : taper simplement make et lorsque cela plante, aller à la ligne dans le source et commenter le code Linux à cet endroit.

Si vous avez l'intention d'utiliser sendmail+IDA, je vous recommande fortement de prendre la version sendmail5.67b+IDA1.5 puisque tous les patch Linux sont maintenant dans les sources vanilla et plusieurs trous de sécurité qui ETAIENT (!!!) dans les anciennes versions que vous auriez récupérées ou compilées avant le premier décembre 1993 ont été comblés.

Aujourd'hui le noyau est le 2.0, vous devriez utiliser sendmail 8.x au lieu de sendmail+IDA, mais je vous avez déjà dit de choisir plutôt sendmail 8.x :-)

5.2 Le fichier sendmail.m4

Sendmail+IDA requiert de créer le fichier sendmail.m4 plutôt que d'éditer directement le fichier sendmail.cf. Le bon coté des choses est qu'il est plus simple de mettre en place des configurations de courrier électronique qui sont particulièrement difficile (pour ne pas dire impossible à la plupart des gens de le mettre en place correctement) avec smail ou le traditionnel sendmail.

Le fichier sendmail.m4 qui correspond aux exemples ci-dessus de smail ressemble à :


    dnl #------------------ SAMPLE SENDMAIL.M4 FILE ------------------
    dnl #
    dnl # (la chaine 'dnl' est l'équivalent m4 pour commenter une ligne)
    dnl #
    dnl # En général on ne cherche pas à outrepasser le chemin compilé en dur de LIBDIR
    dnl #define(LIBDIR,/usr/local/lib/mail)dnl    # où tous les fcihiers support vont
    define(LOCAL_MAILER_DEF, mailers.linux)dnl    # mailer pour la livraison locale
    define(POSTMASTERBOUNCE)dnl                   # postmaster récupère les courriers rebonds
    define(PSEUDODOMAINS, BITNET UUCP)dnl         # ne pas utiliser le DNS sur eux
    dnl #
    dnl #-------------------------------------------------------------
    dnl #
    dnl # les noms par 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       # notre voisin uucp
    define(BANGIMPLIESUUCP)dnl                    # s'assurer que le courriel uucp
    define(BANGONLYUUCP)dnl                       #  est traité correctement
    define(RELAY_HOST, my_uucp_neighbor)dnl       # notre hôte relais intelligent
    define(RELAY_MAILER, UUCP-A)dnl               # nous atteignons moria via uucp
    dnl #
    dnl #--------------------------------------------------------------------
    dnl #
    dnl # les différentes tables de recherche dbm
    dnl #
    define(ALIASES, LIBDIR/aliases)dnl            # alias systèmes
    define(DOMAINTABLE, LIBDIR/domaintable)dnl    # mettre le domaine aux hôtes
    define(PATHTABLE, LIBDIR/pathtable)dnl        # chemins base de données
    define(GENERICFROM, LIBDIR/generics)dnl       # adresses From génériques
    define(MAILERTABLE, LIBDIR/mailertable)dnl    # mailers par hôte ou domaine
    define(UUCPXTABLE, LIBDIR/uucpxtable)dnl      # chemins vers les hôtes que nous fournissons
    define(UUCPRELAYS, LIBDIR/uucprelays)dnl      # chemins court-circuits
    dnl #
    dnl #--------------------------------------------------------------------
    dnl #
    dnl # inclue le code 'réel' qui fait tout fonctionner 
    dnl # (fourni avec le code source) 
    dnl #
    include(Sendmail.mc)dnl                         # ENTREE REQUISE !
    dnl #
    dnl #------------ END OF SAMPLE SENDMAIL.M4 FILE -------

5.3 Définir un agent de courriel local

A la différence de la plupart des distributions Unix, Linux n'a pas par défaut un agent pour délivrer le courriel local. Dorénavent, deliver ou procmail est généralement installé, ainsi aucune difficulté ne sera ajoutée à cette installation déjà suffisemment complexe.Je vous conseille d'utiliser les programmes deliver ou procmail couremment disponible, qui peuvent être des progiciels optionnels sur quelques distributions linux.

Afin d'y arriver, vous devez définir LOCAL_MAILER_DEF dans le fichier sendmail.m4 dont le contenu ressemble à :

    # -- /usr/local/lib/mail/mailers.linux --
    #     (local mailers for use on 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 définition par défaut pour deliver dans le fichier Sendmail.mc qui sera inclue dans le fichier sendmail.cf. Pour l'indiquer, vous n'utiliserez pas le fichier mailers.linux mais définirez plutôt ce qui suit dans le fichier sendmail.m4:

     dnl --- (in sendmail.m4) ---
     define(LOCAL_MAILER_DEF, DELIVER)dnl       # mailer for local delivery

Malheureusement, sendmail.mc suppose que deliver est installé dans /bin, ce qui n'est pas le cas dans la Slackware1.1.1 (qui l'installe dans /usr/bin). Dans ce cas vous aurez soit à le tromper avec un lien ou recompiler deliver à partir des sources pour qu'il réside dans /bin. Veuillez noter que procmail est en général meilleur que deliver, par exemple pour le filtrage de courriel.

5.4 Les tables dbm de sendmail+IDA

Mettre en place un comportement particulier, pour les sites ou les domaines, est effectué à travers un nombre de tables dbm optionnelles plutôt que d'éditer le fichier sendmail.cf directement.

Consultez l'édition Juillet 1994 du Linux Journal (si vous pouvez encore le trouver ! :-), pour les documentations dans les sources, ou le chapitre sur sendmail dans la dernière version du Guide d'Administration Réseau du Projet de Documentation Linux (LDP) qui sera disponible vraiment-bientôt-maintenant pour plus de détails.

5.5 Bon quelles entrées sont vraiment nécessaires ?

Lorsque vous n'utilisez aucune des tables optionnelles dbm, sendmail délivre le courrier via le RELAY_HOST et RELAY_MAILER définis dans le fichier sendmail.m4 utilisé pour générer sendmail.cf. Il est aisé de passer outre ce comportement à travers des entrées dans domaintable ou uucpxtable.

Un site générique sur Internet et utilisant le Service de Noms de Domaines (DNS), ou un site n'utilisant qu'UUCP et transmets tous les courriels via UUCP à travers un smart RELAY_HOST, n'aura probablement pas besoin d'entrées spécifiques du tout.

De fait, tous les systèmes devraient utiliser les macros DEFAULT_HOST et PSEUDONYMS, qui définissent le nom canonique et l'alias du site par lequel il se fait connaitre.

Si tout ce que vous avez est un hôte relais et un agent relais de courrier, vous n'avez pas à prendre les options par défaut puisque cela marche automagiquement. Les hôtes UUCP auront certainement besoin de mettre leur nom officiel UUCP dans UUCPNAME.

Ils auront probablement aussi besoin d'utiliser RELAY_MAILER et RELAY_HOST qui permettent le routage smart-host (?) à travers un relais de courriel.

Le logiciel de transport (l'agent transporteur) de courriel à utiliser est indiqué dans RELAY_MAILER et devrait habituellement être UUCP-A pour les sites UUCP. Si votre site n'a que SMTP et utilise le 'Service de Nom de Domaine' (DNS), vous voudrez changer RELAY_MAILER.

Si votre site utilise SLIP, vous pourriez choisir la manière simple et juste transmettre tous vos courriel sortant vers votre fournisseur d'accès et le laisser s'en occuper. Ainsi vous devrez définir votre domaine dans ISOLATED_DOMAINS et VALIDATION_DOMAINS, vous devrez définir votre fournisseur d'accès dans RELAY_HOST et RELAY_MAILER à TCP. Bien sûr, vous voulez demander la permission avant de monter un système comme relais général.

5.6 Sendmail 8.x

Le Sendmail 8.7.x de Berkeley a été la dernière version majeure depuis sendmail5. Il incorpore un merveilleux support interne (?) pour compiler sous linux : faire simplement "make linux" et tout fonctionne.

Vous serez probablement mieux servi en récupérant une des nombreuses distributions binaires de l'habituel site d'archives Linux plutôt que de vous battre avec des choses comme les dbm de Berkeley.

Il y a une distibution sympa de sendmail 8.6.12 de Jason Haar - j.haar at lazerjem.demon.co.uk sur sunsite.unc.edu à /pub/Linux/system/Mail/delivery/sendmail-8.6.12-bin.tgz qui incorpore la documentation et une description rapide sur comment l'utiliser avec sendmail v8 pour les configurations courantes.

Le plus important avec sendmail v8 c'est que vous devez configurer au moins le minimum pour que cela fonctionne ; ce qui suit est un exemple qui devrait au moins vous en rapprocher.

5.7 Un fichier mc d'exemple pour la 8.7.x

De même que sendmail+IDA, sendmail v8 utilise m4 pour compiler un fichier de configuration en un sendmail.cf complet utilisable par sendmail. Ce qui suit est mon fichier courant pour mon site (ppp vers internet pour le courriel sortant, uucp pour le courriel entrant).

         dnl divert(-1)
          #---------------------------------------------------------------------
          #
          # Fichier .mc pour un hôte linux qui est configuré comme suit:
          #
          #       - connecté à Internet pour le courrier sortant (ici ppp)
          #       - connecté via UUCP pour le mail entrant
          #       - entête avec domaine
          #       - pas d'agent de transport de mail local (utilise plutot 'deliver') 
          #       - pas de DNS lancé donc ne pas canoniser ce qui sort via DNS
          #       - all non-local outbound mail goes to the RELAY_HOST over smtp
          #       -  
          #      (nous utilisons ppp et laissons notre fournisseur d'accès faire le travail)
          #
          #                                       vds 3/31/95
          #
          #---------------------------------------------------------------------
          include(`../m4/cf.m4')
          VERSIONID(`linux nodns relays to slip service provider smarthost')dnl
          Cwmyhostname.myprimary.domain myhostname.UUCP localhost
          OSTYPE(linux)
          FEATURE(nodns)dnl
          FEATURE(always_add_domain)dnl
          FEATURE(redirect)
          FEATURE(nocanonify)
          dnl MAILER(local)dnl
          MAILER(smtp)dnl
          MAILER(uucp)dnl
          define(`RELAY_HOST', smtp:my.relay.host.domain)
          define(`SMART_HOST', smtp:my.relay.host.domain)
          define(`UUCP_RELAY', smtp:my.relay.host.domain)
          define(`LOCAL_MAILER_PATH', `/bin/deliver')
          define(`LOCAL_MAILER_ARGS', `deliver $u')

5.8 Les .... de Sendmail v8

Je suppose qu'il y a quelques différences pour les 'bigots IDA' parmi nous.

Au lieu de 'runq', taper 'sendmail -q' pour traiter la file d'attente !

5.9 Les agents distributeurs locaux

A la différence de la plupart des systèmes d'exploitation, Linux n'avait pas de courriel intégré : vous deviez avoir un programme pour distribuer le courrier local, comme "lmail", "procmail" ou "deliver".

Toutefois, toutes les distributions récentes inclues un distributeur local !

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


Page suivante Page précédente Table des matières