Все о Linux. LinuxRSP.Ru
Альт Линукс СПТ 6.0 Сертификат ФСТЭК

Cвежие новости Linux и BSD, анонсы статей и книг прямо в почтовый ящик!
Подписаться письмом


 Сегодняшние новости:

В GIMP наконец-то появилась обработка с точностью 16 и 32 разряда на канал

В одном окне: GIMP 2.8

Релиз OpenBSD 5.1

HTML-редактор: BlueGriffon 1.5

Релиз Xfce 4.10

Команда Chromium представила кластер для автоматизации выявления уязвимостей

В Microsoft Office 15 будет обеспечена поддержка формата ODF 1.2

Анонсирован новый свободный анимационный фильм Tube

Обновление ядра: Linux 3.0.29, 3.2.16, 3.3.3

Представлен OpenSSH 6.0

Релиз графического редактора Pinta 1.2, претендующего на роль аналога Paint.NET

Вышел Firefox 12

Google прекращает поддержку Linux-версии приложения Picasa

Эмулятор приставок: Mednafen 0.9.21-wip

Линус Торвальдс получил премию Millennium Technology Prize 2012

Canonical не заинтересована в участии в разработке ядра Linux

Распределенные вычисления: BOINC 7.0

Google

 Новые статьи :

Передача снапшота ZFS по сети

Правила хорошего тона: SSH

Некоторые рассуждения о защите от ddos на примере защиты от SSL denial of service attack

Быстрый проброс портов на шлюзе во внутреннюю сеть или на другой хост. Быстро NAT'им порты. rinetd.

NAT'им отдельные порты или "а что делать, если мой веб-сервер внезапно переехал на другую машину". Проброс портов в локалке на шлюзе наружу.

Как справляться с запланированной недоступностью веб-сайта

Архитектура Google 2011

Мониторинг Nginx с помощью MRTG

Решение проблем при использовании "1c предприятие" 8.2 в Linux

25 правил .htaccess, которые должен знать каждый web-разработчик

Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula

Краткое руководство по GNOME Shell в Ubuntu 11.10

Advanced Bash-Scripting Guide Искусство программирования на языке сценариев командной оболочки

   Дистрибутивы и атрибутика



DeveloperWorks Россия





Rambler's Top100


 
 

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

      

Связь | О проекте LinuxRSP | Реклама | О Linux
© 1999-2012 LinuxRSP


Реклама: