Pod Linuxem automatyczna obsługa wysyłania i przyjmowania poczty i nowinek jest całkiem prosta.
Po pierwsze należy utworzyć plik /usr/lib/ppp/ppp-on
odpowiedzialny za zainicjowanie połączenia z prowajderem. Czesto
będzie zawierał tylko tyle:
/usr/sbin/pppd
Kolejne niezbędne informacje należy umieścić w pliku
/etc/ppp/options:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400
Zakończenie połączenia zapewni dostarczona wersja
/usr/lib/ppp/ppp-off.
Aby przetestować funkcjonalność tego rozwiązania należy stworzyć
skrypty odpowiedzialne za wykonanie kilku zadań. Skrypt do porania
poczty został opisany wcześniej, zakładamy, ze znajduje się w katalogu
/home/dirk/pop.
Skrypt do wymiany poczty może być utworzony np. w
/root/mail:
#! /bin/sh
#
# wymień pocztę z dostawcą
# 10 minutes timeout:
TIMEOUT=600
DT=10
# kopnij sendmaila (opróżnia kolejkę listów do wysłania)
sendmail -q &
# pobież pocztę:
su dirk -c /home/dirk/pop
# poczekaj aż sendmail zakończy pracę:
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
Skrypt do wymiany nowinek może być umieszczony np. w
/usr/lib/news/news:
#!/bin/sh
#
# wymień nowinki z prowajderem
# musi byc uruchomiony jako news
cd /usr/lib/news
#uaktualnij kolejkę wychodzącą (C News):
/usr/lib/newsbin/input/newsrun < /dev/null
#wymień nowinki:
/usr/lib/newsbin/newsx acme news.acme.net
#opróżnij kolejkę przychodzących nowinek:
/usr/lib/newsbin/input/newsrun < /dev/null
Skrypt łączący te wszytkie kawałki możne umieścić np. w:
/root/news+mail:
#!/bin/sh
#
# wymień poczte i nowinki z dostawcą
# musi być wykonywany jako root
#
if ! /usr/lib/ppp/ppp-on; then
exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15
#wymien nowinki i pocztę :
/root/mail &
su news -c ~news/news
wait
#rozłącz się
/usr/lib/ppp/ppp-off
#uaktualnij kolejkę nowinek przychodzących (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &
exit 0
Łatwo jest tak zmodyfikować przedstawione skrypty, że połączenie
będzie nawiązywane jedynie wtedy, gdy jakiś list lub artykuł
oczekiwał bedziena wysłanie. Nazwijmy go
/root/news+mail.cond, pamiętając jednak, że trzeba go
dostosować do własnej konfiguracji (nazewnicwa) bufora nowinek:
#!/bin/sh
#
# wymień poczte i nowinki jeśli cokolwiek czeka na wysłanie
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
! ( mailq | grep -q "Mail queue is empty"); then
/root/news+mail
fi
Pozostaje jescze określić kiedy ten skrypt będzie wykonywany.
Skorzystamy z polecenia crontab -e jako użytkownik root
(pamiętamy, ze ten skrypt musi byc wykonywany jako root).
Załózmy, że zawsze chcemy wymieniać pocztę i nowinki po raz pierwszy
o 7 rano i potem co 4 godziny o jest coś do wysłania:
00 7 * * * /root/news+mail
00 11,15,19,23 * * * /root/news+mail.cond
Zanim połączysz wszystkie części razem, upewni się, że każda z nich
działa prawidlowo. Później do tych skryptów można dołączać kolejne,
wykonujące takie zadania, jak synchronizacja zegara (za pomocą
ntpdate) czy automatyczne uaktualnianie stron WWW u prowajdera (za
pomocą FTP),poprawianych na lokalnym komputerze.
ALT: W zależności od upodobań możliwe jest również odwrócenie
całego procesu. Za każdym razem, kiedy zostaje zainicjowane PPP
uruchamiany jest skrypt /etc/ppp/ip-up. Można do niego dodać
uruchamianie innych skryptów obsługujących wymianę poczty i nowinek.
Więcej inforamcji o PPP w podręczniku, patrz man pppd .
ALT: Możliwa jest również taka konfigracja, w której PPP jest uruchamiane automatycznie, w momencie wykrycia próby korzystania z sieci. W wielu przypadkach jest to bardziej eleganckie rozwiązanie, lecz zła konifuracja może spowodować częste (kosztowne) połączenia modemowe. Więcej informacji na ten temat można znaleźć pod adresem:
http://www.cs.toronto.edu/~schenk/diald.html
Program narzędziowy diald jest dostępny:
ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz
Pod powyższym adresem można znleźć inne informacje o połączeniach PPP.