Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2023.10.01
Bog BOS: nntpcache: кеширование новостей USENET (NNTP)
Каждый кто пробовал установить такой
сервер новостей (NNTP, USENET) как, например,
INN, обязательно сталкивался с проблемой чрезмерной
загрузки канала. Например, полный поток с основного российского news-сервера
gamma.ru составляет более 100 GB в день!
Вы готовы оплачивать канал 10 Mb/sec полностью занятый под перекачку
новостей, 99.99% которых никем и никогда не будут востребованы?
В то же время жестко ограничивать список доступных новостных групп
нежелательно. Выходом является установка кеширующего прокси-сервера
между клиентским компьютером и "настоящим" NNTP-сервером. Одним из таких
прокси-серверов является nntpcache (смотри также NewsCache и Leafnode
в обзорной статье о USENET).
nntpcache взаимодействует с клиентскими программами чтения новостей как
сервер NNRP, преобразует запросы клиентов и выступает от их имени при
взаимодействии со старшим NNTP-сервером. Таким образом, с точки зрения
клиентов nntpcache выступает как NNTP (NNRP) сервер,
а с точки зрения вышестоящего сервера как NNTP (NNRP) клиент, только
с разнообразными интересами :). В качестве "старшего" (upstream)
сервера может выступать любой NNTP-сервер (или сервера). В частности,
им может быть другой nntpcache, т.е. прокси-сервера могут образовывать
иерархию. nntpcache кеширует статьи и некоторую служебную информацию
(список групп, описания групп, оглавления, заголовки), что ускоряет доступ к
популярным группам.
Не умеет принимать и передавать статьи в режиме потока (feed).
Фильтрует спам на основе сообщений формата NoCeM (криптогрфически подписанные)
извлекаемых из news.lists.filters и alt.nocem.misc.
Может работать под chroot.
Может контролировать права доступа на основе протокола ident (RFC-931).
Позволяет фильтровать статьи на основе текстов заголовков и содержимого
для отдельных пользователей (защита детей, цензура, борьба со спамом).
Имеет встроенный http-сервер для сбора статистики.
Для коммерческого использования - платный.
удалить /usr/local/libexec/nntpcache-gdb.sh,
/usr/local/libexec/nntpcache.gdb, /usr/local/libexec/unixauth как
потенциально вредные
переместить содержимое /usr/local/var/nntpcache на раздел, выбранный под
кеш, саму директорию удалить, вместо нее сделать ссылку
/usr/local/etc/nntpcache/nntpcache.config
cacheDir кеш-раздел/nntpcache
adminEmail email-администратора
добавить & к safeGroup
listSecurity on
contentFilters no
xoverFilters no
nocem off
relayUnknowns yes
Organization (текст для соответствующего заголовка при посылке статьи)
bindAddr явный-адрес:119 (у меня слишком много интерфейсов)
anonMmap yes (информация не сохраняется между сеансами)
minFilesFreePercent 10
minBlocksFreePercent 10
maxArtAge 8w
logListMerge no (слишком большой объем)
logListMergeCorrelation no (слишком большой объем)
logDebug no
httpBindAddr явный-адрес:9119
idleTimeout 10m (как у uplink-а)
remoteIdleTimeout 1m (не надо надоедать uplink-у)
serverDownRecheck 1m
/usr/local/etc/nntpcache/nntpcache.servers определяет список
используемых nntp-серверов. Файл просматривается сверху вниз, к
действию принимается последний подошедший шаблон. Строки
шаблонов имеют следующий формат:
хост:порт
интерфейс (если наш компьютер имеет несколько
интерфейсов, иначе слово "DEFAULT"; не забудь также про localhost)
active timeout
active.times timeout
newsgroups timeout
group list timeout
xover timeout
arts timeout
Комментарии можно заключать в скобки /* */ или ставить '#'
в начале строки. Timeout задается в виде числа, за которым
следует единица измерения (m - минут, h - часов, d -
дней, w - недель). После описания
серверов идет строка "%BeginGroups", за которой идут строки,
определяющие с какого сервера будут браться
соответствующие группы (все лишнее
отключить). Каждая строка состоит из двух полей:
шаблон имени запрашиваемой группы
имя сервера, с которого брать статьи из данной группы
/usr/local/etc/nntpcache/nntpcache.access - каждая строка содержит поля:
шаблон имени/адреса хоста
шаблон имени группы (слово "connect" используется для
авторизации подключения клиента к nntpcache; слово "http" в
угловых скобках - для доступа к web-порту статистики)
права (через запятую)
read
post
deny
quick (не просматривать остаток файла)
filter/censor (фильтр удаляет "вредную" информацию, цензор
заменяет на что-то приличное)
ihave
strip (удалять имена групп из active, active.times,
newsgroups и т.д.)
auth (требуется AUTHINFO, не работает)
список имен файлов, содержащих фильтры
имя файла со списком пользователей
определив имя хоста (перед именем хоста ставится строка
"имя-пользователя@", определяемая с помощью ident; если
определить не удалось, то "unknown@") и имя группы, nntpcache
просматривает весь файл сверху вниз. Действует последняя
подошедшая строка.
Установка (2.3.3 на RH Linux 6.0/7.0 из исходников).
Нового пользователя не заводил - пусть работает с правами news/news
./configure
редактируем cf/nnconf.cf,cf/nntpcache.config-dist (или cf/nnconf.cf.in до ./configure)
директория под кеш (cacheDir)
adminEmail
ihaveServers (кому будут передаваться команды IHAVE)
maxMsgIDsearch (сколько серверов
опрашивать для поиска статьи по Message-ID)
contentFilters (пока выключил)
xoverFilters (пока выключил)
nocem (пока выключил)
Organization (текст для соответствующего заголовка при посылке
статьи)
minBlocksFree (очистка начинается только когда в разделе
остается меньше свободных блоков, нужен
отдельный раздел)
bindAddr (119 порт уже занят "нормальным" INN)
rfc931 (выключить, какой ident от MS W98?!)
log From/To Client/Server (от сервера и к
клиенту включать только на время отладки - сюда попадает
результат команд типа "list active")
logListMerge* (огромный объем, выключить, а то syslog просто умирает)
statsArticleID (Message-ID, по которму извлекается
статистика, поменять, чтобы посторонние не читали)
idleTimeout (сделать таким же, как и у оригинального INN)
remoteIdleTimeout - уменьшить до минуты, чтобы не
надоедать?
serverDownRecheck (сделать поменьше - пусть долбит, пока не
проснется)
просматриваем cf/nconf.h и убираем X-Cache
меняем в Makefile директорию кеша (/usr/local/var/nntpcache) на нужное нам
make (чудовищное количество предупреждений)
make install (под root)
/usr/local/bin
mmap_tests
confused
/usr/local/include
mmap_results.h
директория кеша
VERSION
/usr/local/etc/nntpcache
nntpcache.config-dist
nntpcache.servers-dist
nntpcache.access-dist
VERSION
spam.filter
http/
http/innreport/
http/innreport/pics/
pubring.pgp-dist
pubring.asc-dist
newshound.conf-dist
innreport.conf-dist
innreport.pl
innreport.pm
/usr/local/sbin
nntpcached (собственно NNTP-кеш)
-e (выполнить expire и завершить работу; не запускать
параллельно работающему nntpcached!)
-b адрес:порт (к какому порту прислушиваться; по
умолчанию берется из конфигурационного файла)
-c полный-путь-к-файлу-конфигурации (по
умолчанию, /usr/local/etc/nntpcache/nntpcache.config)
-n (не отсоединяться от терминала при запуске - для
запуска из crontab и rc)
-r (удалить старую базу данных - history и cache.mmap
перед запуском)
Сигналы:
HUP - перечитать
конфигурацию (может не работать, если
привилегии процесса сброшены после
запуска - по умолчанию, так оно и есть)
USR1 - немедленно загрузить active, active.times и newsgroups
со всех серверов
USR2 - запустить expire
TERM/INT - аккуратно завершить работу
newshound
innreport.sh
/usr/local/man/man8
nntpcached.8
newshound.8
файлы конфигурации (в /usr/local/etc/nntpcache; делаются из
соответствующих -dist):
nntpcache.config - то же самое, что и в cf/nnconf.cf
nntpcache.servers - определяет список
используемых nntp-серверов. Файл просматривается сверху вниз, к
действию принимается последняя подошедшая строка. Строки
шаблонов имеют следующий формат:
хост:порт
интерфейс (если наш компьютер имеет несколько
интерфейсов, иначе слово "DEFAULT"; не забудь также про localhost)
active timeout
active.times timeout
newsgroups timeout
group list timeout
xover timeout
arts timeout
Начало файла является
комментарием (заключено в скобки /* */), так что
редактировать эту часть не надо ;). Timeout
задается в виде числа, за которым
следует единица измерения (m - минут, h - часов, d -
дней, w - недель). Все "левые" сервера (в т.ч. nntpcache.org)
лучше отключить. После описания
серверов идет строка "%BeginGroups", за которой идут строки,
определяющие с какого сервера будут браться
соответствующие группы (все лишнее
отключить). Каждая строка состоит из двух полей:
шаблон имени запрашиваемой группы
имя сервера, с которого брать статьи из данной группы
nntpcache.access - каждая строка содержит поля:
шаблон имени/адреса хоста
шаблон имени группы (слово "connect"
используется для
авторизации
подключения клиента к nntpcache; слово "http" в
угловых скобках - для доступа к web-порту
статистики)
права (через запятую)
read
post
deny
quick (не просматривать остаток файла)
filter/censor (фильтр удаляет "вредную" информацию, цензор
заменяет на что-то приличное)
ihave
strip (удалять имена групп из active, active.times,
newsgroups и т.д.)
auth (требуется AUTHINFO, не работает)
список имен файлов, содержащих фильтры
имя файла со списком пользователей (не работает)
определив имя хоста (перед именем хоста ставится строка
"имя-пользователя@", определяемая с помощью ident; если
определить не удалось, то "unknown@") и имя группы, nntpcache
просматривает весь файл сверху вниз. Действует последняя
подошедшая строка.
spam.filter
pubring.pgp
pubring.asc
newshound.conf
innreport.conf
сделать дырку в firewall для порта nntpcache и 9119 (http-сервер
статистики)
включить news.debug в syslog
автоматический запуск/остановка (пока в rc.local))