리눅스에서 뉴스와 전자우편을 자동으로 처리하는 것을 구현하는 것은 매우 쉽다.
먼저 무엇보다 ISP로의 연결을 초기화해 주는
/usr/lib/ppp/ppp-on
을 만들어야 한다. 보통, 이 파일은
간단히 다음과 같은 것을 담고 있다:
/usr/sbin/pppd
더 자세한 설정은 /etc/ppp/options
에서 수행된다:
connect "/usr/lib/ppp/chat -v -f /etc/ppp/chatscript"
crtscts
modem
defaultroute
asyncmap 00000000
user dirk
/dev/modem 38400
연결을 끝내기 위해서, /usr/lib/ppp/ppp-off
가 들어있는
버전을 사용하면 된다.
이 두 스크립트의 기능을 시험하고 나면, 여러 작업을 수행하는
스크립트를 작성해야 한다. 이 스크립트는 앞에서 설명한 메일들을
가져오는 일을 한다, 그리고 이것이 /home/dirk/pop
에 있다는
것을 가정한다.
메일을 주고받기 위한 스크립트는 /root/mail
에 생성된다:
#! /bin/sh
#
# exchange mail
# 10 minutes timeout:
TIMEOUT=600
DT=10
# kick sendmail:
sendmail -q &
# retrieve mail:
su dirk -c /home/dirk/pop
# wait for sendmail to terminate:
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
뉴스를 주고받기 위한 스크립트는 /usr/lib/news/news
에 위치한다:
#!/bin/sh
#
# exchange news
# must be run as news:
cd /usr/lib/news
#update the outgoing batch (C News):
/usr/lib/newsbin/input/newsrun < /dev/null
#exchange news:
/usr/lib/newsbin/newsx acme news.acme.net
#and flush the incoming batch:
/usr/lib/newsbin/input/newsrun < /dev/null
A script to connect the various bits and pieces remains, and can
be placed in /root/news+mail
:
#!/bin/sh
#
# exchange news and email
# must be run as root
#
if ! /usr/lib/ppp/ppp-on; then
exit 1
fi
trap "/usr/lib/ppp/ppp-off" 1 2 3 15
#exchange news+mail:
/root/mail &
su news -c ~news/news
wait
#disconnect..
/usr/lib/ppp/ppp-off
#update the incoming batch (C News):
su news -c /usr/lib/newsbin/input/newsrun < /dev/null &
exit 0
외부로 나갈 메일이나 뉴스가 있는 경우 접속하도록 확장하는 것은
매우 쉽다. 이것을 /root/news+mail
라 하자, 그리고 외부로
나갈 뉴스-스풀의 이름이 알맞게 갱신되어야 한다는 것을 새겨둔다:
#!/bin/sh
#
# exchange news and email, only if outgoing news or mail
# (C News spool)
if [ -s /var/spool/news/out.going/acme/togo ] ||
! ( mailq | grep -q "Mail queue is empty"); then
/root/news+mail
fi
이제 남은 것은 언제 내보내야 할지 정하는 일 뿐이다. 이것은 root로
crontab -e
명령어로 수행된다. 우리는 항상 뉴스와 메일을 아침
07:00 에 주고받고, 외부로 나가는 메일과 뉴스를 매 네시간 마다
내보낸다고 가정하자.
00 7 * * * /root/news+mail
00 11,15,19,23 * * * /root/news+mail.cond
각각의 부분들을 같이 연결하기 전에 충분히 시험해볼 것을 권한다.
나중에 다른 일들을 첨가할 수도 있다. 예를 들어 시간을 맞춘다던가
(ntpdate 를 이용), 로컬로 운영되는 WWW의 자동적인 갱신(미러링),
그리고 FTP 파일을 ISP로 업하는 것(make와 ftp를 이용) 등이 있다.
대안: 취향에 따라서, 프로세스가 엉망이 될 수도 있다.
PPP 링크가 초기화 될때마다, /etc/ppp/ip-up
스크립트가 시작된다.
여기에 전자우편과 뉴스를 주고받기 위해 필요한 어떠한 magic이든
추가시킬 수 있다. 자세한 사항은 man pppd
를 참조하기 바란다.
대안: 네트웍 트래픽 요구가 감지되었을 때마다 자동으로 PPP 접속을 할 수도 있다. 여기에는 많은 정밀한 방법들이 있지만, 자주 접속이 이루어지는 것을 막기 위해서 좋은 설정에 크게 의존한다. 더 많은 정보는 여기서 구할 수 있다:
http://www.cs.toronto.edu/~schenk/diald.html
diald
유틸리티는 여기서 구할 수 있다:
ftp://sunsite.unc.edu/pub/Linux/system/Network/serial/diald-0.13.tar.gz
역시 그곳에서 다른 다양한 PPP 접속 방법을 발견하게 될 것이다.