Sommaire Carte Index Recherche Nouvelles Archives Liens A propos
[Barre Superieure]
[Barre Inferieure]
[an error occurred while processing this directive]
convert to palmConvert to GutenPalm
or to PalmDoc

[Photo de l'auteur]
par John Perr

L´auteur:
Utilisateur Linux depuis 1994; il est l'éditeur français de la revue LinuxFocus.

Sommaire:

Configurer votre serveur local avec sendmail et fetchmail

[Illustration]

Résumé:

Voici comment configurer sendmail et fetchmail sur une machine locale. Cela permet d'utiliser tous les outils de gestion du courrier d'Unix et surtout de recevoir et d'envoyer son courrier lors de chaque connection avec PPP.



 

Introduction

Pour gérer le courrier sur votre machine, vous devez configurer un agent de transfert du courrier (ou MTA, MAil Transfer Agent en anglais). Le plus courant est sendmail, mais il en existe d'autres comme qmail plus rapide et surtout plus simple à configurer, ou exim fourni en standard avec la distribution Debian. Nous resterons ici fidèles à sendmail en utilisant un kit de configuration de l'université de Berkeley et conçu par Eric Allman.
Pour récupérer votre courrier chez votre Fournisseur d'Accès Internet (FAI en abrégé), il sera aussi nécessaire de configurer fetchmail afin de nourrir sendmail avec le contenu de vos boîtes aux lettres.  

Configuration

Pour configurer sendmail il faut installer les paquetages suivants (au format rpm):

A priori seuls les 2 premiers sont indispensables.

Voici les étapes de la configuration de sendmail:

  1. On suppose:
  2. créer un fichier: /usr/lib/sendmail-cf/cf/config.mc qui contient:
    # Début du config.mc
    include(`../m4/cf.m4')dnl
    OSTYPE(`linux')dnl
    define(`SMTP_MAILER_FLAGS', `e9')dnl
    FEATURE(redirect)dnl
    FEATURE(nocanonify)dnl
    FEATURE(always_add_domain)dnl
    FEATURE(local_procmail)dnl
    GENERICS_DOMAIN(localhost.localdomain localhost localhost)
    FEATURE(genericstable)
    FEATURE(masquerade_envelope)dnl
    define(`confCF_VERSION',`cf à dede - 22/05/98')dnl
    define(`confCON_EXPENSIVE',`True')dnl
    define(`confME_TOO',`True')dnl
    define(`confCOPY_ERRORS_TO',`Postmaster')dnl
    define(`confDEF_CHAR_SET',`ISO-8859-1')dnl
    define(`confMIME_FORMAT_ERRORS',`True')dnl
    define(`SMART_HOST',`smtp8:[smtp.isp.net]')dnl
    define(`confTO_QUEUEWARN',`24h')
    MAILER(local)
    MAILER(smtp)
    # Fin du config.mc
    

  3. Créer aussi un /etc/genericstable:
    dede:   toto@isp.net
    root:   toto@isp.net
    news:   toto@isp.net
    
  4. Vérifier que /etc/alias contient au moins:
    MAILER-DAEMON:  postmaster
    postmaster:     root
    
  5. Modifier ou créer /etc/nsswitch.conf comme suit:
    passwd:     files
    shadow:     files
    group:      files
    hosts:      files   dns
    services:   files
    networks:   files
    protocols:  files
    rpc:        files
    ethers:     files
    netmasks:   files
    bootparams: files
    netgroup:
    publickey:
    automount:  files
    aliases:    files
    
    (Toutes les entrées doivent contenir "files" seul sauf host)

  6. générer le /etc/sendmail.cf avec:
    m4 config.mc > /etc/sendmail.cf
    et les permissions comme suit:
    -rw------- 1 root root 26468 mai 12 22:52 /etc/sendmail.cf

  7. Générer la base de conversion d'adresses:
    /usr/bin/sendmail -bi -oA/etc/genericstable
    Il doit exister après un fichier /etc/genericstable.db

  8. Relire la table des alias:
    newaliases

  9. Le fichier hosts doit contenir une ligne ressemblant à:
    127.0.0.1 localhost.localdomain localhost localhost

  10. redémarrer sendmail:
    kill `head -1 /var/run/sendmail.pid`
    /usr/bin/sendmail -bd -os
     

    Test de sendmail

    Voila c'est fini pour sendmail, reste à vérifier que cela fonctionne:
    Créer un fichier test.mail avec les lignes:

    Subject: test local
    première ligne de mon message
    (laisser une ligne vide)


    et faire:
    /usr/bin/sendmail -v dede < test.mail

    les lignes suivantes doivent s'afficher:

    dede... Connecting to local
    dede... Sent
    

    Lancer mail ou tout autre programme de lecture de courrier (pas encore Netscape!!) et vérifier que le message a été reçu.

    Pour configurer Netscape pour lire le courrier local (servi par sendmail):


    ATTENTION: ce dernier changement peut présenter des trous de sécurité si vous n'êtes pas le seul connecté à votre machine. Utilisez un autre client courrier que netscape si vous voulez être sur d'être le seul à lire votre courrier.

    A partir de maintenant, c'est votre machine qui dessert le courrier en direct depuis netscape même si vous n'êtes pas connecté à Internet. Bien sur, vous pouvez utiliser tous les autres clients courrier comme XFmail, emacs, mutt, pine etc...  

    Configuration de fetchmail

    Avant de faire un essai sur Internet il faut aussi configurer fetchmail pour récupérer le courrier:
    créez un fichier .fetchmailrc dans /home/dede:

    poll pop.isp.net protocol POP3
            user toto is dede
            password XXXXXXX
    

    ou toto et XXXXX sont les login et password de votre compte courrier pop.isp.net. Si vous disposez de plusieurs boîtes aux lettres vous pouvez les relever en dupliquant les lignes ci-dessus pour chaque boîtes aux lettres.
    Le fichier .fetchmailrc doit avoir les permissions suivantes, sinon fetchmail refusera de s'exécuter:

    -rw-------   1 dede   dede   189 oct  6 21:45 /home/dede/.fetchmailrc
    

    Pour faire un test sur Internet:

    Il doit apparaître dans la liste d'attente quand on tape la commande: mailq Ensuite connectez vous à votre fai (isp.net) et envoyez le message:
    /usr/bin/sendmail -q
    

    Attendez un peu et faites fetchmail pour récupérer votre courrier, vous devriez avoir un message renvoyé par le réflecteur. Vous pouvez vous déconnecter dès que tous les messages sont arrivés.  

    Automatisation

    Une fois que cela fonctionne, il reste à automatiser tout cela pour que cela marche tout seul à la connection.

    Avec PPP, les fichiers /etc/ppp/ip-up et ip-down sont exécutés à chaque connection et déconnection. Vérifiez que vous avez une ligne du genre de celle ci dans ip-up et ip-down, sinon la créer:
    [ -x /etc/ppp/ip-down.local ] && /etc/ppp/ip-down.local $*

    Les fichiers /etc/ppp/ip-up et ip-down lancent alors des fichiers ip-up.local et ip-down.local que l'on peut créer comme suit:

    #!/bin/bash
    # /etc/ppp/ip-up.local
    
    #Enregistrer les paramètres de connection
    echo `date` $4 $5 ppp-on >> /etc/ppp/history
    tail -n 1 connect-errors >> /etc/ppp/history
    
    # Envoyer le courrier en attente
    echo Sending mail... > /dev/console
    /usr/sbin/sendmail -q
    echo Mail sent.  > /dev/console
    
    # Récupérer le courrier sur le serveur pop
    echo Getting mail... > /dev/console
    fetchmail  > /dev/console 2>&1
    echo Got mail.  > /dev/console
    
    #Fini
    exit 0
    # fin de /etc/ppp/ip-up.local
    

    En fait, les deux lignes importantes sont les commandes sendmail -q et fetchmail, le reste est cosmétique et permet:

    #!/bin/bash
    # /etc/ppp/ip-down.local
    
    #Enregistrer les paramètres de connection
    echo `date` ppp-off >> /etc/ppp/history
    
    #fini
    exit 0
    # fin de /etc/ppp/ip-down.local
    

    Ces fichiers étant exécutés par root, il faudra recopier votre fichier .fetchmailrc dans le répertoire de root.

    Si vous disposez d'un accès permanent à Internet, sendmail se charge tout seul d'expédier régulièrement le courrier s'il est lancé en mode démon avec la commande:
    sendmail -bd -q10m
    Pour envoyer votre courrier toutes les 10 minutes par exemple.
    fetchmail peut aussi être lancé en mode démon avec la commande:
    fetchmail -d 600
    Pour récupérer votre courrier toutes les 10 minutes (600 secondes) par exemple.

    Le plus pratique consiste généralement à intégrer ce type de commande dans vos fichiers de démarrage /etc/rc ou /etc/rc.d/ (peut varier selon votre configuration).  

    Conclusion

    Avec cette configuration, dès que vous vous connectez, le courrier en attente (mailq) est expédié et celui qui attend chez votre FAI arrive. Vous pouvez utiliser xbiff ou xmailbox ou autre pour vous signaler que vous avez du courrier. Vous pouvez aussi affiner le tri et le filtrage de votre courrier avec procmail; cela est expliqué dans l' article de Novembre 1997 de Angel Lopez.  

    Autres articles sur le même sujet

     

    Discussion sur cet article

    Chaque article possède sa page de discussion. Vous pouvez y soumettre un commentaire ou lire ceux d´autres lecteurs:
     page de discussion 

    Site Web maintenu par l´équipe d´édition LinuxFocus
    © John Perr, FDL
    LinuxFocus.org

    Cliquez ici pour signaler une erreur ou envoyer un commentaire à Linuxfocus

    2001-03-18, generated by lfparser version 2.8