La gestione automatica della posta e delle news è abbastanza facile sotto Linux.
Come primo e principale passo, si deve creare uno script /usr/lib/ppp/ppp-on per iniziare il collegamento con l'Internet Provider. Spesso, basta una riga con il seguente comando:
/usr/sbin/pppd
Altri particolari vengono definiti nel file /etc/ppp/options:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400
Per chiudere il collegamento, usate la versione predefinita di /usr/lib/ppp/ppp-off.
Dopo aver verificato il funzionamento di questi script, si devono scrivere altri script che eseguiranno le diverse operazioni. Lo script per prelevare la posta è già stato descritto precedentemente, ed assumeremo che si trova nel file /home/dirk/pop.
Uno script per lo scambio della posta può essere messo in /root/mail:
#! /bin/sh
#
# scambia posta elettronica
# 10 minuti di timeout:
TIMEOUT=600
DT=10
# lancia sendmail:
sendmail -q &
# preleva la posta:
su dirk -c /home/dirk/pop
# attendi la fine di sendmail:
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
Lo script per lo scambio delle news può essere messo nel file /usr/lib/news/news:
#!/bin/sh
#
# scambio delle news
# viene eseguita come utente news:
cd /usr/lib/news
#aggiorna il batch di uscita (C News):
/usr/lib/newsbin/input/newsrun < /dev/null
#scambia le news:
/usr/lib/newsbin/newsx acme news.acme.xz
#e svuota il batch in ingresso:
/usr/lib/newsbin/input/newsrun < /dev/null
Adesso manca soltanto uno script per mettere insieme i diversi pezzi, e che può essere messo nel file /root/news+mail:
#!/bin/sh
#
# scambio della posta e delle news
# viene eseguito come utente root
#
if ! /usr/lib/ppp/ppp-on; then
exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15
#scambio della posta e news:
/root/mail &
su news -c ~news/news
wait
#chiude il collegamento
/usr/lib/ppp/ppp-off
#aggiorna il batch in ingresso (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &
exit 0
È abbastanza semplice modificare lo script precedente per attivare la connessione solo quando c'è della posta o delle news da spedire. Supponiamo di chiamarlo /root/news+mail.cond, e teniamo presente che il nome dello spool delle news in uscita deve essere aggiornato di conseguenza:
#!/bin/sh
#
# scambio della posta e delle news, solo se ci sono messaggi in uscita
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
! ( mailq | grep -q "Mail queue is empty"); then
/root/news+mail
fi
L'unica cosa che manca è specificare quando dovrebbe accadere tutto
ciò. Questo viene fatto usando il comando crontab -e
come root
. Assumendo che intendiamo
effettuare sempre lo scambio della posta e delle news alle 07:00 del
mattino, e successivamente ogni 4 ore ma solo se ci sono messaggi da
spedire
00 7 * * * /root/news+mail
00 11,15,19,23 * * * /root/news+mail.cond
Verificate separatamente il corretto funzionamento di ogni componente prima di collegarli insieme. Successivamente potreste aggiungere molte altre operazioni, come per esempio sincronizzare la data e ora (usando ntpdate), l'aggiornamento automatico (mirroring) di file WWW e FTP gestiti localmente verso il vostro Internet Provider (usando make e ftp).
ALTERNATIVA: A seconda delle vostre preferenze, potete
impostare le procedure al contrario. Ogni volta che la connessione PPP
viene attivata, verrà eseguito anche lo script
/etc/ppp/ip-up. E potete
aggiungere in questo script qualunque incantesimo sia necessario per
effettuare lo scambio della posta e delle news. Usate man
pppd
per ulteriori dettagli.
ALTERNATIVA: È anche possibile attivare automaticamente il collegamento PPP ogni volta che viene rilevato traffico di rete. Questa è in molti aspetti la soluzione più elegante, ma dipende molto di una buona configurazione onde evitare frequenti (e costosi) collegamenti. Altre informazioni possono essere trovate a http://www.dna.lth.se/~erics/diald.html.
L'utility diald
è disponibile da
ftp://sunsite.unc.edu/pub/Linux/system/network/serial/diald-0.16.tar.gz.
In questo sito potete anche trovare altre variazioni sul tema dei collegamenti PPP.