Основной процесс – innd. Постоянно запущен в системе, ожидая и принимая поток статей по протоколу NNTP от серверов новостей. Прослушивает порт 119 на наличие входящих соединений. Ведет список активных групп, список статей, статьи, базу заголовков статей, пакеты статей для рассылки по серверам новостей, журналы.
При соединении клиентов для чтения новостей программа innd передает управление демону nnrpd. Этот демон просматривает файл nnrp.access для определения прав доступа к локальной базе статей.
Для управления работой innd – добавления, удаления групп, статей, серверов новостей, изменения параметров работы используется программа ctlinnd.
Удалением старых статей с истекшим сроком хранения занимаются программы expire и expireover, которые удаляют устаревшие файлы, не останавливая innd.
Для автоматического обновления списка новостей используются управляющие сообщения.
Управляющие сообщения
Представляют собой обычные статьи в обычной группе новостей, имеющие заголовок "Control: ". Встретив такую статью, innd обрабатывает записанную в ней команду и сохраняет статью. Управляющие сообщения могут содержать следующие команды:
• cancel Message-ID (обрабатывается самим innd);
• иначе первое слово рассматривается как имя программы (ищется в каталоге ${BIN}/control). Если программа не существует, то вызывается программа default.
Сообщения запоминаются в псевдогруппе control. Если создать подгруппу control.имя_команды, то все соответствующие статьи будут помещаться в эту подгруппу (очень рекомендуется создать control.cancel, control.newgroup, control.rmgroup, control.checkgroups).
Настройка системы INN
Сервер новостей INN по возможностям n сложности настройки весьма напоминает пакет sendmail. Исходя из этого не приходится удивляться огромному количеству конфигурационных файлов и параметров конфигурации. Находятся конфигурационные файлы в каталоге /etc/news. Рассмотрим наиболее значимые из них:
• /etc/news/actsync.cfg – этот файл, как и следующий, используется для конфигурации автоматического изменения списка групп новостей. Обычно, чтобы в последствии не разгребать завалы неведомо откуда взявшихся групп новостей с огромным трафиком, добавление новых групп новостей возлагается на администратора системы;
• /etc/news/actsync.ign – этот файл, как и предыдущий, используется для конфигурации автоматического изменения списка групп новостей;
• /etc/news/control.ctl – в этом файле описывается, как обрабатывать управляющие сообщения. Каждая его строка задает действие. Строки состоят из четырех полей, разделенных двоеточием. Первое поле задает команду, к которой применяется действие (можно указать ключевое слово all), последнее поле – действие. Строки просматриваются по порядку. Используется последняя подошедшая. Возможные действия:
– doit
– doifarg
– doit=отдельный_журнал
– doit=mail
– doit= (без журнализации)
– drop
– log (запись в журнал – errlog)
– log=отдельный_журнал
Описание действий смотрите в документации на сервер INN. Для увеличения безопасности и устойчивости системы рекомендуется не использовать управляющие сообщения, а в файл control.ctl записать единственную строку all:*:*:drop – не делать никакой обработки вообще;
• /etc/news/cycbuff.conf – файл содержит конфигурацию метода хранения CNFS, обычно не используется (подробности смотрите в документации на пакет INN);
• /etc/news/distrib.pats – файл используется программами посылки статей, в частности, inews – для определения области распространения статьи.
Область распространения определяется по шаблону группы новостей и приоритету. Обычно файл не используется;
• /etc/news/expire.cti – файл определяет, через какое время статьи в базе устаревают. Использование файла зависит от метода хранения статей. В частности, метод хранения CNFS самостоятельно удаляет старые статьи. В этом же файле определяется, сколько времени хранить в «истории» информацию об удаленных или отвергнутых статьях.
В начале файла обязательно должна находиться строка, определяющая срок хранения записи об идентификаторах статей в файле history после удаления тела статьи. Это позволяет отклонить статью, если поставщик новостей вновь предложит ее в определенный промежуток времени. Эта строка имеет следующий формат: /remember/:время, где время – срок хранения в днях, по истечении которого из системы удаляются идентификаторы старых статей.
Здесь можно задать для различных групп или набора иерархий групп различные сроки хранения статей. Правила хранения статей задаются следующей строкой, состоящей из пяти полей, разделенных двоеточием:
Шаблоны_имени_группы_через_запятую:флаг:min:default:max