Прелюдия: В связи с тем, что людей читающих конференции в компании
становится все больше и больше, возникла потребность в построении
сервера новостей с поддержкой локальных групп, которые будут содержать
робочие документы офисного значения, а также желании многих
пользователей читать общедоступные группы конференций. Посему в качестве
сервера был выбрал 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: admin@myserver.mydomain.com
(на всякий случай, если захочется сделать кое-какие группы модерируемыми)
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. Здесь мы выставим права на чтение/постинг
(здесь мы хотим, чтобы пользователи проходили авторизацию, файл
userpasswd создаётся при помощи программы htpasswd /из пакета apache/
htpasswd -c userpasswd -u для первого пользователя, и
htpasswd userspasswd -u для всех последующих)
hosts: "192.168.1.0/24,192.168.3.0/24
(разрешаем только нашим сетям, и никаким другим)
(разрешаем читать/постить локальные группы новостей и группы 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
/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 и пишем туда
ньюсовые группы, которые мы хотим стягивать