Ключевые слова:inn, freebsd, usenet, news, howto, (найти похожие документы)
From: alexch <alexch at alexch.com.ua>
Newsgroups: email
Date: Mon, 30 Apr 2004 14:31:37 +0000 (UTC)
Subject: Создание сервера новостей (Inn+Newsx), настройка фидинга
Прелюдия: В связи с тем, что людей читающих конференции в компании
становится все больше и больше, возникла потребность в построении
сервера новостей с поддержкой локальных групп, которые будут содержать
робочие документы офисного значения, а также желании многих
пользователей читать общедоступные группы конференций. Посему в качестве
сервера был выбрал Inn. Leafnode не имеет смысла ставить пока не вышла
его вторая версия, которая кроме фидинга новостей с сервера провайдера,
будет поддерживать и локальные группы. Ну значит так тому и быть.
Используем:
FreeBSD 4.8
Inn 2.4.0
Newsx 1.6
Инсталяция Inn
--------------
Инсталим стандартно, из портов
cd /usr/ports/news/inn
make
make install
make clean
Конфигурирование
----------------
inn.conf
--------
Далее идем в директорию /usr/local/news/etc и находим основной файл
конфигурации inn.conf, используем дифолтные настройки, но кое-где
вставляем свои.
organization: "My organization"
ovmethod: tradindexed
server: myserver.mydomain.com
artcutoff: 365
(статьи, возраст которых больше 365 дней будут удалены сервером)
bindaddress: all
(биндимся на внешний и внутренный интерфейс)
sourceaddress: any
(читаем man inn.conf)
fromhost: myserver.mydomain.com
moderatormailer: [email protected]
(на всякий случай, если захочется сделать кое-какие группы модерируемыми)
status: 600
(запись текущего состояния inn'а в файл inn_status.html каждые 600 секунд)
timer: 600
(запись текущей производительности inn'а в лог news.notice каждые 600 секунд.
По этим записям innreport может строить занятную статистику)
в секции Path я задал директорию /usr/local/news как корневую для
директорий run, spool etc, tmp и тд, просто мне так больше нравится,
пускай всё будет в одном месте.
Записываем, выходим.
storage.conf
------------
Далее нас интересует файл storage.conf. Там мы задаём метод хранения статей
method timehash {
newsgroups: *
class: 0
}
expire.ctl
----------
Еще один интересный файл expire.ctl. Если мы не хотим чтобы наш сервер
забился старыми и ненужными статьями, следовательно нам нужно выставить
время жизни статей, это делается здесь
/remember/:365
infoagency.*:A:1:90:never
(статьи локальных групп мы храним 90 дней, поскольку далее их
актуальность для работы компании утрачивается)
comp.*:A:365:365:365
elvisti.*:A:365:365:365
fido7.*:A:365:365:365
mailing.*:A:365:365:365
microsoft.*:A:365:365:365
news.*:A:365:365:365
ukr.finance:A:365:365:365
ukr.law:A:365:365:365
ukr.nodes:A:30:30:30
(статьи ньюсовых групп, которые мы стягиваем у провайдера будем хранить год)
readers.conf
------------
Следующий файл readers.conf. Здесь мы выставим права на чтение/постинг
auth "localhost" {
hosts: "localhost, 127.0.0.1, stdin"
default: "<localhost>"
}
access "localhost" {
users: "<localhost>"
newsgroups: "*"
access: RPA
}
auth office {
auth: "ckpasswd -f /usr/local/news/etc/userpasswd"
(здесь мы хотим, чтобы пользователи проходили авторизацию, файл
userpasswd создаётся при помощи программы htpasswd /из пакета apache/
htpasswd -c userpasswd -u для первого пользователя, и
htpasswd userspasswd -u для всех последующих)
hosts: "192.168.1.0/24,192.168.3.0/24
(разрешаем только нашим сетям, и никаким другим)
default: "<LOCAL-USERS>"
}
Пример более навороченного конфига
auth default {
auth: "ckpasswd -f /usr/local/news/etc/userpasswd"
hosts: "192.168.1.0/24,192.168.3.0/24,127.0.0.1"
default: <public>
default-domain: mydomain.com
}
access "infoagency" {
read: "gc.infoagency.*,ukr.*"
post: "ukr.*,gc.infoagency.*"
}
(разрешаем читать/постить локальные группы новостей и группы ukr.*
только тем, кто пройдет авторизацию)
access public {
users: "<public>@*"
newsgroups: "*,!infoagency.*,!fido7.ru.unix.*,!fido7.ru.windows.*,!control*,!junk"
}
(пользователи для которых в клиенте не будет настроена авторизация,
будут доступны все остальные группы кроме тех, что мы укажем после знака
"!")
access "admin" {
users: "alexch@*,sha@*"
newsgroups: *
}
(владельцы компьютеров alexch и sha могут читать/постить во все группы)
syslog.conf
-----------
Далее нам нужно чтобы система писала логи, для чего открываем файл syslog.conf.
Находим строчки которые касаются ньюсов, раскоментариваем их,
подправляем пути к лог-файлам, записываем, выходим. Идем в
/usr/local/news/log, создаем нужные лог-файлы, не забываем о том, что
владельцем файлов должен быть юзер news
touch news news.err news.crit news.notice
chown news:news *
killall -1 syslogd
Подготовка к запуску
--------------------
Для полной уверенности можно сделать
/usr/local/news/bin/inncheck
смотрим, и поправляем если что-то не так. Еще раз запускаем, и если все
ОК, тогда запускам наш ньюс-сервер.
Запуск Inn
----------
/usr/local/etc/rc.d/innd.sh start
убедимся, что он висит на 119 порту, делаем
sockstat -4 | grep inn
должна быть строчка вида:
news innd 843 4 tcp4 *:119 *:*
если этого не наблюдается-смотреть ньюсовые логи, там обязательно чтото
будет на тему не старта
Создание/удаление групп
-----------------------
Это естественно, что проводить операции с группами можно только при
работающим Inn :-).
/usr/loca/news/bin/ctlinnd newgroup infoagency.1
/usr/loca/news/bin/ctlinnd newgroup infoagency.2
(создаем локальные группы)
/usr/loca/news/bin/ctlinnd newgroup fido7.ru.unix.bsd
(и группы в которые будут сваливаться ньюсы, которые мы будет тянуть у провайдера)
удалить группу можно командой ctlinnd rmgroup
man ctlinnd узнаете много интересных возможностей
/usr/local/news/bin/ctlinnd rmgroup infoagency.1
вообщето, чтоб каждый раз не набирать /usr/loca/news/bin внесём эту
строку в path конф-файла нашего шелла.
Для еще одной проверки можно сделать телнет на 119 порт
telnet news.mydomain.com 119
Trying 192.168.1.2...
Connected to myserver.mydomain.com.
Escape character is '^]'.
200 news.mydomain.com InterNetNews NNRP server INN 2.4.0 ready list active
infoagency.1 0000000000 0000000001 y
infoagency.2 0000000000 0000000001 y
fido7.ru.unix.bsd 0000000000 0000000001 y
группы видны, теперь осталось настроить клиента, который будет
читать/постить согласно прав которые мы дали в readers.conf
Feeding ньюсов
--------------
Инсталяция newsx
стягивать ньюсы с сервера провайдера будем этой программой. Как обычно из портов
cd /usr/ports/news/newsx
make
make install
make clean
newfeeds.conf
-------------
открываем файл, ищем секцию которая начинается на ME и пишем туда
ньюсовые группы, которые мы хотим стягивать
ME:::
news.svitonline.com/newsx\
:comp.databases.postgresql.admin,\
comp.databases.postgresql.general,\
comp.databases.postgresql.hackers,\
comp.databases.postgresql.novice,\
comp.databases.postgresql.sql,\
elvisti.info.astrology,\
fido7.crack,\
fido7.crack.talks,\
fido7.ru.1csoft,\
fido7.ru.baby, \
fido7.ru.cats,\
fido7.ru.f1csoft*,\
fido7.ru.internet,\
fido7.ru.internet.security,\
!junk*,!control*\
:Tf,Wnm:
естественно, что эти группы уже должны быть созданы. news.svitonline.com
- это сервер с которого я таскаю. Обязательно делаем stop/start сервера.
Собстевенно сам фидинг
----------------------
Теперь, когда мы определились, какие именно группы тянуть, попробуем
стянуть с включенным дебагом
newsx -ddddd --maxart 100 news.svitonline.com news.svitonline.com
если все прошло успешно, тогда запостим эти статьи в наши группы
rnews -U
статью которую мы написали в группу elvisti.info.astrology теперь нужно
отправить на сервер провайдера, для этого делаем
newsx news.svitonline.com news.svitonline.com
Теперь можно все это поместить в crontab для юзера news. У меня работает
через каждых 2 минуты.
Можно также попробавать настроить фидинг при помощи innfeed (тогда по
крону не нужно запускать), но мне было лень :-).
Все настроил четко. Постить на сервер могу, но читать с него - нет.
Как настроить сервер, чтоб пользователи локальной сети могли читать статьи? В каком формате должны быть статьи?
Я по статье http://www.opennet.me/base/net/inn_newsx_setup.txt.html Пробовал уже по разному настроить inn, даже с suck. Сам inn работает нормально, клиенты новости и конверенции получают,
видят. Но вот не могу забирать новости от news сервера с помощью newsx. Выводится сообщение об ошибке - файл спула не найден. А если создать файл спутла принудительно - все равно пишет, что нет ответа от сервера новостей.
Теперь понял в чем было дело.
Нужно было прописать так:
news.wnet.ua/news-in.wnet.ua,news-out.wnet.ua,news.wnet.ua\
далее перечислить конверенции как обычно..
И вызывать команду newsx news.wnet.ua news.wnet.ua только от
пользователя news!! Иначе каждый раз файл спула удаляется и выводится
сообщение об ошибке.
Пиплы, не могу разобраться с получением, отправкой групп на другой сервер. Последнии версии INN умеют и получать и отправлять? Я пытаюсь заюзать newsx, но понему так мало инфы.. Допустим мне надо собирать с сервера news.ru всю группу sochi.* и постить туда же. Требуется авторизация. Может кто-нибудь п ример показать?