UUCP (Unix to Unix CoPy) vous permet d'envoyer et de recevoir du mail, et de même pour les news.
Je vous conseille de faire un lien entre /dev/modem
et
/dev/cua1
(COM2), si c'est votre périphérique. Les répertoires
utilisés par UUCP sont /var/spool/uucp, /var/spool/uucpublic,
/usr/lib/uucp
et /var/lib/uucp
.
Bon, je suppose que vous avez installé le package UUCP, elm et sendmail. Pour les news, je vous conseille INN, comme serveur de news, et tin ou trn, comme lecteur de news.
Les fichiers UUCP décrits ici sont au format HDB (ou, je sais que Taylor est achtement plus simple... mais j'ai pas eu le temps de refaire cette partie qui date... !).
UUCP a besoin de plusieurs fichiers de configuration qui se trouvent
dans /var/lib/uucp/hdb_config
.
ACU modem - 9600 hayes_usr
hayes_usr =,-, "" \dATE0V1X1Q0\r\c OK\r ATDT\T\r\c CONNECT
MACHINE=frmug LOGNAME=nuucp \ READ=/var/spool/uucppublic \ WRITE=/var/spool/uucppublic \ SENDFILES=yes REQUEST=yes
remcomp any ACU 9600 0042470611 ogin: nuucp frmug any ACU 9600 0053176410 ogin: nuucp frmug1 any ACU 9600 0053176411 ogin: nuucp
Maintenant, le système est configuré. Il n'y a plus qu'à tester. Lancer ceci :
uucp remcomp\!\~/catalogue.Z ~/
Votre machine va se connecter sur remcomp pour récupérer le fichier
catalogue.Z
. Ce fichier sera déposé dans le répertoire
/var/spool/uucppublic
.
Bon. Au point où l'on en est, vous pouvez appeler. Maintenant,
on va configurer la machine pour que le monde extérieur puisse appeler. Tout se joue
dans le fichier /etc/inittab
.
Décommenter une ligne comme par exemple :
s1:45:respawn:/sbin/agetty -h -t 60 9600 modem | | | | | | |--- Port a utiliser | | | | | |--------- Vitesse du modem | | | | |--- Temps au bout du quel on racroche | | | |-------- Active le controle de flux rts/cts | | |------------- A relancer lorsqu'il se termine | |------------------ Runlevels. |---------------------- Identificateur
Donc, au prochain boot, un système de login est prêt sur le port
/dev/modem
(port série sur lequel est connecté le modem).
Le dernier problème est de le configurer. En effet, le modem
doit être positionné pour la vitesse. En fait, ca dépend du modem. Si jamais
vous pouvez positionner des switch, rendez le modem muet (ATQ2
) et surtout,
mettez-le en auto-reponse (ATS0=1
).
Si vous n'avez pas de switches, faîtes un AT&W
pour sauvegarder les
paramètres.
Pour vérifier la config utiliser usr
lib/uucp/uuchk/.
Si vous voulez d'autres renseignements, je vous conseille de lire le HOWTO UUCP.
L'objet de ce paragraphe est l'installation d'une connexion PPP.
PPP (Point to Point Protocol) permet d'établir une connexion IP sur une voie série de manière plus efficace que SLIP (Serial Line Internet Protocol). Une fois la connexion établie, tous les protocoles supérieurs à IP (FTP, telnet, NFS, http, X...) sont disponibles.
Pour établir une connexion PPP, il faut:
PPP est supporté par un grand nombre de systèmes (même MS-Windows) et on peut normalement se connecter d'un système à l'autre. Cependant, cette documentation ne traite que le cas de Linux !
Pour accéder à un serveur PPP installé, votre noyau doit être compilé avec le support TCP/IP. Pour cela, lors du make config il faut répondre comme suit :
Networking support (CONFIG_NET) [y] y TCP/IP networking (CONFIG_INET) [y] y IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] n Network device support? (CONFIG_NETDEVICES) [y] y PPP (point-to-point) support (CONFIG_PPP) [y] y
Vous devez en plus récupérer les sources des programmes
d'accès à PPP (dans l'archive ppp-2.1.2a.tar.gz
, voire b, c, ou
d) de manière à installer les programmes suivants :
pppd
le programme d'établissement du protocolechat
qui permet de dérouler le chat-script d'appel
au site PPPVous pouvez par exemple installer pppd
et chat
dans le
répertoire /usr/sbin
.
Ensuite, vous devez configurer vos shell-scripts de boot
de manière à configurer la couche TCP/IP (par exemple dans
un fichier /etc/rc.d/rc.net
qui sera lancé par
/etc/rc.d/rc.local
). En voici un exemple :
echo -n "/etc/rc.net: " INETD=/sbin/inetd PORTMAP=/sbin/portmap # loopback /sbin/ifconfig lo 127.0.0.1 up netmask 255.255.255.0 /sbin/route add 127.0.0.1 lo # demarrage des demons if [ -x $PORTMAP ]; then echo -n ", `basename $PORTMAP`" $PORTMAP fi if [ -x $INETD ]; then echo -n ", `basename $INETD`" $INETD fi echo ""
Il faut ensuite ajouter l'adresse IP de la machine dans
le fichier /etc/hosts
:
127.0.0.1 loopback localhost # useful aliases 199.103.124.170 pcpf pcpf.lectra.fr # Mon beau PC en PPP
L'adresse IP de la machine correspond à celle affectée par l'administrateur du serveur PPP pour la connexion associée à un numéro de téléphone donné. Cela signifie que la personne qui se connecte 10 minutes après utilisera la même adresse IP que vous.
Enfin, vous devez configurer votre domaine dans le fichier
/etc/resolv.conf
:
domain lectra.fr nameserver 192.1.2.1
La deuxième ligne est utilisée si vous souhaitez utiliser un
serveur de noms, c'est-à-dire une machine renvoie l'adresse IP correspondant au nom de
machine fourni. Si vous n'avez pas de serveur de noms, vous ne pourrez
utiliser que des adresses numériques (199.103.124.x) ou bien vous devrez
mettre dans le fichier /etc/hosts
toutes les machines auxquelles vous
voulez accéder avec leurs adresses IP...
Vous pouvez également mettre votre nom de domaine dans le
fichier /etc/ppp/options
qui doit exister même vide (si vous
ne voulez pas que pppd
demande /etc/ppp/options
, il faut le
compiler avec l'option -DREQ_SYSOPTIONS=0
).
Vous pouvez maintenant fébrilement tester la connexion en utilisant un shell-script du style (attention : tout cela constitue une seule ligne) :
/usr/sbin/pppd connect '/usr/sbin/chat -v ABORT ERROR ABORT "NO CARRIER" \ ABORT BUSY "" ATB0 OK ATDTxxxxxxxx CONNECT "" ogin: ppp \ word: ppp0' /dev/modem 9600 -detach debug crtscts modem \ defaultroute 199.103.124.170:
La commande chat
permet d'effectuer la connexion en
appelant le numéro de téléphone de votre serveur. Attention de
ne pas oublier les options de la deuxième ligne en particulier
modem
et defaultroute
.
La spécification de la vitesse (9600) ainsi que le chat-script à utiliser (ABORT ERROR ABORT "NO CARRIER" ABORT BUSY "" ATB0 OK ATDTxxxxxxxx CONNECT) dépendent bien entendu du modem et de la configuration du serveur (voir également le login et le password).
L'adresse IP doit être celle déclarée en tant
qu'adresse de la machine en PPP dans /etc/hosts
(on peut
également y mettre le nom de la machine en PPP).
Les informations de debug doivent sortir sur la console (si vous avez configuré le syslog pour celà).
A partir de là, vous êtes connecté sur le réseau distant et vous pouvez faire par exemple:
$ ping 199.103.124.50 PING 199.103.124.50 (199.103.124.50): 56 data bytes 64 bytes from 199.103.124.50: icmp_seq=0 ttl=255 time=268 ms 64 bytes from 199.103.124.50: icmp_seq=1 ttl=255 time=247 ms 64 bytes from 199.103.124.50: icmp_seq=2 ttl=255 time=266 mspour tester la connexion. Si le ping marche et que le réseau est connecté à l'Internet, alors vous avz Internet à la maison !
Si ça ne marche pas, vous pouvez tester en tapant
/sbin/ifconfig
et le résultat doit ressembler à ça :
lo Link encap Local Loopback inet addr 127.0.0.1 Bcast 127.255.255.255 Mask 255.0.0.0 UP LOOPBACK RUNNING MTU 2000 Metric 1 RX packets 0 errors 0 dropped 0 overrun 0 TX packets 0 errors 0 dropped 0 overrun 0 ppp0 Link encap Serial Line IP inet addr 199.103.124.170 P-t-P 199.103.124.50 Mask 255.255.255.0 UP POINTOPOINT RUNNING MTU 1500 Metric 1 RX packets 33 errors 0 dropped 0 overrun 0 TX packets 42 errors 0 dropped 0 overrun 0
Surtout, vous devez avoir une ligne commençant par ppp0
sinon, c'est qu'il y a un problème. Vous pouvez également tester le routage par
netstat -nr
qui doit donner quelque chose de semblable à :
Kernel routing table Destination Gateway Genmask Flags Metric Ref Use Iface 199.103.124.50 0.0.0.0 255.255.255.255 UH 0 0 6 ppp0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 199.103.124.50 0.0.0.0 UG 0 0 6298 ppp0
Avec une ligne 0.0.0.0 contenant l'adresse IP du
serveur PPP. Si vous n'avez pas cette ligne, il se peut que vous ayez
oublié l'option defaultroute
.
Pour cela, vous devez installer les mêmes logiciels que
dans le chapitre précédent (configurer le noyau, installer
pppd
). En plus de ça, il faut que créer un login spécial
pour les connexions PPP dans /etc/passwd
, par exemple :
ppp::61:60:Connexion PPP:/:/usr/bin/ppp_login
Le script /usr/bin/ppp_login
étant :
#!/bin/sh # Connexion PPP --> adresse IP = 199.103.124.170 exec /usr/sbin/pppd -d -detach -ip modem proxyarp :199.103.124.170
L'option proxyarp
permet à la machine connectée
d'accèder à tout le réseau :
199.103.124.170 199.103.124.50 +-----------+ PPP link +----------+ | pcpf | ------------------- | ondee | +-----------+ +----------+ | Ethernet ----------------------------------- 199.103.124.x
Pour plus d'informations, voir le fichier README.Linux
de la distribution ppp-2.1.2a.tar.gz
.
Remarque : Ce fichier est dans la distribution standard de la Slackware.
Une question commune est : "j'ai un accès Internet mais une seule adresse IP et je voudrais pourtant pouvoir connecter plusieurs machines".
Le NET2-HOWTO
répond à cette question mais il oublie une possibilité.
Cette note a pour but d'expliquer les quatre façons de résoudre le
problème ci-dessus.
ping
et beaucoup de services UDP.
"IP masquerading" nécessite un noyau récent (2.* ou certains 1.3.* ou un
patch du 1.2.*) et il est documenté sur http://www.indyramp.com/masq/
ou http://hwy401.com/achau/ipmasq/
(pas de encore de HOWTO). Firewall-HOWTO
décrit
cette solution (il est traduit en français, voir
http://www.freenix.fr/linux/HOWTO/
.)http://cache.cnrs.fr/
). Ainsi, le
gros avantage du relayage est de pouvoir apporter une valeur ajoutée :
réécriture d'adresses et gestion de file d'attente centralisées pour le
courrier, caches pour le Web. Le meilleur relais + cache Web à l'heure
actuelle est Squid http://www.nlanr.net/Squid/
.
Le relayage a deux défauts : toutes les applications ne disposent pas
d'un relais (on peut utiliser Socks pour combler les trous) et il faut
installer un nouveau relais à chaque application. Le relayage est donc
recommandé si on se contente des services de base : courrier, Web, News,
etc.La configuration du sendmail est toujours quelque chose de particulièrement pénible et difficile. Toutefois, certains outils facilitent grandement les choses. La Slackware est d'origine fournie avec certains fichiers, qui peuvent être une solution. Toutefois, il est plus sain de reinstaller le fichier de configuration en se basant sur les docuements qui suivent :
ftp://ftp.lip6.fr/pub/unix/mail/sendmail/ucb
;ftp://ftp.jussieu.fr/jussieu/sendmail/kit/
;ftp.pasteur.fr/pub/Gnu
;http://www.smli.com/~bwelch/exmh/
.http://www.freebsd.org/FAQ/
;http://web.pasteur.fr/other/computer/Linux/my-BBS/uucp<.txt
;Les provideurs reçoivent les messages et les rendent accessibles
via un serveur POP (en général mail.fournisseur.fr). Il faut donc
récupérer les messages reçus par ce serveur vers la machine linux
dans /var/spool/mail/utilisateur. Pour cela, vous pouvez utiliser le programme
gwpop
de Stéphane Bortzmeyer. On le trouve dans
ftp://ftp.pasteur.fr/pub/Network/gwpop
.
Dans ce script, définir :
$mailhost = "mail.fournisseur.fr"; $deliver= "deliver NomUserLocal ";
Puis, une fois connecté, lancer via un script (histoire de ne pas avoir à tout retaper à chaque fois) :
gwpop -p MotDePasseServeurPop UserServeurPop
Une fois que le courier est reçu, la question est de savoir comment
en envoyer. Il faut recompiler sendmail
sans DNS.
Pour cela, définir NAMED_BIND
à 0 dans src/conf.h
.
Les versions
récentes de sendmail ont par défaut un comportement qui peut être
génant. Les messages accentués sont automatiquement convertis
en Quoted Printable si le serveur auquel il se connecte n'annonce pas
qu'il supporte le protocole ESMTP 8bit. Si on trouve cette initiative
génante, il faut définir MIME8TO7 à 0 dans src/conf.h
.
Voici le fichier de règles qu'il faut indiquer via le kit sendmail Jussieu :
#!/bin/sh # # Regles pour le domaine lolonet # Domaine="MonNomdeDomaineAvecUnPoint" AdressesInternes=RIEN V8="o" Aliases="/etc/aliases" SendmailSt="/etc/sendmail.st" SendmailHf="/etc/sendmail.hf" Mqueue="/var/spool/mqueue"et le fichier de config :
#!/bin/sh Host="NomDeMaMachine" AdressesLocales=TOUT_DOMAINE RelaisExterieur="smtp.[mail.fournisseur.fr]" ReecritureadressesLocales="fournisseur.fr" RevAliases="hash -N /etc/revaliases" MailerLocal='/usr/bin/deliver DFMPlmnrs deliver $u' SansDNS=1
Il suffit ensuite de modifier le configurateur en décommentant la ligne suivante:
CPP="$CPP -traditional"
puis générer le fichier de config :
./configurateur regles.lolonet Machine.config >sendmail.cf.Machine
Si on a désactivé MIME8TO7 dans sendmail, commenter la ligne du sendmail.cf générée :
# O EightBitMode=mime
et copier le fichier dans /etc
Il est nécessaire de définir l'adresse IP du serveur SMTP dans
/etc/hosts
.
Enfin, il faut réécrire l'adresse locale pour que les messages envoyés
aient un champ From
correspondant à l'adresse fourni par le
fournisseur. Il suffit d'ajouter dans /etc/revaliases
une ligne du style:
NomLocal: NomFournisseur@fournisseur.fr
et ensuite regénérer la base avec :
/usr/sbin/sendmail -bi -oA/etc/revaliases
Voila ! Les mails sont stoqués dans /var/spool/mqueue
.
Lorsque vous êtes connectés par PPP et que vous souhaitez envoyer tous
les mails, il suffit de faire
/usr/sbin/sendmail -q
Une option de netstat
existant sur certaines plates-formes
est inexistante avec Linux (option -s
). Qu'importe : le
script Perl 5 qui suit résoud ce problème ! Il suffit de le sauvegarder sous
le nom de netstat
, et de le mettre avec le vrai
dans le PATH. Perl fait le reste.
#!/usr/local/bin/perl # Il faut perl 5 $stats = "/proc/net/snmp"; if ($ARGV[0] eq '-s') { open (STATS, "< $stats") || die "Cannot open $stats: $!"; while (<STATS>) { chop; undef $i; ($category, @fields) = split; chop $category; print "\n$category statistics:\n"; $_ = <STATS>; ($category, @values) = split; $~ = "STAT"; foreach $field (@fields) { write; } } close (STATS); } else { system ($0, join (' ', @ARGV)); } format STAT = @<<<<<<<<<<<<<<<<<:@>>>>>>> $field, ,$values[$i++] .