Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Next Previous Contents

5. Настройка INN

Во-первых, надо установить INN. Slackware приходит с INN и устанавливает его в /usr/lib/news. Вдобавок, я рекомендую вам заглянуть в (только для Slackware) каталог /usr/lib/news/tools.linux и почитать про особенности установки, скрипты и faq. Также вы можете использовать либо уже собранные исполняемые файлы, либо скомпилированные вами. Я предпочитаю скомпилированные мною и находящиеся в исходниках example-config.data для linux. Я правлю его так, чтобы пути соответствовали установкам моей Slackware (по умолчанию было /use/local/...ick). Советую указать пути в соответствии с вашей системой, или сделайте как я и установите INN в каталог /usr/lib/news.

INN запускается как демон, так что вам не нужен nntp service, определенный в файле inetd.conf . Закомментируйте строку и не забудьте после этого перезапустить inetd выполнив kill -HUP inetd-PID.

Если вы установили INN в первый раз или из исходников, как я, то сделайте несколько изменений в /usr/lib/news и его подкаталогах. Я буду последовательно объяснять настpойку каждого файла:

Во-первых, некоторые маленькие файлы /usr/lib/news/passwd.nntp и /usr/lib/news/nntpsend.ctl должны содержать только комментарии и ничего больше. Вам также нужно создать файлы историй, выполнив скрипт /usr/lib/news/bin/makehistory от пользователя news.

/usr/lib/news/hosts.nntp содержит только следующие строки:

 
 ##  hosts.nntp - names и addresses that feed us news
 ##  Format
 ##      <host>:
 ##      <host>:<password>
 ##  <host> can be a name или IP address; no wildcards.  Any hosts not
 ##  listed here are handed off to nnrpd.
 localhost:
 f710.n125.z1.fidonet.org:
Так только моему компьютеру позволен доступ к моему NNTP-серверу.

/usr/lib/news/nnrp.access должен выглядеть приблизительно так:

 
 ##  nnrp.access - access file for on-campus NNTP sites
 ##  Format:
 ##      <host>:<perm>:<user>:<pass>:<groups>
 ##  Connecting host must be found in this file; the last match found is
 ##  used, so put defaults first.
 ##      <host>          Wildcard name или IP address
 ##      <perm>          R to read; P to post
 ##      <user>          Username for authentication before posting
 ##      <pass>          Password, for same reason
 ##      <groups>        группы новостей patterns that can be read или not read
 ##  To disable posting put a space in the <user> и <pass> fields, since
 ##  there is no way for client to enter one.
 ##
 ## Default is no access, no way to authentication, и no groups.
 *:: -no- : -no- :!*
 ##  Foo, Incorporated, hosts have no password, can read anything.
 *:Read Post:::local.*
 localhost:Read Post:::*
 f710.n125.z1.fidonet.org:Read Post:::*
Так каждый может читать и писать через NNRP (это протокол, по которому каждая читалка новостей общается с сервером новостей) в группы новостей, чьи имена начинаются с local.*. Им не позволено читать и писать в другие группы новостей. На моем компьютере каждый имеет права на чтение и запись в каждую группу новостей.

Далее настраиваем /usr/lib/news/inn.conf примерно так:

 
 ##  inn.conf -- inn configuration data
 ##  Format:
 ##      <parameter>:<whitespace><value>
 ##  Used by various programs и libinn.  The following parameters are defined:
 ##      domain          Local domain, without leading period.
 ##      fromhost        What to put in the From line; default is FQDN
 ##                      of the local host.
 ##      moderatormailer Where to mail moderated postings, if not found
 ##                      in the moderators file; see moderators(5).
 ##      pathhost        What to put in the Path и Xref headers; default
 ##                      is FQDN of the local host.
 ##      organization    If $ORGANIZATION doesn't exist.  What to put in
 ##                      the Organization header if blank.
 ##      server          If $NNTPSERVER doesn't exist.  Local NNTP server
 ##                      host to connect to.
 ##
 ## orginization line will be substituted for your origin line in echomail
 organization:-={OCEAN BEACH BBS....San Francisco, CA}=-
 server:localhost
 fromhost:f710.n125.z1.fidonet.org
Наиболее важный файл конфигурации INN - это /usr/lib/news/newsfeeds, который определяет, какие группы новостей куда отправлять.
 
 ##  newsfeeds - determine where Usenet articles get sent
 ##  Format:
 ##     site[/exclude,exclude...]\
 ##             :pattern,pattern...[/distrib,distrib...]\
 ##             :flag,flag...\
 ##             :param
 ##  Summary of flags:
 ##     <size                Article must be less then size bytes.
 ##     Aitems          Article checks -- d (must have Distribution header)
 ##                     p (don't check for site in Path header).
 ##     Bhigh/low       Internal buffer size before writing to output.
 ##     H[count]        Article must have less then count hops; default is 1.
 ##     Isize           Internal buffer size (if a file feed)
 ##     Nm              Only moderated groups that match the patterns.
 ##     Nu              Only unmoderated groups that match the patterns.
 ##     Ssize           Start spooling if more than size bytes get queued.
 ##     Ttype           Feed types -- f (file) m (funnel; param names the
 ##                     real entry) p (pipe to program) c (send to stdin
 ##                     channel of param's sub-process); x (like c, but
 ##                     handles commands on stdin).
 ##     Witems          What to write -- b (article bytesize) f (full path)
 ##                     g (first newsgroup) m (Message-ID) n (relative
 ##                     path) s (site that fed article) t (time received)
 ##                     * (names of funnel feed-in's или all sites that get
 ##                     the article) N (Newsgroups header) D (Distribution
 ##                     header) H (all headers) O (overview data) R
 ##                     (replication data).
 ##  Param field depends on T flag.  For Tf, relative paths are from the
 ##  out.going directory.  For Tp и Tc, it is a shell command to execute.
 ##  If a Tm refers to this entry (which will have its own T param) then "*"
 ##  is expanded to all the funnel sites that triggered this one.  Useful
 ##  for spawning one mail process, e.g.
 ##
 ##  This file is complicated -- see newsfeeds.5!
 
 # ME указывает, к каким группам новостей должен быть доступ
 
 ME\
        :*,!control,!<local>.*\
        ::
 
 overview\
        :*:Tc.WO:/usr/lib/news/bin/overchan
 #
 # Моя фидошная подписка
 #
 f33.n125.z1.fidonet.org/f33.n125\
        :fido.*,!fido.NET_125,!control*,!junk*,!local*\
        :Tf,Wfb,B16384/1024:
 #
 # My nets admin hub
 #
 f5109.n125.z1.fidonet.org/f5109.n125\
        :fido.NET_125,!fido.*,!local*,!junk*,!control\
        :Tf,Wfb,B16384/1024:
 #
 # Мои подписки в других сетях
 #
 f1.n211.z21.prognet.ftn/f1.n211\
        :prog.*,!fido.*,!local*,!junk*,!control\
        :Tf,Wfb,B16384/1024: 
 
 f60.n9991.z96.surfnet.ftn/f60.n9991\
        :surfnet.*,!prog.*,!fido.*,!local*,!junk*,!control\
        :Tf,Wfb,B16384/1024: 

Затем правим /usr/lib/news/expire.ctl, который определяет, когда содержимое групп новостей устаревает.

 
 ##  expire.ctl - expire control file
 ##  Format:
 ##     /remember/:<keep>
 ##     <patterns>:<modflag>:<keep>:<default>:<purge>
 ##  First line gives history retention; other lines specify expiration
 ##  for newsgroups.  Must have a "*:A:..." line which is the default.
 ##     <patterns>   wildmat-style patterns for the newsgroups
 ##     <modflag>    Pick one of M U A -- modifies pattern to be only
 ##                     moderated, unmoderated, или all groups
 ##     <keep>               Mininum number of days to keep article
 ##     <default>    Default number of days to keep the article
 ##     <purge>              Flush article after this many days
 ##  <keep>, <default>, и <purge> can be floating-point numbers или the
 ##  word "never."  Times are based on when received unless -p is used;
 ##  see expire.8
 
 ##  If article expires before 14 days, we still remember it for 14 days in
 ##  case we get offered it again.  Depending on what you use for the innd
 ##  -c flag и how paranoid you are about old news, you might want to
 ##  make this 28, 30, etc.
 /remember/:30
 
 # Хранить все группы новостей минимум 3, максимум 90 и обычно 5 дней 
 # (с момента прибытия) 
 *:A:3:5:90
 *:U:3:5:90
 # Хранить модерируемые группы новостей дольше
 *:M:5:9:90
 
 # Хранить модерируемые c.o.l.* 1 месяц
 comp.os.linux.*:M:5:30:30
 
 # Хранить fido дольше, чем по умолчанию.
 fido*:A:3:9:90
 
 # Удалять junk очень быстро.
 fido.junk:A:3:4:90
Конечно, вы можете установить все так, как нужно вам. Но вы не должны сокращать время хранения (особенно для Fido) до минимума, так как сообщения идут до вашей системы довольно долго и могут устаpевать немедленно.

Сейчас вам нужно добавить некоторые Fido конференции в ваш файл active. Вы можете сделать это двумя путями, запустить скрипт /usr/lib/news/bin/newgroup или вручную отредактировать файл /usr/lib/news/active. Я растолкую потом. Формат новой группы новостей записи в файле active :

 
 <Areas tag> <10 0's> <9 0's & 1> <y>
 fido.LINUX 0000000000 0000000001 y
 fido.PASCAL 0000000000 0000000001 y
Сейчас копируем файл etc/ifmail/misc/inn/send-ifmail в /usr/lib/news и изменяем владельца на news.news. send-ifmail вызывается периодически из crontab как пользователь news, чтобы поместить отправляемые статьи из /var/spool/news/out.going в /var/spool/ifmail/outb для отправки через ifcico.

Чтобы получить пересылаемые новости, для нее должен быть заведен каталог, который называется /var/spool/news/out.going, с владельцем news.news и правами доступа 775. В отличие от cnews в этом каталоге не должно быть никаких подкаталогов для newsfeeds, так как INN использует только один файл для подписки, который он создает сам. Если вы "апгрейдитесь" с cnews до INN, вы должны удалить существующие каталоги.

Поскольку INN работает с демоном, который всегда запущен, он должен стартовать при загрузке. Добавьте следующее в конце /etc/rc.d/rc.M перед вызовом rc.local:

 
   /usr/lib/news/etc/rc.news &
Для первого испытания INN этот скрипт может быть запущен вручную (как пользователь news). Но помните, что только один innd работает в это время, не запускайте другие программы INN, пока вы работаете под пользователем news.

В некоторых дистрибутивах другой NNTP-демон (nntpd) определен для cnews в /etc/inetd.conf. Тогда innd не может стартовать, так как TCP-порт уже занят. Тогда закомментируйте эту строку и перезапустите inetd командой kill -HUP inetd.PID.

Чтобы заставить INN работать правильно добавьте в crontab пользователя news :

 
 SHELL=/bin/sh
 MAILTO=news
 #=========================================================================
 # INN crontab:
 #=========================================================================
 #
 # Offer spooled news batches to ifnews of outgoing echomail
 #
 30 */3 * * *           /usr/lib/news/send-ifmail f33.n125.z1.fidonet.org
 
 # Send spooled news to uucp uplink
 #
 #35 */3 * * *          /usr/lib/news/send-uucp "uucp-feed-name"
 
 # Run news.daily every morning at 6am
 #
 0 6 * * *              /usr/lib/news/bin/news.daily < dev/null
 
 # offer spooled news (that was spooled into /news/in.coming directory when the
 # innd server wasn't available) again to the innd server.
 #
 13,33,53 * * * *       /usr/lib/news/rnews -U
Каждые три часа пакеты для всех Fido-систем и UUCP-систем пакуются (конечно, без UUCP-соединения вы можете пропустить посленюю часть). Далее производится ежедневная очистка, о чем сообщается через почту. Затем будут обработаны все не отправленные статьи.

Следующая вещь, которую мы сделаем - создание групп новостей. Для этого и для большинства других изменений в системе новостей используется команда ctlinnd. Она вызывается только пользователем news и вы можете найти ее в каталоге /usr/lib/news/bin.

Новые группы новостей создаются командой ctlinnd newgroup fido.LINUX (где fido.LINUX взято в качестве примера). Вы можете использовать различные опции, которые объяснены в мане по ctlinnd(8). вы должны создать группы новостей control, junk и fido.junk, которые содержат сообщения управления (например, cancel), статьи для неизвестных групп новостей и статьи для областей, не определенных в /etc/ifmail/areas.

Чтобы иметь описания групп новостей в читалке новостей, ва вероятно захотите создать файл /usr/lib/news/newsgroups, который содержит имя группы новостей и ее описание (разделенные табуляцией) в каждой строке. Порядок групп не важен, из повторяющихся строк будет отображена только первая.

Так как INN посылает свои log-сообщения через syslog, нам надо сделать такие изменения в /etc/syslog.conf:

 
 news.crit                               /var/log/news/news.crit
 news.err                                /var/log/news/news.err
 news.notice                             /var/log/news/news.notice
Теперь создайте каталог /var/log/news, и перезапустите ваш syslogd.

Для прочей информации по INN, переходе с cnews на INN, проблемами пр. прочтите весьма информативный INN-FAQ и маны.


Next Previous Contents