HOWTO : fidonet software for unix
[
index ]
Часть третья.
inn
В настоящее время InterNetNews package (INN)
разрабатывается консорциумом ISC,
URL :
http://www.isc.org/products/INN/.
Здесь я опишу настройку INN версий
2.2.*.
Компиляция
Берем последнюю версию с
ftp://ftp.isc.org/isc/inn/,
например inn-2.2.1.tar.gz (
на момент
написания этого howto последней
версией была 2.2.2, но в ней был
глюк в программе batcher, что
приводило к дупам у линков.
Поэтому я, установив 2.2.2, взял
batcher от 2.2.1), раскручиваем его в
/usr/src/inn-2.2.1 : tar -xzvf inn-2.2.1.tar.gz,
заходим в этот каталог. В
дальнейшем я буду на него
ссылаться как на $INN_SRC. Условимся,
что скомпилированный пакет
будем устанавливать в /usr/local/news/.
Перед началом компиляции
обязательно прочитайте файл
INSTALL, убедитесь что у вас стоит Perl
версии не ниже 5.004. Проверка
версии : смотрим где он там у вас
находится (whereis perl), затем /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 добавляем
MANDATORY_MANPATH /usr/local/news/man
Запустив vipw, проверяем наличие
пользователя news. Домашним
каталогом ему я поставил
/usr/local/news, шеллом - /bin/sh. Это
пригодилось при отладке.
Так как при тоссинге iftoss
вызывает /usr/local/news/bin/rnews, то он
(iftoss) должен иметь
соответствующие права - rnews
принадлежит news:uucp, поэтому надо
будет прописать в /etc/group :
uucp:*:66:fido
В /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
/usr/local/news/log/news.err /usr/local/news/log/news.notice
назначьте владельцем этих
файлов news:news
Перезапустите syslogd : killall -1 syslogd
Переходим в /usr/local/news/etc.
Редактируем inn.conf,
прочитав $INN_SRC/INSTALL и man inn.conf (весьма
желательно !). В простейшем
случае достаточно будет
изменить шесть строчек :
ваш Origin :
organization: My Cool Origin
Адрес вашего сервера. Этот
домен должен быть прописан в DNS.
Если вы не подключены к
интернету, то используйте localhost.
server: news.domain.my
pathhost: news.domain.my
Следующие строчки нужны для того,
чтобы письма, приходящие в "неизвестные"
для inn'а конференции не грохались,
а помещались в ньюсгруппу junk,
откуда потом их будут доставать
всякие autocreate'ы
wanttrash: true
remembertrash: false
Если не ставить флаг -c0 (0 - это
цифра, не буква), то inn будет
отвергать письма, возраст
которых более 14 дней. Флаг -u
отключает буферизацию логов (это
необходимо для ifmail'а).
innflags: -u -c0
Редактируем expire.ctl (необязательно)
:
/remember/:14
Это число регулирует, сколько
дней информация о каждом письме
будет храниться в файле
/usr/local/news/db/history (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
Смысл всех букв и цифр
объясняется в самом начале
expire.ctl. Настраивайте в
зависимости от объема
свободного места на вашем диске.
Имейте в виду, что оно обычно
кончается гораздо быстрее чем
предполагалось ;)
Прочитайте man expire.ctl
Если вы будете
читать почту ньюсридером по
локальной сетке, то надо будет
отредактировать nnrp.access :
admin.localhost:Read Post:admin:mypassword:*
fin.localhost:Read:buh:pwd3:ru.1csoft,ru.accounting
tech.localhost:Read Post:tech:pwd4:su.hardw.*
10.1.0.0/16:Read:::local.official
Здесь прописываете доступ для
машин в локальной сетке - кому r/w,
кому r/o, имя/пароль для
авторизации, и список доступных
ньюсгруп через запятую.
Прочитайте комментарии в файле.
Прочитайте man nnrp.access.
Позже, когда вы запустите inn, то
сможете попробовать зайти с
локальной машины на ньюссервер
телнетом :
$ telnet news.domain.my 119
Если данная машина корректно
прописана в nnrp.access, то появится
что-то вроде :
200 news.domain.my InterNetNews NNRP server INN 2.2.1
25-Aug-1999 ready (posting ok).
или
201 news.domain.my InterNetNews NNRP server INN 2.2.1
25-Aug-1999 ready (no posting).
Если она в nnrp.access не
прописана, то появится :
502 You have no permission to talk. Goodbye.
Теперь редактируем
файл newsfeeds. Это наиболее часто
изменяемый файл из всех конфигов
inn'а, в нем расписано от кого вы
получаете эхи и кому их отдаете.
Сначала прочитайте комментарии
в этом файле, затем можете
подкорректировать секцию ME (я
убрал оттуда все лишнее) :
ME:*,!junk,!control*,!f99.*::
В каком-то FAQ рекомендовалось
прописать "фиктивный" feed.
Пропишите, хуже от этого не будет
:
dummy-feed:!*::
Далее описываем линков. Обратите
внимание на то, что адреса нужно
писать с указанием зоны (z2).
В простейшем случае у вас будут
только фидошные эхи и локалка :
Это наш аплинк
f500.n5058.z2:!*,\
orn.*,\
uplink.local,\
su.os2, \
su.os2.apps,\
f99.local,\
[...]
:Tf,Wfb,B4096/1024:
Это себе, несколько эх на
домашний пойнтовый адрес
p1.f99.n5058.z2:!*,\
f99.local, \
f99.notify, \
orn.naezd, \
ru.unix.bsd, \
:Tf,Wfb,B4096/1024:
А здесь другой пойнт
p2.f99.n5058.z2:!*,\
f99.local,\
f99.notify,\
ru.sex, \
tyt.bce.hacpem, \
[...]
:Tf,Wfb,B4096/1024:
А этот пойнт автоматом подписан
на всё. (убран '!' перед '*')
p3.f99.n5058.z2:\
*,\
:Tf,Wfb,B4096/1024:
А этот feed подписан на все эхи
- он просматривает все сообщения,
ищет адресованные мне и
откладывает их в carboncopy (настройка
описана в Части 4, раздел
carboncopy)
cc:\
!my.cc,\
!uplink.local,\
!junk,\
!f99.local,\
*,\
:Tm:ccmailer
ccmailer:\
!*\
:W*,Tp:/usr/local/news/bin/carboncopies *
Посмотрите на описания флагов
(T,W,B,<,>,C,:) - с их помощью можно
делать много забавных вещей.
Прочитайте man newsfeeds
Переходим в /usr/local/news/db и
создаем базы :
Создаем файл active, для начала
состоящий из двух строчек :
control 0000000000 0000000001 n
junk 0000000000 0000000001 n
в этом файле не должно быть
пустых строк (!)
Создаем файл newsgroups, содержащий
описания конференций (в общем-то
необязательные)
control control
junk badmail
Создаем базу 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
Устанавливаем права на файлы в
/usr/local/news/db :
chown news:news *
chmod 0664 *
Базы готовы.
Произведем пробный запуск inn'а (от
имени пользователя news) :
su news -c /usr/local/news/bin/rc.news
При этом на экране появится
нечто вроде :
Starting innd.
Scheduled start of /usr/local/news/bin/innwatch
А в /usr/local/news/log появится файл
news.notice (если вы его включили в
/etc/syslog.conf) с содержимым типа :
Nov 1 23:08:24 domain.my innd: SERVER
descriptors 520
Nov 1 23:08:24 domain.my innd: SERVER outgoing 507
Nov 1 23:08:24 domain.my innd: SERVER ccsetup
control:11
Nov 1 23:08:24 domain.my innd: SERVER lcsetup
localconn:13
Nov 1 23:08:24 domain.my innd: SERVER rcsetup
remconn:4
Nov 1 23:08:24 domain.my innd: dummy-feed opened
dummy-feed:15:file
Nov 1 23:08:24 domain.my innd: f500.n5058.z2 opened
f500.n5058.z2:16:file
Nov 1 23:08:24 domain.my innd: p1.f99.n5058.z2 opened
p1.f99.n5058.z2:17:file
Nov 1 23:08:24 domain.my innd: p2.f99.n5058.z2 opened
p2.f99.n5058.z2:18:file
Nov 1 23:08:25 domain.my innd: SERVER perl filtering
enabled
Nov 1 23:08:25 domain.my innd: SERVER renumbering
Nov 1 23:08:50 domain.my 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
250 ?? 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
Обычно inn запускают при загрузке
системы из /usr/local/etc/innd.sh :
su news -c /usr/local/news/bin/rc.news
В /usr/local/news создайте файлик news.cron (отредактировав
его, не забывайте запускать crontab
-u news news.cron) с содержимым :
0 3 * * * /usr/local/news/bin/news.daily expireover
lowmark
1,11,21,31,41,51 * * * * /usr/local/news/bin/nntpsend
*/3 * * * * /usr/local/news/bin/rnews -U
Если у вас нет чисто usenet'овских
линков, то строчку с nntpsend можно
выкинуть. Если вы выключаете
компьютер на ночь, проставьте в
первой строчке подходящее время
для запуска. Прочитайте конец
файла $SRC_INN/INSTALL - там все это
описано поподробнее.
В идеале, все ваше
взаимодействие с inn ограничится
добавлением/убавлением линков и
корректировкой их подписки в
файле newsfeeds. Я бы не советовал
делать это руками, лучше
довериться
areafix'у -
по крайней мере, при правильной
настройке вы сможете избежать
грубых технических ошибок. Но
несколько команд для "ручной"
работы я здесь упомяну.
Практически все управление
осуществляется программой
/usr/local/news/bin/ctlinnd (при работающем
innd). Прочитайте man ctlinnd. Перед тем,
как менять какой-либо конфиг (типа
newsfeeds, active) необходимо
приостановить innd командой
"ctlinnd pause причина". В данном
случае "причина" - это слово(слова),
которые попадут в news.notice, и
которые понадобятся для "разморозки"
innd. После изменения
конфигурационных файлов
необходимо их перечитать
командой "ctlinnd reload имя_конфига
причина", например :
# Ставим на паузу
ctlinnd pause Sysop edit active
# редактируем
vi active
# перечитываем конфиг. Если
хотите заставить innd перечитать
ВСЕ конфиги,
# то вместо имени конфига (active)
укажите слово all
ctlinnd reload active Reload after edit
# Снимаем innd с паузы, при этом "причина"
должна быть та же что и при
постановке
ctlinnd go Sysop edit active
Теперь посмотрите лог news.notice.
Там появятся строчки типа :
Feb 30 17:54:22 domain.my innd: SERVER paused Sysop
edit active
Feb 30 17:54:56 domain.my innd: dummy-feed closed
Feb 30 17:54:56 domain.my innd: f500.n5058.z2 closed
Feb 30 17:54:56 domain.my innd: p1.f99.n5058.z2 closed
Feb 30 17:54:56 domain.my innd: dummy-feed opened
dummy-feed:10:file
Feb 30 17:54:56 domain.my innd: f500.n5058.z2 opened
f500.n5058.z2:14:file
Feb 30 17:54:56 domain.my innd: p1.f99.n5058.z2 opened
p1.f99.n5058.z2:15:file
Feb 30 18:07:56 domain.my innd: SERVER reload active Reload
after edit
Feb 30 18:08:05 domain.my innd: SERVER running
Если вы редактируете newsfeeds,
то по окончании редактирования,
перед запуском ctlinnd reload сначала
запустите ctlinnd checkfile - он проверит
синтаксис newsfeeds.
Для ручного добавления новых
конференций, удаления старых
используются команды :
Добавление группы - ctlinnd newgroup имя_группы
флаг, например :
ctlinnd newgroup fido7.su.os2.apps y
ctlinnd newgroup fido7.humor.filtered n
Описание флагов - в man active.
Вкратце : "y" - r/w, "n" - r/o.
Удаление группы :
ctlinnd rmgroup имя_группы
Для автосоздания новых
эхоконференций, падающих обычно
в junk (во всяком случае при
вышеописанной настройке они
должны падать именно туда ;)
используйте программы autocreate'ы,
описанные в Части 4, раздел
autocreate
Более подробно об автоматизации
прозвонки, тоссинга, обработки
файлэх, и прочего рассказано в
Части 5 -
совместная
работа.
Hints :
- Если хотите
поподробнее почитать про inn на
русском, то рекомендую http://www.citforum.ru/internet/common/inn.shtml
- только учтите, что там
описывается процесс
компиляция старой версии inn -
1.7.2, в 2.2.* он несколько
изменился, но что касается
настройки конфигурации -
советую почитать.
- Еще
один вариант конфигурации,
который может оказаться
полезным в довольно типичном
случае (юниксовый сервер и
куча клиентских машин под Windows)
: в своей конфигурации ifmail'а я
вместо перекодировочных
таблиц outaltkoi8 и outkoi8alt использую
таблицы alt-win.tab и win-alt.tab, взятые
из Русского Апача (http://apache.lexa.ru)
и подправленные на предмет
русской "Н". То есть у меня
inn хранит статьи не в koi8-r а в
win-1251. Опять-таки, ни для кого из
фидошных линков это не заметно,
но для локальных
пользователей удобно : не надо
заморачиваться с приручением
ньюсридера к koi8-r путем
подстановки шрифтов/хаканья
бинарников/подкручивании
виндов и т.д., то есть можно
взять любой ньюсридер, который
даже и не знает ничего о
кодировках. В приципе, можно
было использовать cyrproxy
(http://www.lexa.ru/lexa/), но я отказался
от этого по причине неработы в
этом случае прав, заданных в
nnrp.access, да и вариант с заменой
таблиц показался мне как-то
более естественным. При
использовании
перекодировочных таблиц в 1251,
есть две особенности :
- если вы хотите читать ньюсы с
консоли сервера (а зачем ? ;), то
ваша читалка должна будет
понимать win-1251 (или пользуйте
тот же cyrproxy)
- ваши локальные пользователи
должны будут писать нетмейл,
адресованный на фидошные
адреса, тоже в 1251 кодировке. И
приходить он им будет в 1251.
Особых затруднения я в этих
двух случаях не вижу : ньюсы я
читаю с рабочей windows-машины а
не с консоли, а касательно
нетмейла - TheBat! позволяет
выставлять любую русскую
кодировку.
- Если ваш интернет-провайдер
предоставляет вам доступ к
своему ньюс-серверу по nnrp, то
можно совместить доставку и
обработку фидошных
конференций и usenet-ньюсов,
используя специальные
программы, например suck.
Настройка ее описана в Части 4,
раздел suck
This is a part of "HOWTO : fidonet
software for unix", http://howto.id.ru
Original of this document is located at http://howto.id.ru/inn.html
Copyright (c) Vitaly Kuharev, 2:5058/49@fidonet, 1999-2000
Last updated : 14 apr 2000