Next Previous Contents

12. Devenir fournisseur UUCP

Maintenant que vous savez comment vous connecter à un système uucp distant, pourquoi ne pas franchir le pas et offrir vous aussi un accès UUCP à d'autres personnes ?

C'est ce que font les BBS (Bulletin Board System) : ils téléchargent les news et les mails puis les mettent à disposition de leurs users (abonnés).

Vous pouvez faire de même et offrir un accès gratuit aux news ( et à certaines conditions des emails) à vos proches. Cela est même possible si vos abonnés ne disposent pas d'un système UniX (Linux, FreeBSD, Solaris, AIX, etc.). Lisez le chapitre 13 ("UUCP sur d'autres plateformes") pour en savoir plus.

Au sein d'une association ou d'un club, c'est même un moyen extrêmement pratique pour échanger des news, des conférences locales, des fichiers, des messages. Tout cela très efficacement, automatiquement et avec un coût (téléphoniquement parlant) très réduit.

Que vous reste-t-il à configurer pour obtenir ce résultat merveilleux ?

Donc n'hésitez pas : just do it !

12.1 Compiler et installer mgetty

se procurer mgetty

mgetty se trouve seul ou avec son compagnon "sendfax" sur quasiment toutes les distributions Linux. Le package s'appelle généralement "mgetty+sendfax". Si ce n'était pas le cas (mgetty n'est pas GPL, mais fourni avec les sources et est librement distribuable) téléchargez la dernière version sur l'un des sites suivants :

FTP :

<ftp://sunsite.unc.edu/pub/Linux/system/serial/mgetty+sendfax-1.0.0.tar.gz>

<ftp://tsx-11.mit.edu/pub/linux/sources/sbin/mgetty+sendfax-1.0.0.tar.gz>

<ftp://alpha.greenie.net/mgetty>

<ftp://ftp.leo.org/pub/comp/os/unix/networking/mgetty>

WWW :

<http://alpha.greenie.net/mgetty>

compiler mgetty

Si vous installez un package tout fait (Debian ou RedHat par exemple) passez au paragraphe suivant. Sinon, lisez les conseils qui suivent.

1) recopiez le fichier policy.h-dist sous le nom policy.h (policy.h-dist vous servira de sauvegarde en cas d'erreur)

2) éditez policy.h et adaptez le à vos besoins.

Par exemple, sur ma SlackWare j'ai ajusté les variables suivantes :

gardez aussi à l'esprit que la plupart de ces variables peuvent être redéfinies dans le fichier de configuration mgetty.config. Pourquoi alors les définir ici ? Franchement, ce n'est pas nécessaire, mais il faut bien justifier une compilation ;-)

         ---------------------------------------------------------
         # extrait de policy.h (mgetty) de la machine batman
         #
         #
         /* Denis BRAUSSEN */
         #define LOG_PATH "/var/log/mgetty/mgetty.log.%s"

         #define SYSTEM  "batman"

         #define LOGIN_PROMPT    "@ \\D \\T !login: "

         #define NOLOGIN_FILE "/etc/mgetty+sendfax/nologin.%s"

         #define MGETTY_PID_FILE "/var/run/mgetty.%s.pid"
         
         /*-----------------------IMPORTANT------------*/
         # ifdef linux
         # define LOCK  "/var/lock/LCK..%s"
         # endif
     
         #define LOCKS_BINARY 0
         /*--------------------------------------------*/

         #define FAX_USRobotics
         #define FAX_LOG         "/var/log/fax/sendfax.log"
         #define FAX_STATION_ID  "03 87 xx xx xx"

         #undef MAILER

         #ifndef MAILER
         # define MAILER         "/usr/lib/sendmail"
         # define NEED_MAIL_HEADERS
         #endif

         #define MAIL_TO         "postman"
         ---------------------------------------------------------

3) éditez le fichier Makefile et adaptez le à vos besoins. Normalement il n'y a rien à faire. Sauf peut être modifier la variable 'prefix' :

prefix=/usr/local

qu'on peut mettre à :

prefix=""

pour éviter que tous les fichiers de configuration ne soient placés dans /usr/local/*

4) lancez la commande 'make'

5) lancez la commande 'make testdisk'. En cas de messages d'erreurs, consulter le fichier README.1st.

6) lancez la commande 'make install'

7) sauvegardez le fichier Makefile et policy.h (par exemple dans /etc/mgetty+sendfax) cela pourra toujours vous servir en cas de doute sur les valeurs utilisées par mgetty sur votre machine.

C'est tout.

Fonctionnement et configuration de mgetty

principe

Configuration

I) /etc/inittab

rajoutez la ligne suivante :

           #/etc/inittab  port série 1
           #
           s1:2345:respawn:/usr/local/sbin/mgetty ttyS0
           #-------------------------------------------- 

bien entendu, adaptez ceci à vos besoins (niveau d'exécution et numéro de port série). C'est la paramètre 'respawn' qui indique à init de relancer mgetty dès qu'il meurt.

N'oubliez pas de lancer un nouveau processus init afin que cette modification soir prise en compte. (Le processus init a un pid égal à 1)

faites : kill -HUP 1 ou encore : init q

sous root, bien entendu. Personnellement je préfère la méthode 'kill'.

II) mgetty

Typiquement il y a deux fichiers à configurer. (Il y a en fait plus que ça (fax, modem voice,...), mais ils ne nous intéressent pas dans cette doc).

Ces fichiers se trouvent dans /etc/mgetty ou encore /etc/mgetty+sendfax.

Attention : si vous avez compilé mgetty vous même et que la variable 'prefix' du Makefile vaut /usr/local ces fichiers se retrouveront dans /usr/local/etc/mgetty ou /usr/local/etc/mgetty+sendfax

II.i) /etc/mgetty+sendfax/mgetty.config

Ce fichier est responsable du comportement de mgetty (on peut y redéfinir quasiment toutes les options trouvées dans policy.h) mais surtout c'est là qu'on va dire à mgetty comment il doit réinitialiser le modem.

exemple :

###########################################################
# extrait de /etc/mgetty+sendfax/mgetty.config
# de la machine batman
# 
# ----- global section -----
speed 115200
#
# ----- port specific section -----------------------------
#
# -BatMan- port série numéro 1 (modem USR Sportster vi 33.600)
port ttyS0
  #  
  #maximum d'informations pour le debuggage
  debug 9
  # 
  #le modem ne recevra pas de fax (mais ceci est un choix personnel)
  data-only y
  #
  # detection automatique du type de modem (voice, modem-fax, etc...) 
  modem-type auto
  #
  #mgetty répond dès la première sonnerie
  rings 1
  #
  # Dans la séquence d'initialisation du modem, on désactive le mode
  # 'réponse automatique' du modem (commande ATS0=0 pour un modem USR)
  # afin de s'assurer que c'est bien mgetty qui va décrocher et non pas le
  # modem.
  #
  # AT&F1   réinitialisation (USR Robotic, reset "usine" qui, en plus,
  #         force le contrôle matériel de flux)
  # ATZ     réinitialisation (cas général, pour mémoire)
  # ATS0=0  désactivation du mode réponse automatique (USR Robotic)
  # ATH0    raccrochage du modem (USR Robotic)
  #
  # Attention, après la commande ATZ ou AT&F1 toujours attendre la 
  # réponse 'OK' du modem. Ne pas écrire par exemple :
  # ATZATQ0E1V1H0 OK mais ATZ OK ATQ0E1V1H0 OK
  # 
  init-chat "" AT&F1 OK ATH0 OK ATS0=0 OK
  #
  # quelques exemples:
  # ------------------
  # initialisation par ATZ (cas général, pour mémoire)
  # init-chat "" ATZ OK ATH0 OK ATS0=0 OK
  #
  # chaine proposée par Alain LESNE <al@snark.frmug.org> sur un USR Robotic
  # init-chat "" AT&F1 OK ATM0&D2S0=0S40=6S27=16S34=8 OK
  # 
  # statistiques (optionnel: à ne laisser que pour un déguggage)
  # ============================================================
  #
  # Commandes d'interrogation du modem pour un USR Robotic : ATIx
  #
  # 3=type modem
  # 4=config courante
  # 7=configuration modem
  #
  statistics-chat "" AT OK ATI3 OK ATI4 OK ATI7 OK AT OK
  statistics-file /var/log/mgetty/statistics.USR-33600
  # --------------------------------------------<end ttyS0>---

II.ii) /etc/mgetty+sendfax/login.config

C'est ce fichier qui va indiquer à mgetty le programme à exécuter en fonction de la chaîne de caractères reçue lors de 'login:' initial.

Ce fichier est prêt à l'emploi, il suffit de décommenter les lignes à activer. Vérifiez aussi les 'paths' des différents programmes.

exemple :

           #/etc/mgetty+sendfax/login.config
           #
           #
           # login_program is the program that will be exec()ed, with the
           # arguments passed in [arguments]. A "@" in the arguments will
           # be replaced with the username entered. Warning: if no "@" is 
           # given, the login_program has no way to know what user name 
           # the user entered.
           #
           #--------------------------------------------------------
           #
           # UUCP
           # ----
           # Cette ligne dit à mgetty que si un login commence
           # par la lettre 'U' alors c'est uucico qui doit être lancé.
           #
           #
           U*      uucp    @       /usr/lib/uucp/uucico -l -u @
           #
           # FIDONET
           # -------
           # si le login est le mot /FIDO/ alors c'est ifcico qui est
           # exécuté (ifcico, du package ifmail, est l'équivalent
           # de uucico mais pour les liaisons avec le réseau FidoNet)
           #
           #
           /FIDO/ uucp    fido    /usr/local/lib/fnet/ifcico @
           #
           # TOUT LE RESTE : ON SUPPOSE QU'IL S'AGIT D'UN TERMINAL DISTANT
           # -------------
           # Ce qui a échappé aux règles précédentes est capturé par cette
           # ligne. Attention, cette règle 'attrappe-tout' n'est pas
           # obligatoire, à vous de savoir si vous en avez besoin.
           # De plus un comportement par défaut est prévu par mgetty.
           # Consultez la doc à ce sujet.
           #
           #
           *       -       -       /bin/login @
           #--------------------------------------------------<EOF>---

Conclusion

Nous avons réservé tous les logins commençant par 'U' à uucico. C'est ce qui se fait traditionnellement. Il faudra s'en rappeler quand nous créerons des accès à nos abonnés !

12.2 Le fichier /etc/uucp/passwd

Rappel (cf. chapitre 6) :

passwdfile permet d'utiliser un fichier de mots de passe pour les appels ENTRANTS (ceux qui se connectent sur votre machine). Grâce à ce fichier, Taylor-UUCP permet d'utiliser des paires (user, password) sans être obligé de créer une entrée supplémentaire pour "user" dans /etc/passwd.

Voilà qui est pratique et terriblement sécurisant ! Pas besoin d'ajouter une ligne dans le /etc/passwd (cela peut se faire quand même, mais dépasse le cadre de cette doc. En général on donne alors uucico comme shell).

exemple :

  #/etc/uucp/passwd
  #----------------------------------------------
  #
  # login            mot de passe
  #-------------------------------
  Ualbert       X1£$#'Ax
  Umichel       xA'"([}b
  Unicole       KLms9/&G
  #       ^^^^^^
  #       tabulation
  #--------------------------------------EOF-----

il ne reste plus qu'a mettre à jour les fichiers

    /etc/uucp/sys 
    /etc/uucp/port
    /etc/uucp/dialer
et éventuellement /etc/uucp/call sur chaque machine comme décrit au chapitre 6.

12.3 Quelques exemples de tâches automatisées

Je me contenterai de donner quelques exemples. À vous de voir ce qui va le mieux sur votre système.

Dans le cron de l'user 'news' (préparation des files d'attente) :

#---------------------------------------------------------------------------
# sendbatch pour gyptis tous les jours à 20h 40mn           SENDBATCH GYPTIS
# voir cron gyptis pour la chrononologie
40     20      * * *            /usr/lib/news/bin/sendbatch -c gyptis 
#---------------------------------------------------------------------------
#--------------------------------------------------------------------------
# Enable this if you want to send news by uucp           SEND-UUCP.PL JOKER
# to your provider. Also edit 'send-uucp.cf' !
#
*/20    *       * * *           /etc/news/scripts/send-uucp.pl joker
#---------------------------------------------------------------------------

dans le cron de l'user 'uucp' 'appel sortant vers gyptis) :

#---------------------------------------------------------------------------
# call to gyptis  at 20h 50mn (pm)                             UUCICO GYPTIS
#
50      20      * * *          /usr/lib/uucp/uucico -S gyptis 
#---------------------------------------------------------------------------

Next Previous Contents