Le courrier électronique par UUCP: la solution professionnelle pour les utilisateurs de modems

ArticleCategory: [Do not translate this]

System Administration

AuthorImage:[Do not translate this]

[Photo of the Author]

TranslationInfo:[Do not translate this]

original in en Guido Socher

en to fr Georges Tarbouriech

AboutTheAuthor:[Translate the paragraph below]

Guido utilise UUCP depuis plusieurs années et pense que c'est le meilleur moyen de connecter votre système de courrier à l'Internet.

Abstract:[Translate the paragraph below]

UUCP est l'un des très vieux protocoles d'Internet. Aujourd'hui, il est souvent remplacé par des protocoles plus modernes mais il reste encore l'une des meilleures solutions pour envoyer ou recevoir du courrier électronique. Malheureusement, nombreux sont les utilisateurs se connectant depuis chez eux qui ignorent l'énorme potentiel d'UUCP et ne réclament donc pas ce service. Le résultat, c'est que la plupart des fournisseurs d'accès ne proposent plus UUCP.

ArticleIllustration:[Do not try to translate this]

[uucp]

ArticleBody:[Translate everything below]

Introduction

UUCP est un très vieux protocole, utilisé à l'origine pour copier des fichiers entre des systèmes Unix. D'où le nom : "Unix to Unix Copy". Ces anciens systèmes n'étaient pas connectés en permanence via un réseau. Des connexions par modem étaient établies à intervalles réguliers pour transférer des données.

Pour copier le fichier mesnotes.txt vers un système distant nommé "mars", on utilisait la commande :

uucp mesnotes.txt mars!~/mesnotes.txt
En réalité, ceci copie les données vers un répertoire d'attente (NDT : un "spool", quoi !) et elles ne seront physiquement copiées que plus tard, lors de l'établissement d'une connexion par modem.

Aujourd'hui, ce genre d'utilisation d'UUCP est tombé en désuétude. Des protocoles plus modernes tels que TCP/IP et par exemple, scp, sont maintenant disponibles pour copier des fichiers entre systèmes.

UUCP pouvait faire beaucoup plus. Il permettait d'exécuter un nombre limité de commandes distantes. Pour lancer la commande "rnews" sur la machine distante "mars" on tapait :
cat somedata.txt | uux - mars!rnews
Encore une fois, la commande rnews n'était pas exécutée immédiatement sur la machine distante, mais ultérieurement lorsqu'une connexion par modem était établie avec "mars". La commande était mise en attente dans le répertoire "spool" local.

Quel rapport avec le courrier électronique ?
Le courrier électronique est un domaine dans lequel il importe peu que les données transférées soient légèrement retardées. En règle générale, vous ouvrez votre logiciel de courrier, écrivez par exemple quelques réponses à vos amis et vous expédiez. Toutefois, vous ne laissez pas les fenêtres de votre application de courrier ouvertes en permanence jusqu'à ce que vous vous connectiez à votre FAI (Fournisseur d'Accès Internet). Vous "envoyez" votre courrier et fermez la fenêtre. S'il n'est pas envoyé immédiatement, ce n'est pas le plus important; l'essentiel, c'est qu'il "parte", même plus tard.

C'est exactement ce que vous pouvez faire de manière fiable et simple avec UUCP.

Votre système de courrier

UUCP est flexible. Vous pouvez l'installer de façon à en faire un serveur de courrier sur un réseau. Votre machine Linux peut devenir le serveur central de courrier pour toute sorte d'ordinateurs et de systèmes d'exploitation sur votre réseau local :
[A private 
mail system connected via dialup]


Installer un tel serveur de courrier peut se révéler très pratique pour une famille et très rentable pour une petite entreprise. Vous pouvez fournir des comptes de courrier à un grand nombre d'utilisateurs et vous n'avez besoin que d'une connexion par modem vers votre FAI. Une entreprise établira sans doute cette connexion périodiquement (par exemple, toutes les heures), et les utilisateurs ne l'établiront que par nécessité et pour d'autres raisons.

Pour conclure : le courrier électronique par UUCP n'est pas quelque chose de vieux et poussiéreux. C'est une application élégante d'UUCP, très pratique et peu coûteuse.

Comment ça marche ?

Avec UUCP, votre FAI vous founira votre domaine MX ( MX=Mail Exchanger, la partie "nom de domaine de votre adresse de courrier électronique). Par exemple, si l'adresse du fournisseur d'accès est www.mon-gentil-fai.com, Joe Miller peut obtenir un nom de domaine du style miller.mon-gentil-fai.com. Tout le courrier destiné à ce domaine sera envoyé au serveur de courrier de Joe Miller par l'intermédiaire d'UUCP. Joe peut alors configurer un nombre illimité d'utilisateurs : joe@miller.mon-gentil-fai.com, diana@miller.mon-gentil-fai.com, frank@miller.mon-gentil-fai.com ... C'est selon ce que souhaite Joe. Comme avec Linux vous disposez d'un serveur de courrier libre, capable de gérer différents protocoles tels que pop, imap, nfs, etc, directement depuis le système de fichier, il n'existe pas de restrictions sur le type de système d'exploitation ou de client de courrier dont les utilisateurs se servent pour accéder à leur boîte aux lettres.

UUCP est un protocole autonome capable d'être utilisé directement côté matériel (par exemple, la ligne modem sans aucun protocole ppp), toutefois, il fonctionne aussi très bien avec TCP/IP ce qui offre de nouvelles possibilités :

Vous pouvez avoir un FAI quelque part dans le monde avec un très bon réseau central (par exemple à Amsterdam) et vous connecter à Internet par l'intermédiaire d'un de ses sous-réseaux en bénéficiant d'un tarif local pour la connexion. UUCP fonctionnant au-dessus de TCP/IP, la situation géographique de votre FAI n'a plus d'importance. Il est accessible de partout dans le monde par le biais d'Internet.

Installation

La plupart des distributions Linux possèdent un paquetage UUCP contenant Tailer UUCP. Si ce n'est pas le cas, vous pouvez l'obtenir sur :
www.airs.com/ian

En dehors du paquetage UUCP, il vous faut également un système de courrier électronique capable de gérer UUCP. Je parlerai de Sendmail dans cet article mais la plupart des autres systèmes fonctionnent aussi par UUCP. Un logiciel de gestion de courrier capable de piloter UUCP possède une commande rmail dans le paquetage rpm ou deb.

Le courrier est envoyé vers votre système par l'exécution d'une commande distante, semblable à uux/rnews de l'exemple ci-dessus. rmail est la commande qui reçoit le courrier par un "pipe" UUCP et l'envoie vers votre logiciel de gestion.

Les informations suivantes sont nécessaires à votre FAI pour définir le compte :
Les données que votre FAI doit vous fournir :

Test du compte, pas à pas

UUCP par TCP/IP utilise le port TCP 540 vous permettant ainsi de tester votre compte avant d'entrer dans la configuration de votre système UUCP. De cette manière, vous pouvez être certains que le FAI n'a pas fait d'erreurs et que les mots de passe et les ID sont les bons. Lancez la commande :
telnet uucp.mon-gentil-fai.com 540
Vous recevez quelque chose du style :
Trying 1.2.3.42...
Connected to uucp.mon-gentil-fai.com
Escape character is '^]'.
login:
Tapez le nom de login et le mot de passe :
Trying 1.2.3.42...
Connected to uucp.mon-gentil-fai.com
Escape character is '^]'.
login: linux
Password: tux.1234
Shere=mfic
Après un "login" couronné de succès, l'autre côté répond par "Shere" ce qui signifie "System here" suivi par le nom du système distant (vérifiez avec ce que vous a fourni le FAI).
Pour couper la connexion, tapez crtl-] et tapez "q" au prompt de telnet :
^]
telnet> q
Connection closed.
Maintenant vous savez que votre compte est correctement configuré.

Configuration du système UUCP

Pour recevoir (et envoyer) du courrier par UUCP, vous devez écrire les bonnes données de configuration dans les fichiers UUCP correspondants. Ces fichiers se trouvent en général dans /etc/uucp. Vous devez créer/éditer les fichiers suivants : L'utilisateur et le groupe uucp doivent être propriétaires de ces fichiers. Le fichier call ne doit pas avoir les droits de lecture pour tout le monde (chmod 640 call). Les fichiers de log se trouvent généralement dans /var/log/uucp/ et /var/spool/uucp/ doit contenir un répertoire avec le nom du système distant. Vérifiez que l'utilisateur uucp a les droits d'écriture sur les deux.

call
# fichier call
# Le format n'est autre que nom-du-système-distant nom-de-login mot-de-passe.
mfic linux tux.1234

port
# fichier port 
# Inutile de modifier
type tcp
port tcp
service 540

sys
# fichier sys 
# fournit les informations sur le système distant
# nom du système de votre FAI :
system mfic
#le serveur de votre FAI :
address uucp.mon-gentil-fai.com
# ne modifiez pas les 3 lignes suivantes, voir la documentation de Tailer UUCP
# pour plus ample information
time Any 2
port tcp
chat-timeout 60
# commandes autorisées:
commands rmail
# récupérez le mot de passe et le nom d'utilisateur du fichier call :
call-login *
call-password *
# ne changez pas la ligne suivante :
chat ogin: \L assword: \P
#

config
# Le fichier config définit les chemins des autres fichiers et répertoires ainsi
# que le nom de votre système.
# Le nom de votre système :
nodename oblelix
# nombre maximal de requêtes externes à exécuter en parallèle :
max-uuxqts 2
# Le répertoire de spool d'UUCP
spool /var/spool/uucp
# Les autres champs sont généralement remplis par défaut :
# pubdir /var/spool/uucppublic
# logfile /var/log/uucp/Log
# statfile /var/log/uucp/Stats
# debugfile /var/log/uucp/Debug
# callfile /etc/uucp/call
# ....

Après avoir enregistré les fichiers de config, lancez la commande "uuchk". Elle devrait se trouver dans sbin: /usr/sbin/uuchk

La sortie est un résumé de votre configuration y compris certaines valeurs par défaut non définies. Le nom d'hôte du serveur de votre FAI, uucp.mon-gentil-fai.com dans notre exemple, apparaît en tant que "numéro de téléphone" :

Phone number uucp.mon-gentil-fai.com
C'est étrange mais correct pour UUCP par TCP/IP. Vérifiez particulièrement que les répertoires, les fichiers de log, etc, sont au bon endroit et appartiennent bien à l'utilisateur uucp.

Maintenant, vous devriez pouvoir recevoir du courrier par UUCP, mais votre gestionnaire de courrier (MTA=mail transport agent) doit encore découvrir qu'il est autorisé à gérer le courrier du domaine enregistré par votre FAI. Dans notre cas ce domaine est miller.mon-gentil-fai.com. La configuration de ce domaine dépend de votre MTA. Dans Sendmail, vous devez écrire miller.mon-gentil-fai.com sur une seule ligne du fichier /etc/sendmail.cw :

# sendmail.cw définit les domaines pour lesquels nous gérons le courrier
miller.mon-gentil-fai.com
Nous pouvons maintenant tester la réception de courrier par UUCP. L'envoi ne fonctionne pas encore puisque sendmail n'est toujours pas configuré.
Lancez
/usr/sbin/uucico -x 11 -S mfic
mfic est le nom du système UUCP de mon-gentil-fai.com

Ouvrez une seconde fenêtre de terminal et observez le résultat en tapant "tail -f /var/log/uucp/Debug".
Le "-x 11" indique le niveau de débogage le plus élevé et ne doit être utilisé que pour les tests. Vous allez voir tous les détails du protocole UUCP. Vérifiez qu'il n'y ait pas d'erreurs. Si vous obtenez quelque chose du style :
uucico mfic - (2001-06-22 20:20:57.73 1020) Call complete (31 seconds 42835 bytes 1381 bps)
alors, tout fonctionne parfaitement. Félicitations!

Lancez la commande "uulog". Elle affiche un résumé condensé des courriers reçus par UUCP/rmail.

Configuration de sendmail pour l'envoi par UUCP

Sendmail utilise une méthode de configuration basée sur le préprocesseur m4. D'autres systèmes tels que postfix possèdent des fichiers de configuration plus lisibles pouvant être édités directement. Comme j'utilise sendmail, c'est de mon expérience avec lui dont je vais parler. N'hésitez pas à ajouter des informations concernant les autres MTA sur la page de discussion accessible ci-dessous. J'ai vu que postfix réclamait seulement l'édition de transport/transport.db et qu'il fallait une définition pour uucp dans le fichier master.cf et c'est tout, mais je n'ai pas une grande expérience de postfix.

Le système de configuration m4 peut ne pas faire partie du même paquetage que sendmail. Vérifiez les CD de votre distribution au cas où vous devriez installer un paquetage nommé par exemple "sendmail-cf".

Créez un nouveau fichier sendmail-uucp.mc dans le répertoire cf de sendmail (probablement /usr/lib/sendmail-cf/cf):

#divert(-1)
# `This is config sends outgoing mail via uucp using /usr/bin/uux
#
# to generate a sendmail.cf out of this .mc file use the sendmail sources
# and run m4 thisfile.mc > sendmail.cf.'
divert(0)
include(`../m4/cf.m4')
VERSIONID(`UUCP, Jan 28 2001, without DNS')
undefine(`BITNET_RELAY')
undefine(`DECNET_RELAY')
undefine(`UUCP_RELAY')
OSTYPE(`linux')
MASQUERADE_AS(miller.mon-gentil-fai.com)
MASQUERADE_DOMAIN(localdomain)
MASQUERADE_DOMAIN(localhost)
# ` add any local hostnames here:'
MASQUERADE_DOMAIN(philosophus)
# ` needed if you use an internal domain that does not exist: '
FEATURE(`masquerade_envelope')
FEATURE(always_add_domain)
# ` read allowed domains from cw file: '
FEATURE(use_cw_file)
FEATURE(local_procmail)
# `important for uucp:'
FEATURE(accept_unresolvable_domains)dnl
# `the /etc/passwd entry: mail:*:8:12:mail:/var/spool/mail:'
define(`confDEF_USER_ID',``8:12'')
define(`confSAFE_QUEUE',`True')
define(`confDELIVERY_MODE',`background')dnl
# 'replace mfic by the UUCP system name of your ISP:'
define(`SMART_HOST',uucp-uudom:mfic)dnl
define(`confSERVICE_SWITCH_FILE',/etc/service.switch)dnl
define(`confHOSTS_FILE',/etc/hosts)dnl
define(`UUCP_MAILER_MAX',1024000)dnl
MAILER(procmail)dnl
MAILER(local)dnl
MAILER(smtp)dnl
MAILER(uucp)dnl
Adaptez le fichier à votre cas et compilez-le par la commande :
m4 sendmail-uucp.mc > sendmail.cf
Copiez le fichier sendmail.cf dans /etc et redémarrez sendmail par
/etc/rc.d/init.d/sendmail restart
Le chemin ci-dessus correspond au script de lancement de redhat/mandrake. Il est différent pour Suse, Debian etc...

Dans le fichier /etc/service.switch ajoutez :
hosts   files
aliases files
Envoyez maintenant un courrier à quelqu'un. Vous pouvez faire ça avec votre logiciel de courrier préféré ou à partir de la ligne de commande comme ceci :
echo "Salut john, ce n'est qu'un test..." | Mail john@somewhere.org
Ce courrier ne sera pas envoyé directement. Il sera mis en attente par le système UUCP. Vous le verrez si vous tapez :
uustat -a
uustat affichera :
mfic.CRJjd4uAAAPs mfic joe 07-24 20:19 Executing rmail john@somewhere.org
(sending 50 bytes)
Ensuite, lancez
/usr/sbin/uucico -x 11 -S mfic
mfic est toujours le nom du système UUCP de mon-gentil-fai.com Vous pouvez maintenant regarder le fichier Debug et voir comment le courrier est envoyé.

Tout automatique

Créez le script /usr/bin/uumail suivant :
#!/bin/sh
hostn=uucp.mon-gentil-fai.com
# vérifiez d'abord que le serveur du FAI est accessible.
# Ceci réclame une version récente de ping dans laquelle on peut définir un
# délai :
if ping -w 3 -qn -c 1 $hostn > /dev/null ; then
  /usr/sbin/uucico -S mfic
  #sleep 1
  #uulog -s mfic -5
else
  echo "ERROR: $hostn is down"
  exit 1
fi
Rendez le script exécutable par "chmod 755 /usr/bin/uumail" et lancez-le manuellement pour voir s'il fonctionne.

Pour automatiser l'envoi et la réception à chaque connexion, ajoutez la ligne /usr/bin/uumail à /etc/ppp/ip-up.

Voilà, ça y est. Votre système de courrier est opérationnel.

Choses à faire

Le système de gestion de courrier est configuré. Tous les utilisateurs (/etc/passwd, commande adduser) peuvent envoyer et recevoir du courrier automatiquement. Ce courrier est stocké dans les répertoires de "spool" traditionnels dans /var/spool/mail et peuvent être lus localement. Si vous voulez que ces utilisateurs soient capables de gérer leur courrier par les protocoles pop3 ou imap, vous devez alors installer un paquetage nommé "imap" fournissant les démons /usr/sbin/imapd and /usr/sbin/ipop3d.
Dans /etc/inetd.conf vous les démarrez en supprimant les commentaires des lignes :
pop-3   stream  tcp     nowait  root    /usr/sbin/tcpd  ipop3d
imap    stream  tcp     nowait  root    /usr/sbin/tcpd  imapd
Si vous utilisez xinetd, vous devez créer un fichier de configuration pour ce service (voir LinuxFocus article 175 à ce sujet). N'oubliez pas d'autoriser l'accès au fichier /etc/hosts.allow si les utilisateurs gérent leur courrier sur un autre hôte du réseau local :
# hosts.allow , tcp wrapper config file
# tout le monde peut accéder à imap :
imapd: ALL
# 2 hôtes sont autorisés pour pop3 :
ipop3d: 10.0.0.1, 10.0.0.2, 127.0.0.1

Trouver un FAI

Trouver un Fournisseur d'Accès Internet compétent et fiable pour UUCP n'est pas toujours facile, puisque la plupart des FAI s'adressent à Mr. PasdeproblèmeJ'aiWindows.

Je connais 2 bons FAI en Allemagne qui proposent le courrier par UUCP :

Les deux sont des organismes et vous y adhérez pour bénéficier du service. Les tarifs se situent entre 11 et 20 Euro par mois.

A LinuxFocus.org, nous pouvons aussi proposer le courrier par UUCP à un nombre limité d'adeptes de Linux, si vous nous rejoignez et nous aidez financièrement et/ou si vous travaillez régulièrement avec nous. Contactez-moi si vous êtes intéressés.

Un bon moyen de trouver un FAI adequat (NDT : comme Sheila !) dans votre pays consiste à faire une recherche par Google ou tout autre moteur. Plus le FAI sera "petit", plus il offrira de services aux clients, dont probablement le courrier électronique par UUCP.

Références