La gestion automatisée des news et du courrier est simple à réaliser sous Linux.
Tout d'abord, on doit créer un script /usr/lib/ppp/ppp-on
qui démarre la connexion au F.A.I. Souvent, ce fichier contient simplement la ligne suivante :
/usr/sbin/pppd
Les précisions supplémentaires sont faites dans :
/etc/ppp/options
:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400
Pour terminer une connexion, on utilise la version fournie de
/usr/lib/ppp/ppp-off
.
Après avoir testé le fonctionnement de ces deux scripts, on doit écrire ceux qui réalisent les différentes tâches. Le script pour récupérer le courrier a été décrit plus haut et on suppose qu'il se trouve dans /home/dirk/pop
.
Un script pour l'envoi de courrier peut être créé dans
/root/mail
:
#! /bin/sh
#
# echange de courrier
# timeout de 10 minutes :
TIMEOUT=600
DT=10
# lancer sendmail :
sendmail -q &
# recuperer le courrier :
su dirk -c /home/dirk/pop
# attendre que sendmail se termine :
t=0
while ! mailq | grep -q "Mail queue is empty"; do
t=$[$t+$DT]
if [ $t -gt $TIMEOUT ] ; then
echo "sendmail -q timeout ($TIMEOUT).."
exit 1
fi
sleep $DT
done
exit 0
Le script pour envoyer des News peut être créé dans
/usr/lib/news/news
:
#!/bin/sh
#
# echange des news
# doit etre lance par l'utilisateur news :
cd /usr/lib/news
# mettre a jour le lot de sortie (C News) :
/usr/lib/newsbin/input/newsrun < /dev/null
# echange des news :
/usr/lib/newsbin/newsx acme news.acme.net
# vidage du lot entrant :
/usr/lib/newsbin/input/newsrun < /dev/null
Un script pour rassembler tout cela reste à écrire dans
/root/news+mail
:
#!/bin/sh
#
# echange de courrier et de news
# doit etre lance par root
#
if ! /usr/lib/ppp/ppp-on; then
exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15
# echange de news+mail :
/root/mail &
su news -c _news/news
wait
# deconnexion...
/usr/lib/ppp/ppp-off
# mise a jour du lot entrant (C News) :
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &
exit 0
Il est très facile d'étendre tout ceci afin de n'établir une connexion que si du courrier ou des news sortants sont présents.
On appellera ce script /root/news+mail.cond
, et on se rappellera que le nom du spool de news sortant doit être
modifié pour que cela fonctionne :
#!/bin/sh
#
# echange de news et courrier, seulement s'il y a des news ou du courrier sortant.
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
! ( mailq | grep -q "Mail queue is empty"); then
/root/news+mail
fi
La seule chose restant à faire est de dire le moment où tout cela doit se passer. Pour cela, on utilise la commande
crontab -e
sous le compte root. On suppose que l'on veut toujours échanger les news et le courrier à 7 heures du matin,
puis toutes les 4 heures s'il y a des news et du mail sortant :
00 7 * * * /root/news+mail
00 11,15,19,23 * * * /root/news+mail.cond
Il faut s'assurer que chaque partie fonctionne correctement avant de les intégrer ensemble. On peut ajouter plusieurs autres
tâches par la suite, comme le réglage de l'horloge (en utilisant ntpdate), et la mise à jour automatique (miroir) des
fichiers WWW er FTP locaux par rapport à ceux du F.A.I (en utilisant make et ftp).
ALT: Selon les préférences, il est aussi possible de renverser le processus. Chaque fois qu'une connexion PPP est
établie, le script /etc/ppp/ip-up
sera démarré. On peut y ajouter tout ce qui est nécessaire pour démarrer l'échange
de courrier et des news. Voir man pppd
pour plus de détails.
ALT: On peut aussi se connecter en PPP à chaque fois qu'un trafic réseau est détecté. C'est, dans bien des cas, la solution la plus élégante mais elle est tributaire d'une bonne configuration pour éviter l'établissement de connexions fréquentes et coûteuses. Plus d'information peut être trouvée à :
http://www.dna.lth.se/ erics/diald.html
L'utilitaire diald
est disponible à :
ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.16.tar.gz
Au même endroit, on trouvera aussi d'autres variations sur les connexions PPP.
Chapitre suivant, Chapitre Précédent
Table des matières de ce chapitre, Table des matières générale
Début du document, Début de ce chapitre