Скачивание почты и распаковка
Для дозвонки до линков я использую скрипт /etc/ifmail/misc/contrib/ifpoll, в который внес несколько маленьких изменений. Этот скрипт я вызываю каждую ночь из crontab пользователя fnet для прозвонки к моему хабу.
#!/bin/sh # ver 0.7 # ifpoll, скачать почту с узла моего босса или узла, заданного в командной # строке первым аргументом # # Я запускаю этот скрипт каждый день через crond, но вы можете запускать его # ручками :) Запускайте его от имени владельца ifcico # rasca, berlin 1993 (Rasca Gmelch, 2:2410/305.4) #
# где находятся "ifcico" и "ifpack" FIDOPATH=/usr/lib/ifmail
# журнал ifcico IFLOG=/var/log/messages
# владелец "ifcico" IFCICO_OWNER=fnet
# sysop of fido stuff IFCICO_SYSOP=postmaster
# адрес моего босса (адрес по умолчанию) NODE="f33.n125.z1.fidonet.org"
# число попыток дозвона до NODE MaxTry=2
# задержка между исходящими звонками DELAY=10
# куда выдавать содержимое журнала - файл или tty/console INFO_TTY=/dev/tty1
echo "`date \"+%b %d %T\"` ifpoll[$$]: starting"
# напомнит мне, что не надо запускать от root.. # if [ `whoami` != "$IFCICO_OWNER" ]; then echo "*** run $0 as the owner of ifcico ***" echo "`date \"+%b %d %T\"` ifpoll[$$]: wrong uid (rc 2)" exit 2 fi
# argv[1] - возможный узел для звонка # if [ "$1" != "" ]; then if [ "$1" = "-?" ] [ "$1" = "-h" ]; then echo "usage: ifpoll [<node>]" exit 3 else NODE=$1 fi fi
# давайте запакуем пакеты ... # $FIDOPATH/ifpack -f
# повторять пока ifcico не соединиться или MaxTry не достигнет указанной # величины i=1; errlv=1 while let 'i <= MaxTry' && let 'errlv != 0' do echo -n "`date \"+%b %d %T\"` ifpoll[$$]: $i. try ($NODE) " # # запуск ifcico в режиме мастера .. # chmod 664 /dev/ttyS1 $FIDOPATH/ifcico -r1 $NODE errlv=$? if [ $errlv != "0" ]; then echo "failed :( " if [ $i != $MaxTry ]; then sleep $DELAY fi let i=i+1 else echo "ok :)" fi done
# если прозвонились, то распаковываем.. # if [ $errlv = "0" ]; then echo "`date \"+%b %d %T\"` ifpoll[$$]: unpacking.. " $FIDOPATH/ifunpack # добавьте здесь несколько строк для обработки tic-файлов или # пришедших файллистов или еще чего-нибудь.. else # отправить мне почту о неудачном звонке echo "`date \"+%b %d %T\"` ifpoll[$$]: Failed :(" echo "`date \"+%b %d %T\"` ifpoll[$$]: Sending message :(" # Я изменил это, поскольку mailx - стандарт для большинства систем tail --lines=20 $IFLOG | mailx -s "ifpoll: failed" $IFCICO_SYSOP > /dev/null fi
echo "`date \"+%b %d %T\"` ifpoll[$$]: finished (rc $errlv)"
# вернуть код ошибки ifcico exit $errlv
Если запустить этот скрипт без параметров, он автоматически начнет звонить моему аплинку, или вы можете указать параметром узел, на который хотите позвонить (в pfnz-формате, например, ifpoll f26.n9996.z96). Он вначале запакует весь netmail/echomail и позвонит на узел. Затем, после успешного соединения, попытается распаковать прибывшие пакеты. При возникновении сложностей с прозвоном пользователь fnet отправит 20 строк в файл /var/log/syslog, так что вы можете определить причину проблемы (напр., сигнал BUSY, отсутствие ответа, и т.д.). Конечно, скрипт надо отредактировать в соответствии с вашей системой.
Для распаковки пришедшей почты я запускаю вот этот скрипт, называемый ifmailcheck в crontab как пользователь fnet. Он ищет в /var/spool/ifmail/inb ftn эхопакеты и, если они есть, вызывает ifunpack.
#!/bin/sh # ifmailcheck, I call this script every hour # if (test -r /var/spool/ifmail/inbound/*.pkt) then /usr/lib/ifmail/ifunpack fi