Настройка узла FIDO

В этом HOWTO описана настройка узла FidoNet на базе FreeBSD
(хотя практически все рекомендации применимы и для любого UNIX'a) с
использованием связки ifmail + sendmail + inn.
Описание состоит из нескольких разделов :
ifmail binkd mgetty sendmail inn filefix areafix

HOWTO : ifmail + sendmail + inn
v1.0, 10 Nov. 1999

1. ifmail
Автор - Евгений Кроссер (Eugene G. Crosser, crosser@average.org,
http://www.average.org/ifmail/
В данном примере будет использоваться версия ifmail'а,
модифицированная Сергеем Оськиным (Serg Oskin, oskin@macomnet.ru,
2:5020/20@fidonet, http://www.macomnet.ru/~oskin/)
Берем оттуда архив ifmail-2.14.os-p7.tar.bz2, разворачиваем его
куда-нибудь в /usr/src/fido/ifmail-2.14. Все дальнейшие пути к файлам,
если не указано иное будем считать от него. Условимся, что весь фидошный
софт будем устанавливать в /usr/local/fidonet/
Перед компиляцией пакета нужно подправить файл CONFIG :
CONFIGFILE = "/usr/local/fidonet/etc/config"
главный файл конфигурации ifmail
DEBUGFILE = "/usr/local/fidonet/log/ifmail.debug"
файл для отладочных сообщений - если какая-то программа из пакета не
работает, то запускаете ее с ключем -x NN, где NN - от 0 до 32, и потом
смотрите этот лог
LOGFILE = "/usr/local/fidonet/log/ifmail.log"
log-файл
LOCKDIR = "/var/spool/lock"
каталог для lock-файлов. Должен совпадать с тем, в котором создают
свои lock-файлы другие программы, работающие с портами (ppp, pppd,
mgetty, др.)
PUBDIR = "/var/spool/uucppublic"
PUBDIR можно оставить тем же - позже в него будем класть файлэхи и
файлы для freq's
NEWSSPOOL = "/usr/local/news/spool"
путь к spool-каталогу inn'a, который будем настраивать позже.
Далее идут опции компиляции. Значение каждой из них описано в
комментариях в CONFIGе. Здесь я приведу свои комментарии только к
нескольким из них.
Дойдя до настройки OPTS=, закоментариваем (стираем) секцию для
Linux'a и раскоментариваем секцию для 386BSD. Она изначально выглядит
так :
# 386BSD:
OPTS= -DHAS_STATFS -DSTATFS_IN_MOUNT_H -DHAS_SETSID -DHAS_NDBM_H \
-DHAS_TERMIOS_H -DASCII_LOCKFILES -DHAS_FSYNC -DHAS_IOCTL_H \
-DHAS_REGEX_H -DHAS_TCP -DHAS_SYSLOG -DNEED_UUCPFROM \
-DNEED_BSY -DNEED_FORK -DNEGATIVE_SEEK_BUG \
-DHAS_SYS_ERRLIST -DHAS_BSD_SIGNALS \
-DINT32=long -DINT16=short \
-DHAS_SELECT \
-DHAS_FILLOG \
-DNO_RECEIVED \
-DNO_FROM \
-DSHOW_SPEED \
-DT_LINE \
-DFTN_MSGID \
-DEXT_FREQ \
-DHAVE_TXY \
-DSECURE_LOG \
-DEMSI_SIZE \
-DRM_SKIP \
-DPKT_PW \
-DLOCALE=\"ru.SU_KOI8-R\"
Добавьте опцию -DDONT_HAVE_GETOPT если у вас не установлена GNU
getopt library (отсутствуют файлы /usr/local/include/getopt.h,
/usr/local/lib/libgnugetopt.*)
Можете добавить опцию -DFORCEINTL, при этом в письмах внутри одной
зоны будет ставиться INTL, например :
@TOPT 30
@INTL 2:5058/99 2:5020/0
@MSGID: 2:5058/99@fidonet 5c2bba89
@RFC-Message-ID: <12428.991029@domain.my>
[...]
Если вы любите читать логи, то опция -DHAS_SYSLOG полезна тем, что
позже в /etc/syslogd.conf можно будет разделить вывод ifcico, iftoss,
ifmail, ifnews, ifpack, ifunpack по разным лог-файлам, например :
/etc/syslogd.conf :
-------------------
!ifcico
*.*/usr/local/fidonet/log/ifcico
!ifmail
*.*/usr/local/fidonet/log/ifmail
!ifnews
*.*/usr/local/fidonet/log/ifnews
!ifunpack
*.*/usr/local/fidonet/log/ifunpack
[...]
-----------------
Опция -DNO_RECEIVED влияет на наличие в письме поля Received:,
например, если не устанавливать ее :
(нетмейл)
@MSGID: 2:5058/99@fidonet a7cd1089
@RFC-Message-ID: <8412.991029@domain.my>
Received: from host1.domain.my (host1.domain.my [10.1.1.1])
by host2.domain.my (8.9.3/8.9.3/vkx1) with ESMTP id JAA00189
for ; Fri, 29 Oct 1999 09:53:57
+0600 (ESS)
[...]
Рекомендую ее не убирать.
Опция -DNO_FROM влияет на наличие в теле письма поля From:, например,
если не устанавливать ее :
(нетмейл)
@MSGID: 2:5058/99@fidonet a7cd1089
@RFC-Message-ID: <8412.991029@domain.my>
From: Cool Sysop 
[...]
(эхомейл)
@MSGID: news.domain.my 60fbfeed
@RFC-Message-ID: <7vb5nm$2ss_002@news.domain.my>
From: fido@domain.my (Cool Sysop)
[...]
Рекомендую ее не убирать.
При установленной опции -DT_LINE, в tearline будет название вашей
почтовой программы (TheBat, PMMail, Eudora, etc.) - для нетмейла, и
название читалки новостей (Forte Agent, NewsXPress, etc.) - для
эхомейла, например :
(нетмейл)
[...]
--- The Bat! (v1.00)
@Via 2:5058/99@fidonet, Wed Oct 27 1999 at 09:28 ifmail
(2.14.os7-vkx1)
(эхомейл)
[...]
--- News Xpress 2.01
* Origin: The one and only (2:5058/99@fidonet)
если эта опция не установлена, то на месте tearline в эхомейле будет
полное название версии ifmail, а в нетмейловом сообщении tearlin'a не
будут вовсе, например :
(нетмейл)
[...]

@Via 2:5058/99@fidonet, Wed Oct 27 1999 at 09:28 ifmail
(2.14.os7-vkx1)
(эхомейл)
[...]
--- ifmail v.2.14.os7-vkx1
* Origin: The one and only (2:5058/99@fidonet)
Если опция -DDENY_BAD_HEADERS не установлена, то куча заголовков из
вашего интернетовского письма попадет в его фидошный образ, например :
(нетмейл)
@MSGID: 2:5058/99@fidonet 2443a844
@RFC-X-Priority: 3 (Normal)
@RFC-Message-ID: <16394.991027@domain.my>
[...]
(эхомейл)
@MSGID: news.domain.my 23585be8
@RFC-Path: news.domain.my!host1
@RFC-Sender: user1@host1.domain.my
@RFC-Distribution: local
@RFC-Message-ID: <7v5qsp$2l8_002@news.domain.my >
@RFC-NNTP-Posting-Host: host1.domain.my
@RFC-X-Trace: host.domain.my 940994266 9561 10.1.1.2 (27 Oct 1999
03:17:46 GMT)
@RFC-X-Complaints-To: newsmaster@domain.my
@RFC-NNTP-Posting-Date: 27 Oct 1999 03:17:46 GMT
[...]
О правомочности обрезания таких заголовков при установке этой опции
написано в misc/FAQ ("Q: How do I get rid of the RFC headers converted
to that silly kludges in the FidoNet messages?"). Так что решайте сами -
резать или нет.
Закончив настройку OPTS =, идем дальше :
BINDIR = /usr/local/fidonet/bin
каталог для бинарных файлов - ifcico, ifmail, iftoss, др.
OWNER = fido
GROUP = fido
владелец и группа для фидософта. Я использую fido:fido.
Закомментируем SHARED=1 и включим SHARED=0 (при SHARED=1 у меня не
получилось собрать ifmail. Впрочем, попробуйте)
Закомментируем LIBS в секции Linux, раскоментируем LIBS в секции
386BSD,FreeBSD и добавим -L/usr/local/lib - если библиотека gdbm лежит
там (/usr/local/lib/libgdbm.*), иначе - поправьте.
соответственно можно подправить :
INCLUDES = -I${INCDIR} -I/usr/local/include
Закомментируем NEEDED = в секции Linux и раскоментируем в секции
SunOS,386BSD,FreeBSD.
Вот, собственно, с CONFIG закончили.
Запускаем make. Если компиляция началась - хорошо. Если же выдалось
что-то типа :
for d in iflib ifgate ifcico; do (cd $d && echo $d && make all) ||
exit; done;
iflib
"Makefile", line 40: Missing dependency operator
"Makefile", line 47: Need an operator
"Makefile", line 54: Need an operator
"Makefile", line 74: Missing dependency operator
"Makefile", line 77: Need an operator
make: fatal errors encountered -- cannot continue
*** Error code 1
Stop.
то значить вам нужен GNU make. Если он у вас не установлен, то можно
в Makefile'ах из каталогов ifcico, ifgate, iflib ручками вычистить
конструкции типа ifeq (1,${SHARED}) / else / endif, оставив части между
else и endif (если мы компилируем без shared libs)
Итак, запускаем gmake (или просто "make" если он GNU-сный)
Все дожно скомпилироваться.
Теперь создаем группу fido в файле /etc/group, например : fido:*:120:
Затем создаем пользователя fido (если посредством vipw, то просто
прописсываем строчку :
fido:*:120:120::0:0:fidonet:/usr/local/fidonet:/bin/sh, заменив UID на
незанятый, а GID на тот, что прописали для группы fido).
У меня на этого пользователя кроме фидошного нетмейла так же идут
отчеты анализаторов статистики, копии отлупов роботов, и т.д. Если
хотите, можете прописать его как алиас другого пользователя в
/etc/aliases.
Создаем директорию /usr/local/fidonet, меняем ее владельца на
fido:fido. Переходим в /usr/local/fidonet и создаем каталоги, запустив
скрипт : su fido -c ./mkdirs.sh
---mkdirs.sh---------
#!/bin/sh
cd /usr/local/fidonet
mkdir bin
mkdir bin/areafix
mkdir bin/filefix
mkdir etc
mkdir etc/areafix
mkdir etc/filefix
mkdir inbound.pro
mkdir inbound.unp
mkdir log
mkdir magic
mkdir man
mkdir man/man3
mkdir man/man8
mkdir nodelist
mkdir outbound
mkdir tmp
mkdir tmp/areafix
mkdir tmp/areafix/queue
mkdir tmp/filefix
mkdir tmp/filefix/queue
mkdir tmp/filefix/bad
mkdir tmp/filefix/tics
---------------------
Возвращаемся в каталог с исходниками ifmail, запускаем "make
install". Бинарники скопируются в /usr/local/fidonet/bin.
Осталось установить man-страницы, конфиги и утилиты. Man-страницы
находятся в каталогах : ifcico (ifcico.8, ifindex.8, ifinfo.8, ifreq.8,
ifroute.8, ifstat.8, nlpatch.8), ifgate (ifmail.8, iftoss.8), и в iflib
(parsedata.3). Распихиваем их в /usr/local/fidonet/man/man8 и
/usr/local/fidonet/man/man3 соответственно, делаем над ними chown
bin:bin и chmod 0444.
Конфиги и утилиты лежат в каталоге misc. Копируем оттуда файлы Areas
и config в /usr/local/fidonet/etc/. Из misc/inouttabs копируем
outaltkoi8 и outkoi8alt в /usr/local/fidonet/etc.
С исходниками все.
Переходим в /usr/local/fidonet/etc. Там у нас пока четыре фйла :
config, Areas, outaltkoi8 и outkoi8alt. Последние два - это
перекодировочные таблицы : фидошные письма приходят в 866 кодировке, а
inn'у скармливаются (и кладутся в news-базу) в koi8-r. Исходящие письма,
наоборот, перекодируются из koi8-r в 866.
Посмотрим, кто владеет портом, на котором находится ваш модем :
$ ls -la /dev/cuaa*
crw-rw---- 1 uucp dialer 28, 128 29 окт 11:38 /dev/cuaa0
crw-rw---- 1 uucp dialer 28, 129 25 окт 00:26 /dev/cuaa1
crw-rw---- 1 uucp dialer 28, 130 23 окт 20:39 /dev/cuaa2
crw-rw---- 1 uucp dialer 28, 131 23 окт 20:39 /dev/cuaa3
Это uucp:dialer. Таким образом, для того, чтобы ifcico могла звонить,
ее владелец (fido) должен входить в группу dialer. Редактируем
/etc/group :dialer:*:68:fido
Hачинаем редактировать config :
logfile и debugfile можно оставить закоментаренными, тогда будут
использоваться значения, заданные в файле CONFIG при копиляции пакета. В
address прописываете ваш адрес и aka. Далее, вместо прописывания паролей
в config, можно написать
include /usr/local/fidonet/etc/passwd,
создать файл passwd, в котором и прописать пароли - так просто
удобнее.
sysalias /usr/local/fidonet/etc/aliases,
Hе забудьте его создать и настроить, как описано в комментариях.
В myfqdn - ваше fqdn ;), в данном примере я буду использовать :
myfqdn domain.my
Прописываем инбаунды :
inbound /usr/local/fidonet/inbound.unp
listinbound /usr/local/fidonet/inbound.unp
protinbound /usr/local/fidonet/inbound.pro
Так как по сути, listed практически не отличается в плате security от
unlisted, то и от тех и от других приходящие файлы будем класть в
inbound.unp.
outbound /usr/local/fidonet/outbound
Outbound для зоны, которой принадлежин ваш основной адрес (обычно -
z2).
magic /usr/local/fidonet/magic
в секции nodelist прописываете имена и пути к ноделисту и пойнтлистам
:
nodelist /usr/local/fidonet/nodelist/nodelist
nodelist pnt5058.ndl 2:5058/0@fidonet
nodelist node99.ndl 2:5058/0@fidonet
при этом не забудьте положить туда эти файлы ;)
domtrans у меня прописан как
domtrans .fidonet .fidonet.org
Идем далее :
database /usr/local/fidonet/ifdbm,
sequencer /usr/local/fidonet/seq,
areas /usr/local/fidonet/etc/Areas.
badgroups - на ваше усмотрение, я их вообще убрал.
Исправляем пути для таблиц перекодировки чтобы они указывали на :
outtab /usr/local/fidonet/etc/outkoi8alt
intab /usr/local/fidonet/etc/outaltkoi8
dots _
received no
bodyfrom no
Исправляем пути для вызываемых программ : sendmail обычно в
/usr/sbin, а rnews в /usr/local/news/bin (когда мы проинсталлируем туда
inn ;), iftoss в /usr/local/fidonet/bin, архиваторы (zip, unzip, др.) -
там, где они у вас лежат, обычно /usr/local/bin.
Hастройки размеров для пакетов я не трогал.
Две строчки :
#newslog /usr/lib/news/log
#msgidbm /tmp/ifmsgids
имеют значение только если у вас в качестве news-сервера не inn а
cnews.
Порт модема :
ModemPort cuaa0:L57600 (для COM2 - cuaa1)
Из строчек ModemDial у вас (в простейшем случае) будет
ModemDial ATDPW \T\r
Hастраиваем phonetrans для вашего города
PhoneTrans 7-3532- /
в options выставляем желаемые опции (Freqs, NoFreqs, etc.)
options NoFreqs
в секции EMSI data прописываем информацию о станции.
С config все.
Теперь надо отредактировать Areas. Там коментарии все понятны,
единственно что надо иметь в виду - это названия эх со спецсимволами -
&, $, др. Для них желательно построить преобразование вида
"$CRACK$.TALKS fido7.cracks.talks fido7", т.е. без спецсимволов.
Таким образом у нас в nodelist должен быть ноделист и пойнтлист, в
etc следующие файлы : aliases, Areas, config, passwd, outaltkoi8,
outkoi8alt.
Теперь проверьте, чтобы владельцем всех этих файлов конфигурации (и
ноделиста с пойнтлистами) были fido:fido. Проверьте существование
каталога (или корректного симлинка) /tmp - если его нет, почта тосситься
не будет.
Перед первым звонком необходимо откомпилировать ноделист, запустив
ifindex. У вас в каталоге nodelist появяться файлики index.dir,
index.pag, а в катологе log - ifmail.debug и ifmail.log.
В /etc/manpath.config добавляем
(для FreeBSD 2.2.6)
MANDATORY_MANPATH /usr/local/fidonet/man
(для FreeBSD 3.3)
OPTIONAL_MANPATH /usr/local/fidonet/man
В процессе настройки, при пробных тоссингах/постингах и т.д.
предварительно сохраняйте пакеты с почтой, во избежание.
О том, как звонить/тоссить/паковать и пр. рассказано в конце главы
INN.
Если требуется чтобы ifcico не только звонила, но и отвечала на
звонки, то желательно предварительно установить программу mgetty. Notes
:
1. Для звонков используется ifcico : /usr/local/fidonet/bin/ifcico -r
1 f99.n5058.z2.fidonet.org, но я использую скрипт ifpoll, взятый из
/usr/src/fido/ifmail-2.14-os7/misc/contrib. Просмотрите его содержимое,
где потребуется поправьте пути и прочее. Скрипт этот довольно
многуфункционален, так что его можно настроить и на автоматическое
накладывание нодедиффов, вызов filefix'а, areafix'а, и всякое такое...
2. Для тоссинга используется ifunpack :
/usr/local/fidonet/bin/ifunpack
3. Так как при тоссинге iftoss вызывает /usr/local/news/bin/rnews, то
он должен иметь соответствующие права. rnews принадлежит news:uucp,
поэтому простейшим решением будет прописать в /etc/group :
uucp:*:66:fido
4. Для упаковки эхоконференций для отправки - ifpack :
/usr/local/fidonet/bin/ifpack, но лучше использовать скрипт send-ifmail
(см. Notes к INN)

2. binkd

Если вы хотите иметь не только модемных линков, но и IP'шных, то
скорее всего понадобится binkd.
Итак, берем с http://www.corbina.ru/~maloff/binkd/ самую свежую
версию binkd, распаковываем в /usr/src/binkd-0.9.2, заходим в этот
каталог. Все дальнейшие пути к файлам, если не указано иное будем
считать от него. Читаем !README, делаем cp mkfls/unix/* . , запускаем sh
configure, потом make. Он должен скомпилироваться.
Копируем binkd в /usr/local/fidonet/bin, binkd.8 в
/usr/local/fidonet/man/man8, а binkd.cfg в /usr/local/fidonet/etc,
меняем владельца на fido:fido.
Hастраиваем этот конфиг. Из существенного я менял :
domain fidonet /usr/local/fidonet/outbound 2
log /usr/local/fidonet/log/binkd.log
pid-file /var/run/binkd.pid
inbound /usr/local/fidonet/inbound.pro
inbound-nonsecure /usr/local/fidonet/inbound.unp
include /usr/local/fidonet/etc/binkd.pwd
В binkd.pwd прописываем линков и пароли к ним, например :
node 2:5020/800 f800.n5020.z2.fidonet.net PWD1 c
node 2:5058/900 10.20.30.40 PWD2 h

3. mgetty

Автор - Gert Doering (gert@greenie.muc.de,
http://alpha.greenie.net/mgetty/)
Скачиваем архив mgetty1.1.21-Jul24.tar.gz, разворачиваем его в,
например, /usr/src/mgetty-1.1.21 и заходим в этот каталог. Все
дальнейшие пути к файлам, если не указано иное будем считать от него.
Почитайте лежащие там инструкции, и можно приступать к установке.
Скопируем policy.h-dist в policy.h, отредактируем policy.h :
DEFAULT_LOGIN_PROGRAM /usr/bin/login
В DEVICE_OWNER и DEVICE_GROUP пропишите владельца портов, на которых
будет сидеть mgetty, т.е.
DEVICE_OWNER uucp
DEVICE_GROUP dialer
MGETTY_PID_FILE : /var/run/mgetty.%s.pid,
LOCK : "/var/spool/lock/LCK..%s"
Каталог lock должно совпадать с LOCKDIR у ifmail'a
MAILER "/usr/sbin/sendmail"
Правильный путь к sendmail'у.
Остальные правки - по вкусу.
Теперь редактируем Makefile. Прочитав комментарии в нем, добавляем в
CFLAGS опции -DBSD -DFIDO, раскоментариваем подходящие для FreeBSD :
LIBS=-lutil
INSTALL=install -c -o root -g wheel
Запускаем make, если все в порядке, то make install
В /usr/local/etc/mgetty+sendfax правим конфиги.
В login.config можете закоментарить строчки с /AutoPPP/ и
/usr/bin/login - если вам не нужны эти сервисы. Строчку для фидо
прописываем так :
/FIDO/ fido fido /usr/local/fidonet/bin/ifcico @
Прописываем запуск mgetty в /etc/ttys, например :
ttyd0 "/usr/libexec/getty std.9600" dialup off insecure
cuaa0 "/usr/local/sbin/mgetty" cons25r on insecure
Так как для ремотного руления станцией я захожу туда терминалкой, то
для нормального запуска midc я прописал тип терминала для cuaa0 как
cons25r.
Сделав man mgetty можно узнать про параметры командной строки для
нее.
Теперь посадим mgetty на cuaa0 : kill -1 1. Проверим, получилось ли :
$ ps -ax | grep mgetty
13849 ?? I 0:00.06 /usr/local/sbin/mgetty cuaa0
23002 p0 S+ 0:00.03 /usr/local/bin/bash -c ps -ax | grep mgetty
23004 p0 R+ 0:00.00 grep mgetty
Судя по первой строчке, mgetty запущен.
Для того, чтобы в лог-файле mgetty (/var/log/mgetty.cuaa0)
регистрировались входящие фидошные звонки, необходимо предоставить
ifcico право на запись в этот лог, изменив группу/права. Как один из
вариантов :
-rw-rw-r-- 1 root fido 1732 29 окт 09:12 mgetty.cuaa0
При входящих звонках mgetty определяет можно ли поднимать трубку по
флагу, заданному в NOLOGIN_FILE в policy.h (по умолчанию -
/etc/nologin.%s, где %s - cuaa0, cuaa1, etc.). Т.е. создавая/удаляя этот
флажок через cron вы управляете mgetty. Hапример :
/etc/crontab :
--------------
5 8 * * 1-6 root touch /etc/nologin.cuaa0
0 23 * * 1-5 root rm /etc/nologin.cuaa0
0 11 * * 6 root rm /etc/nologin.cuaa0
--------------
Если вы монтируете корневой раздел как r/o, то имеет смысл при
компиляции mgetty исправить NOLOGIN_FILE на /var/run/nologin.%s и
работать с флажком как с /var/run/nologin.cuaa0.

4. sendmail

Если у вас уже установлен свежий sendmail и настроен .mc файл, то
переходите к части "Добавление fido", иначе устанавливаем "с нуля".
Берем дистрибутив с http://www.sendmail.org/, например
sendmail.8.9.3.tar.gz, раскручиваем его в /usr/src/mail/sendmail-8.9.3,
заходим в этот каталог. Все дальнейшие пути к файлам, если не указано
иное будем считать от него. Hачинаем конфигурировать :
Переходим в каталог src и читаем README, затем запускаем :
sh ./Build -DNEWDB
Если скрипт отработает нормально, запускаем sh ./Build install
Создание sendmail.cf :
Переходим в /usr/src/mail/sendmail-8.9.3/cf/cf, создаем свой файл
настройки, например MyConfig.mc. У меня он таков :
divert(-1)
#
# [...]
#
divert(0)dnl
VERSIONID(`@(#)MyConfig.mc 1.2 (I am) 23 Oct 1999')
OSTYPE(bsd4.4)dnl
DOMAIN(generic)dnl
FEATURE(use_cw_file)dnl
FEATURE(use_ct_file)dnl
FEATURE(virtusertable)dnl
FEATURE(mailertable)dnl
MAILER(local)dnl
MAILER(smtp)dnl
define(`confPRIVACY_FLAGS',
`authwarnings,noexpn,needmailhelo,novrfy')dnl
define(`confTO_IDENT',`0s')dnl
Вот, это обычный конфиг (без фидо).
Добавление фидо :
Прописываем новый мейлер :
MAILER(fido)dnl
И в конец файла дописываем :
LOCAL_RULE_3
R$+ < @ $+ . fidonet . org > $* $@ $1 < @ $2 . fidonet . org . > $3
(между столбцами - табуляция)
Можете дописать еще несколько вариантов, типа :
R$+ < @ $+ . fidonet > $* $@ $1 < @ $2 . fidonet . org . > $3
R$+ < @ $+ . fido > $* $@ $1 < @ $2 . fidonet . org . > $3
и т.д., но у меня работает и без них.
В /usr/src/mail/sendmail-8.9.3/cf/mailer/ создадим файл fido.m4 с
описанием нового мейлера со следующим содержимым :
PUSHDIVERT(-1)
#
# [...]
#
POPDIVERT
#####################################
### FIDO Mailer specification ###
#####################################
VERSIONID(`@(#)fido.m4 1.0 (I am) 4/29/1999')
Mfido, P=/usr/local/fidonet/bin/ifmail, F=msSDFMuC, S=52/31, R=21,
A=ifmail -r $h $u
Описание всей этой конструкции и смысл флагов смотрите в
/usr/src/mail/sendmail-8.9.3/doc/op/op.me, глава "5.4. M -- Define
Mailer"
Для компиляции MyConfig.mc возвращаемся в
/usr/src/mail/sendmail-8.9.3/cf/cf/ и запускаем :
sh ./Build MyConfig.cf
При успешной компиляции, переименуте MyConfig.cf в sendmail.cf и
положите его в /etc.
Hастраиваем дополнительные файлы sendmail'а :
/etc/mail/relay-domains :
localhost
domain.my
/etc/sendmail.ct :
fido
/etc/sendmail.cw :
localhost
domain.my
Hазначение всех этих файлов читайте в описании sendmail'а
Роутинг почты прописывается в /etc/mailertable :
.n5020.z2.fidonet.org fido:f0.n5020.z2.fidonet.org
# Почту на 5020 роутим через нашего московского аплинка
.n5030.z2.fidonet.org fido:f0.n5030.z2.fidonet.org
# Почту на 5030 роутим через нашего ленинградского аплинка
f56.n5058.z2.fidonet.org fido:f56.n5058.z2.fidonet.org
# Почта на даунлинка - ему на холд
f99.n5058.z2.fidonet.org fido:f99.n5058.z2.fidonet.org
# Почту мне - самому себе
p1.f99.n5058.z2.fidonet.org fido:p1.f99.n5058.z2.fidonet.org
# Почту на пойнта .1 - ему на холд
p2.f99.n5058.z2.fidonet.org fido:p2.f99.n5058.z2.fidonet.org
# Почту на пойнта .2 - ему на холд
.fidonet.org fido:f500.n5058.z2.fidonet.org
# Всю остальную почту роутим через хаба
Hе забывайте перестроить mailertable :
makemap hash /etc/mailertable.db < /etc/mailertable
Перезапустим sendmail :
killall -1 sendmail Notes : Если вы используете не 8.9.3 а 8.10.0, то
:
1. Одно из отличий 8.10.0 от 8.9.3 - это иное расположение файлов
конфигурации. Отныне все они (sendmail.cf, aliases, virtusertable,
access, domaintable, sendmail.cw, sendmail.ct, sendmail.st, sendmail.hf,
etc.) располагаются в /etc/mail/. При этом часть из них сменила имена :
sendmail.cw - local-host-names, sendmail.ct - trusted-users, sendmail.oE
- error-headers, sendmail.hf - helpfile, sendmail.st - statistics, и
т.д.
2. Процесс компиляции практически не отличается от аналогичного для
8.9.3, за исключением : вместо src/ теперь используется sendmail/, т.е.
теперь последовательность компиляции : cd
/usr/src/mail/sendmail-8.10.0beta6/sendmail/ ; sh ./Build ; sh ./Build
install. Если вы не собираетесь использовать новые возможности 8.10.0,
то используйте те же MyConfig.mc и ifmail.m4 (только подкорректируйте
пути).

5. inn

Берем дистрибутив с ftp://ftp.isc.org/isc/inn/, например
inn-2.2.1.tar.gz, раскручиваем его в /usr/src/news/inn-2.2.1, заходим в
этот каталог. Все дальнейшие пути к файлам, если не указано иное будем
считать от него. Hачинаем конфигурировать :
Сначала прочитайте INSTALL, убедитесь что у вас стоит Perl версии не
ниже 5.004 (проверка версии : /usr/bin/perl -v, /usr/local/bin/perl -v).
Читаем ./configure --help, запускаем ./configure с понравившимися
опциями. Я использовал такие : ./configure --enable-tagged-hash
--with-perl. Если все нормально, то make ; make install. Все должно
поставиться в /usr/local/news.
В /etc/manpath.config добавляем
(для FreeBSD 2.2.6)
MANDATORY_MANPATH /usr/local/news/man
(для FreeBSD 3.3)
OPTIONAL_MANPATH /usr/local/news/man
Запустив vipw, проверяем наличие пользователя news. Домашним
каталогом ему я поставил /usr/local/news, шеллом - /bin/sh
Переходим в /usr/local/news/etc.
Редактируем inn.conf, прочитав /usr/src/inn-2.2.1/INSTALL и man
inn.conf (!), например :
organization: My Cool Origin
server: news.domain.my
pathhost: news.domain.my
Этот домен должен быть прописан в вашем DNS.
[...]
wanttrash: true
remembertrash: false
это нужно для того, чтобы письма, приходящие в "неизвестные" для inn
конференции не грохались, а помещались в ньюсгруппу junk, откуда потом
их будут доставать всякие autocreate'ы
innflags: -u -c0
Рекомендуются для корректной работы с fido. Описания этих флагов -
см. man innd.
Редактируем expire.ctl (необязательно) :
/remember/:14
Это число регулирует, сколько дней информация о каждм письме будет
храниться в файле /usr/local/news/db/history - это некий аналог дупобазы
в фидошных эхопроцессорах.
*:A:1:10:never
f99.local:A:never:never:never
orn.*:A:14:90:180
orn.test:A:1:1:1
orn.sysop.pvt:A:never:never:never
fido7.r50.*:A:14:28:42
Первая строчка (с '*') - эначение "по умолчанию", смысл всех букв и
цифр объясняется в самом начале expire.ctl. Hастраивайте в зависимости
от объема свободного места на вашем диске. Имейте в виду, что оно обычно
кончается гораздо быстрее чем предполагалось ;)
Прочитайте man expire.ctl
Если вы будете читать почту ньюсридером по локальной сетке, то надо
будет отредактировать nnrp.access :
admin.localhost:Read Post:admin:mypassword:*
fin.localhost:Read:buh:pwd3:fido7.ru.1csoft
tech.localhost:Read Post:tech:Qk4f75nW:fido7.su.hardw.*
10.1.0.0/16:Read:::fido7.ru.sex
Здесь прописываете доступ для машин в локальной сетке - кому r/w,
кому r/o, имя/пароль для авторизации, и список доступных ньюсгруп через
запятую. Символ '!' перед именем означает исключение, например *,
!comp.*, comp.os.* - разрешены все, кроме comp.*, но comp.os.*
разрешена.
Прочитайте man nnrp.access
Теперь редактируем файл newsfeeds :
Сначала прочитайте комментарии в этом файле, затем подкорректируем
секцию ME :
ME:*,!junk,!control*,!f99.*::
В каком-то FAQ рекомендовалось прописать "фиктивный" feed. Пропишите,
хуже от этого не будет :
dummy-feed:!*::
Далее описываем линков. Обратите внимание на то, что адреса нужно
писать с указанием зоны (z2). В простейшем случае у вас будут только
фидошные эхи и локалка :
f500.n5058.z2:!*,\
fido7.orn.*,\
uplink.local,\
fido7.su.os2, fido7.su.os2.apps,\
f99.local,\
[...]
:Tf,Wfb,B4096/1024:
Это наш аплинк
p1.f99.n5058.z2:!*,\
f99.local, \
f99.notify,\
fido7.orn.naezd,\
:Tf,Wfb,B4096/1024:
Это себе, на домашний пойнтовый адрес.
p2.f99.n5058.z2:!*,\
f99.local,\
f99.notify,\
[...]
:Tf,Wfb,B4096/1024:
А здесь другой пойнт
p3.f99.n5058.z2:\
*,\
:Tf,Wfb,B4096/1024:
А этот пойнт автоматом подписан на все. (убран '!' перед '*'),
[...]
ну и так далее.
Подкорректируйте флаг B4096/1024 если вы не можете выделять так много
памяти. Посмотрите на описания флагов (T,W,B,<,>,C,:) - с их помощью
можно делать много забавных вещей.
Прочитайте man newsfeeds
Переходим в /usr/local/news/db и создаем базы :
1. Создаем файл active, для начала состоящий из двух строчек :
control 0000000000 0000000001 n
junk 0000000000 0000000001 n
в этом файле не должно быть пустых строк (!)
2. Создаем файл newsgoups, содержащий описания конференций (в
общем-то необязательные)
control control messages
junk badmail
3. Создаем базу history :
/usr/local/news/bin/makehistory -i
переименовываем полученные файлы :
mv history.n.dir history.dir
mv history.n.hash history.hash (если он создался)
mv history.n.pag history.pag
4. Устанавливаем права на файлы (мы находимся в /usr/local/news/db) :
chown news:news
chmod 0664 *
Базы готовы.
Запускать innd лучше во время загрузки компьютера, положив innd.sh в
/usr/local/etc/rd.c
innd.sh:
-------
su news -c /usr/local/news/bin/rc.news
-------
Проверьте наличие атрибута exec на innd.sh
Для осуществления ежедневного обслуживания создайте файлик news.tab с
содержимым :
0 3 * * * /usr/local/news/bin/news.daily expireover lowmark
1,11,21,31,41,51 * * * * /usr/local/news/bin/nntpsend
и запустите crontab -u news news.tab
Если у вас нет чисто usenet'овских линков, то строчку с nntpsend
можно выкинуть.
В /etc/syslog.conf разкоментируйте строчки с news., подправьте пути :
news.crit /usr/local/news/log/news.crit
news.err /usr/local/news/log/news.err
news.notice /usr/local/news/log/news.notice
и сделайте :
touch /usr/local/news/log/news.crit
touch /usr/local/news/log/news.err
touch /usr/local/news/log/news.notice
назначьте владельцем этих файлов news:news
Перезапустите syslogd : killall -1 syslogd
Можете запустить innd.sh. При этом на экране появится нечто вроде :
Starting innd.
Scheduled start of /usr/local/news/bin/innwatch
А в /usr/local/news/log появится файл news.notice с содержимым типа :
Nov 1 23:08:24 host innd: SERVER descriptors 520
Nov 1 23:08:24 host innd: SERVER outgoing 507
Nov 1 23:08:24 host innd: SERVER ccsetup control:11
Nov 1 23:08:24 host innd: SERVER lcsetup localconn:13
Nov 1 23:08:24 host innd: SERVER rcsetup remconn:4
Nov 1 23:08:24 host innd: dummy-feed opened dummy-feed:15:file
Nov 1 23:08:24 host innd: f800.n5058.z2 opened f800.n5058.z2:16:file
Nov 1 23:08:24 host innd: p1.f99.n5058.z2 opened
p1.f99.n5058.z2:17:file
Nov 1 23:08:24 host innd: p2.f99.n5058.z2 opened
p2.f99.n5058.z2:18:file
Nov 1 23:08:25 host innd: SERVER perl filtering enabled
Nov 1 23:08:25 host innd: SERVER renumbering
Nov 1 23:08:50 host innd: SERVER starting
В живости innd можно убедиться, запустив ps :
$ ps -ax -Unews
PID TT STAT TIME COMMAND
188 ?? Is 0:28.84 /usr/local/news/bin/innd -p4 -r -u -c0
10923 ?? I 0:00.01 sleep 120
189 con- I 0:00.00 /bin/sh /usr/local/news/bin/rc.news
193 con- I 15:29.37 /bin/sh /usr/local/news/bin/innwatch
Для добавления новых конференций, удаления старых, изменения
конфигурации используется /usr/local/news/bin/ctlinnd (естественно, innd
должен быть запущен).
Прочитайте man ctlinnd.
Основные команды :
Добавление группы :
ctlinnd newgroup имя_группы флаг, например :
ctlinnd newgroup fido7.su.os2.apps y
ctlinnd newgroup fido7.humor.filtered n
Флаги - см. man active, вкратце :
"y" - можно читать/писать,
"n" - только чтение.
Т.е. для вышепреведенного примера : fido7.su.os2.apps можно читать и
писать, fido7.humor.filtered - только чтение для "локальных"
пользователей. "Локальные" - это те, кто читает/пишет с помощью
ньюсридеров (коряво как-то объяснил :(). Причем эти флаги глобальные,
т.е. даже если человеку разрешено в nnrpd.access "Read Post", в группу с
флагом "n" он написать не сможет.
Удаление группы :
ctlinnd rmgroup имя_группы
Приостановка работы сервера :
ctlinnd pause причина
Полезная команда. Перед ручным изменением баз данных (active,
history) надо приостановить сервер.
Снять с паузы сервер :
ctlinnd go причина
"причина" должна совпадать с указанной при ctlinnd pause
Перечитать конфиги :
ctlinnd reload конфиг причина
Для перечитывания всех конфигов вместо имени конфига используйте
"all".
В каталоге /usr/src/fido/ifmail-2.14-os7/misc/inn/ лежит скрипт
send-ifmail. Он используется для упаковки исходящей почты. В нем
необходимо изменить путь к innshellvars :
. /usr/local/news/lib/innshellvars,
корректируем пути к каталогу outgoing в WLIST и LIST :
WLIST=`ls /usr/local/news/spool/outgoing|egrep
"f[0-9]*.n[0-9]*.z[0-9]*.work$"`
LIST=`ls /usr/local/news/spool/outgoing|egrep
"f[0-9]*.n[0-9]*.z[0-9]*$"`
Проверьте наличие ".z[0-9]" - это необходимо.
Смените владельца на news:news, запускайте send-ifmail от
пользователя news. Он проверит, лежат ли на ваших линков какие-либо
письма к отправке, если есть, то он скармливает их ifnews'у, а тот
кладет их в outbound в каталоги с расширением .opk. Для формирования
нормальных фидошных .mo?, .tu?, и т.д. запускайте ifpack (уже от
пользователя fido)
Для автосоздания новых эхоконференций, падающих обычно в junk (во
всяком случае при вышеописанной настройке они должны падать туда ;) я
использую скрипт recover.junk (автор Paul Anderson), находящийся по
адресу : ftp://ftp.isc.org/isc/inn/unoff-contrib/recover.junk.gz.
Разворачивете его, в нем одним куском находятся recover.junk и junk.ctl.
Разделяете их. Редактируем recover.junk :
SPOOLD=/usr/local/news/spool/articles
DBD=$LIBD/db
# Вводим переменную DBD
awk '{ print $1 }' $DBD/active |sort -u >$LOOKUP
Закоментариваем кусок кода сортировки active (у меня он дико похабил
active :()
#cp active oactive
#sort $TMPACT
#if [ -s $TMPACT ] ; then
# cp $TMPACT active && rm $TMPACT && $CTLINND reload active \
# recover.junk create new groups
#fi
Корректируем путь к rnews и имя хоста :
$LIBD/bin/rnews -h news.domain.my -v $file
Запускать его надо из-под news. При запуске он проверяет ньюсгруппу
junk (/usr/local/news/spool/articles/junk), если там есть файлы, то он
берет поле Newsgroups: из заголовка и предлагает создать группу с тем
именем, куда и перенесет это письмо. Если запустить recover.junk с
ключом "-y", то он их будет создавать без вашего подтверждения. Note :
1. В моей к конфигурации ifmail'а файл Areas состоит из трех строчек
:
ORN.SONGS&RHYTHMS orn.songs_rhythms
$CRACK$ crack
* *,
причем первые две здесь - из-за спецсимволов. Т.е. в моем случае все
имена эхоконференций при конвертации в имена ньюсгрупп практически не
меняются. Я не стал преобразовывать их к виду fido7.*, так как куда,
например, девать немецкие фидошные эхи ? Городить иерархию fido.* или
fido.ger.* ? Hафиг, нафиг. Тем более, что фидошные эхи в виде ньюсгрупп
от меня никуда не уходят (пойнтам и даунлинкам они отдаются в нормальном
фидошном виде), а локальным пользователям, читающим ньюсридером по
локалке, написано ли fido7.orn.test или просто orn.test - в общем-то все
равно.
2. Еще один вариант конфигурации, который может оказаться полезным в
довольно типичном случае (юниксовый сервер и куча клиентских машин под
Windows) - в своей конфигурации ifmail'а я вместо перекодировочных
таблиц outaltkoi8 и outkoi8alt использую таблицы alt-win.tab и
win-alt.tab, взятые из Русского Апача и поправленные на предмет русской
"H". То есть inn хранит статьи на сервере не в koi8-r а в win-1251.
Опять-таки, ни для кого из фидошных линков это не видно, но для
локальных пользователей удобно : не надо заморачиваться о приучении
ньюсридера к koi8-r путем подстановки шрифтов/хаканья
бинарников/подкручивании виндов и т.д., можно взять любой ньюсридер,
который даже и не знает ничего о кодировках. В приципе, можно было
использовать cyrproxy, но я отказался от этого по причине неработы в
этом случае прав, заданных в nnrp.access, да и вариант с заменой таблиц
показался мне как-то более естественным. При использовании
перекодировочных таблиц в 1251, есть две особенности :
- если вы хотите читать ньюсы с консоли сервера (а зачем ?), то ваша
читалка должна будет понимать 1251 (или пользуйте тот же cyrproxy)
- ваши локальные пользователи должны будут писать нетмейл,
адресованный на фидошные адреса, тоже в 1251 кодировке.
Особых затруднения я в этих двух случаях не вижу : ньюсы я читаю с
рабочей windows-машины, а касательно нетмейла - TheBat! позволяет
выставлять любую русскую кодировку.

6. filefix
Есть несколько вариантов FileFix'ов, но я остановился на FileFix'е
Сергея Оськина, с модификациями by Alex Mansurov (там кое-что добавлено,
и, что самое основное, описания к файлам храняться в превычном виде, в
files.bbs).
Берем дистрибутив, раскручиваем в /usr/src/fido/filefix-1.8.3,
запускаем make. Ранее, при установке ifmail'а были созданы каталоги
/usr/local/fidonet/bin/filefix, /usr/local/fidonet/etc/filefix и
/usr/local/fidonet/tmp/filefix. Теперь в etc/filefix копируем файлы
config, Areas(.dist), Users(.dist), help.txt, а в bin/filefix - crc32,
alt2koi8, koi82alt, fromdos, areaqueue, filefix.
Если вы будете использовать filefix-plus, то возьмите из его архива
файлы config и filefix и замените ими аналогичные файлы :
etc/filefix/config и bin/filefix/filefix.
Меняем для всех файлов пакета владельца на fido:fido, и начинаем
править config (в основном просто корректируем пути) :
BinDir /usr/local/fidonet/bin/filefix
KoiToAlt /usr/local/fidonet/bin/filefix/koi82alt
AltToKoi /usr/local/fidonet/bin/filefix/alt2koi8
DosToUnix /usr/local/fidonet/bin/filefix/fromdos
Users /usr/local/fidonet/etc/filefix/Users
Areas /usr/local/fidonet/etc/filefix/Areas
IfConfig /usr/local/fidonet/etc/config
Queue /usr/local/fidonet/tmp/filefix/queue
LogFile /usr/local/fidonet/log/filefix.log
LockFile /usr/local/fidonet/tmp/filefix.lock
TicDir /usr/local/fidonet/tmp/filefix/tics
BadTic /usr/local/fidonet/tmp/filefix/bad
BadFile /usr/local/fidonet/tmp/filefix/bad
HelpFile /usr/local/fidonet/etc/filefix/help.txt
MailTo fido@domain.my
ANewsCommand /usr/local/news/bin/inews -h -S
ANewsgroups f99.notify
LastScan /usr/local/fidonet/tmp/filefix/filefix.scan
С config все.
Теперь описания файлэх и линков. Сохраните оригинальные файлы
(Users.dist и Areas.dist) - вам пригодятся комментарии из них. В Areas
оставьте первую секцию (default), остальные можно стереть :
Area default
Desc The new area
Group A
Path /var/spool/uucppublic
Exclude 'files.bbs' '.+\.desc'
Links 2:5058/500 !2:5058/99.1
Newfile /usr/local/fidonet/tmp/filefix/new_files
Mode 644
DupeCheck name
Путь /var/spool/uucppublic - тот же, что и указан в настройках
ifmail'а как путь для freq's. В нем будут создаваться подкаталоги с
файлэхами, типа /var/spool/uucppublic/NODEDIFF, и т.д. Hе ставьте Mode
444, filefix должен иметь права r/w на файлы в файлэхах. Если вы
выписываете r/o файлэхи (NODEDIFF, R50ROUTE, etc.), то для них можно
прописать ReadOnly 1, во избежание.
Правим конфиг Users :
2:5058/500 passwd UpLink * +A
2:5058/99.1 passwd2 Home_Point * +C +!
Переходим в /usr/local/fidonet/bin/filefix, правим сам filefix :
Проверьте правильность указания пути к perl'у (/usr/bin/perl или
/usr/local/bin/perl), подправьте путь к конфигу - $ConfigFile =
"/usr/local/fidonet/etc/filefix/config";
Для тоссинга файлэх запускаем filefix -t (из-под пользователя fido),
при этом файлэхи в inbound.pro обрабатываются и файлы переносятся в
каталог /var/spool/uucppublic/ИМЯ_ФЭХИ/, например :
$ ls -la /var/spool/uucppublic/XORNBOOK
total 433
drwxr-xr-x 2 fido uucp 512 2 ноя 11:02 .
drwxrwxrwx 13 uucp uucp 512 2 ноя 11:02 ..
-rw-r--r-- 1 fido uucp 12743 2 ноя 11:02 medic.dos
-rw-r--r-- 1 fido uucp 17 2 ноя 11:02 medic.dos.desc
-rw-r--r-- 1 fido uucp 413769 2 ноя 11:02 setup3.exe
-rw-r--r-- 1 fido uucp 18 2 ноя 11:02 setup3.exe.desc
Сразу после тоссинга можно запустить filefix -s, при этом те файлы, у
которых есть "файлы-спутники" с расширением .desc заворачиваются на
даунлинков (если они есть), и их описания перемещаются в files.bbs :
$ ls -la /var/spool/uucppublic/XORNBOOK
total 432
drwxr-xr-x 2 fido uucp 512 2 ноя 11:09 .
drwxrwxrwx 13 uucp uucp 512 2 ноя 11:02 ..
-rw-r--r-- 1 fido uucp 75 2 ноя 11:09 files.bbs
-rw-r--r-- 1 fido uucp 12743 2 ноя 11:02 medic.dos
-rw-r--r-- 1 fido uucp 413769 2 ноя 11:02 setup3.exe
Анонсы о новых файлэхах и файлах в них постятся в заданную эху
(f99.notify)
Если вы раздаете файлэхи дальше, то, возможно, вам (вернее вашим
даунлинкам) понадобится управлять подпиской через робота FileFix. Для
этого редактируем /etc/aliases, прописывая :
filefix:"|/usr/local/fidonet/bin/filefix/areaqueue
/usr/local/fidonet/tmp/filefix/queue", fido
Здесь filefix - имя, на которое будут адресовать письма ваши
даунлинки, areaqueue - маленькая програмка, цель которой полученное
письмо положить в каталог /usr/local/fidonet/tmp/filefix/queue, а ",
fido" - это если вы хотите читать, что пишут вашему роботу ;)
Hе забывайте после изменения /etc/aliases запускать newaliases.
areaqueue у меня принадлежит fido:fido с правами 6555:
-r-sr-sr-x 1 fido fido 8192 1 ноя 16:43 areaqueue
Для проверки работоспособности areaqueue пишем письмо на имя filefix
(в простейшем случае :
$ mail filefix
Subject: test
test
.
EOT)
Если в /usr/local/fidonet/tmp/filefix/queue у вас появился файлик с
этим содержимым - значит все работает. Если же в /var/log/maillog
появляются сообщения от sendmail'а типа : DSN: unknown mailer error 126,
DSN: unknown mailer error 2 - значит вы сделали что-то не так.
Для обработки писем, пришедших к вашему FileFix'у (и перенесенных
areaqueue в /usr/local/fidonet/tmp/filefix/queue) запускайте filefix -m.
Для тестирования, пропишем нового пользователя в etc/filefix/Users,
например:
2:5058/99.2 PASSWORD Test_User *
А в /usr/local/fidonet/tmp/filefix/queue положим файлик с с
содержанием :
$ cat 9911939901337
To: filefix 
From: Test_Point 
Subject: PASSWORD

%HELP
%LIST
Здесь в строчке с To: пишем имя робота и ваш адрес, в строчке с From:
- адрес того фиктивного пойнта, что вы прописали в etc/filefix/Users, в
строчке с Subject: - пароль, далее - команды (%HELP, %LIST, +area,
etc.). Запустив filefix -m, смотрим лог-файл. Если там строчки вида :
Nov 2 11:28:08 filefix(mgr)[28949] Read config ok.
Nov 2 11:28:09 filefix(mgr)[28949] Read Users Ok.
Nov 2 11:28:09 filefix(mgr)[28949] Read Areas Ok.
Nov 2 11:28:09 filefix(mgr)[28949] Reply to 2:5058/99.2...
Nov 2 11:28:09 filefix(mgr)[28949] Processing %HELP...
Nov 2 11:28:09 filefix(mgr)[28949] Processing %LIST...
а на этого пойнта отложилось письмо со справкой и списком файлэх - то
все в порядке ;) Note :
1. Если вы используете filefix-plus, то при пробных запусках лучше
закомментарить строчки
#open (STDERR, ">>/dev/null");
#open (STDOUT, ">>/dev/null");
тогда вам будет видна диагностика filefix'а и perl'а в случае ошибок.
2. Если выдаются ошибки типа
Can't locate /usr/share/perl/errno.ph in @INC (did you run h2ph?)
(@INC contains: /usr/libdata/perl/5.00503/mach /usr/libdata/perl/5.00503
/usr/local/lib/perl5/site_perl/5.005/i386-freebsd
/usr/local/lib/perl5/site_perl/5.005 .) at ./filefix line 117.
то попробуйте последовать его совету и запустить h2ph. Прочитайте man
h2ph, перейдите в /usr/include и запустите h2ph -r -l -d/usr/share/perl
. (FreeBSD 3.3)

7. areafix

Есть довольно много AreaFix'ов, но у меня стоит areafix-0.5.07 by Yar
Tikhiy (2:5020/118@fidonet, yar@comp.chem.msu.su) из дистрибутива ifmail
(/usr/src/fido/ifmail-2.14-os7/misc/contrib/areafix-0.5.07). Прочитав
README можно скомпилировать areaqueue.c, но т.к. это почти 1:1 совпадает
с areaqueue из FileFix'a, я не стал этого делать и в дальнейшем
использовал areaqueue оттуда. Редактируем /etc/aliases, прописывая :
areafix:"|/usr/local/fidonet/bin/filefix/areaqueue
/usr/local/fidonet/tmp/areafix/queue", fido
areafix-service: fido
Обратите внимание - первая строчка почти совпадает с аналогичной для
FileFix'а, только другоей алиас и каталог - не filefix/queue, а
areafix/queue. Hе перепутайте ;). Hе забывайте после изменения
/etc/aliases запускать newaliases.
Копируем areafix.pl в /usr/local/fidonet/bin/areafix/, а config,
help, passwords, restricted и uplinks - в
/usr/local/fidonet/etc/areafix/. Меняем владельца этих файлов на
fido:fido. Hачинаем настройку в config :
корректируем имя сисопа и адрес. Если хотите чтобы ваши даунлинки
использовали через вас транзитную подписку, то пропишите адрес вашего
основного аплинка, название его site-записи в newsfeeds inn'а и пароль к
его areafix'у :
UpLink_Address f400.n5020.z2.fidonet.org
Uplink_Site f400.n5020.z2
UpLink_Password SUPERPASSWORD
(!) Обратите внимание, что Uplink_Site должен содержать имя зоны.
Далее правим пути :
Queue /usr/local/fidonet/tmp/areafix/queue
PasswdFile /usr/local/fidonet/etc/areafix/passwords
UplinkFile /usr/local/fidonet/etc/areafix/uplinks
HelpFile /usr/local/fidonet/etc/areafix/help
NewsFeeds /usr/local/news/etc/newsfeeds
Passive_NewsFeeds /usr/local/news/etc/newsfeeds.passive
OutNewsFeeds /usr/local/news/etc/newsfeeds
NewsGroups /usr/local/news/db/newsgroups
Active /usr/local/news/db/active
Echo2News /usr/local/fidonet/etc/ifmail.areas
RestEcho /usr/local/fidonet/etc/areafix/restricted
MailCommand |/usr/sbin/sendmail -t
ReloadCommand /usr/local/news/bin/ctlinnd reload newsfeeds Areafix
request
Обратите внимание, Areafix request - без кавычек.
RmGroup /usr/local/news/bin/ctlinnd rmgroup %g
Semaphore /usr/local/fidonet/tmp/areafix.semaphore
NewsLockDir /usr/local/news/run
Так как GUP3W я не устанавливал, то каталог задал произвольно.
LogLevel 5
Forward No
XlateCommand - на ваше усмотрение. Открывает широкие просторы для
баловства ;)
С config все. Теперь прописываем линков в файл passwords :
p1.f99.n5058.z2.fidonet.org:p1.f99.n5058.z2:HOMEpassword
p2.f99.n5058.z2.fidonet.org:p2.f99.n5058.z2:point2
p3.f99.n5058.z2.fidonet.org:p3.f99.n5058.z2:point3
(!) Обратите внимание, что третье поле должно содержать имя зоны.
Файл uplinks я не использую.
В файле restricted прочитайте комментарий - там все понятно.
В areafix.pl исправляем путь к файлу конфигурации :
$CONFIGFILE="/usr/local/fidonet/etc/areafix/config";
Пробуем запустить areafix.pl
Если появились сообщения об ошибках, то есть три варианта :
1. Сделайте что он там хочет (см. Notes к filefix'у);
2. Попробуйте взять более свежие areafix'ы из дистрибутива ifmail
2.15;
Я воспользовался третьим вариантом - подправил areafix.pl на предмет
использования файла лог-файла areafix.log вместо работы через syslog
Можете проверить работу areafix'а аналогично тому, как это было
сделано для filefix'а. Вот и все. Самая свежая версия этого HOWTO
находится на http://howto.id.ru/.
Vitaly Kuharev, vkx@id.ru, 2:5058/49@fidonet