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
#
# échange de courrier
# timeout de 10 minutes :
TIMEOUT=600
DT=10
# lancer sendmail :
sendmail -q &
# récupérer 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
#
# échange des news
# doit être lancé par l'utilisateur news :
cd /usr/lib/news
# mettre à jour le lot de sortie (C News) :
/usr/lib/newsbin/input/newsrun < /dev/null
# échange des news :
/usr/lib/newsbin/newsx acme news.acme.xz
# 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
#
# échange de courrier et de news
# doit être lancé par root
#
if ! /usr/lib/ppp/ppp-on; then
exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15
# échange de news+mail :
/root/mail &
su news -c news/news
wait
# déconnexion...
/usr/lib/ppp/ppp-off
# mise à 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
#
# échange 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.