Файлы настройки INN

INN использует несколько файлов настройки, все они хранятся в каталоге /etc/news. Некоторые изменения файлов конфигураций появились в Version 2, и именно ее я рассмотрю здесь.

Если Вы хотите узнать больше относительно свойств файлов конфигурации, Вы можете также обратиться к man-страницам: дистрибутив INN имеет индивидуальную man-страницу для каждого файла.

Глобальные параметры

Есть ряд параметров INN, которые являются глобальными для всех групп новостей.

Файл inn.conf

Главный файл настройки INN называется inn.conf. Помимо прочего, он задает имя Вашей машины в сети Usenet. INN Version 2 имеет огромное количество настроек в этом файле. Удачно, что большинство параметров имеет значения по умолчанию, которые являются приемлемыми для многих случаев. Страница справочника inn.conf(5) имеет подробное описание всех деталей параметров этого файла, и Вы должны ее внимательно изучить, если испытываете проблемы с настройкой.

Простой пример inn.conf:

# Sample inn.conf for the Virtual Brewery
server:          vlager.vbrew.com
domain:          vbrew.com
fromhost:        vbrew.com
pathhost:        news.vbrew.com
organization:    The Virtual Brewery
mta:             /usr/sbin/sendmail -oi %s
moderatormailer: %[email protected]
#
# Paths to INN components and files.
#
pathnews:               /usr/lib/news
pathbin:                /usr/lib/news/bin
pathfilter:             /usr/lib/news/bin/filter
pathcontrol:            /usr/lib/news/bin/control
pathdb:                 /var/lib/news
pathetc:                /etc/news
pathrun:                /var/run/news
pathlog:                /var/log/news
pathhttp:               /var/log/news
pathtmp:                /var/tmp
pathspool:              /var/spool/news
patharticles:           /var/spool/news/articles
pathoverview:           /var/spool/news/overview
pathoutgoing:           /var/spool/news/outgoing
pathincoming:           /var/spool/news/incoming
patharchive:            /var/spool/news/archive
pathuniover:            /var/spool/news/uniover
overviewname:           .overview

Первая строка сообщает, где искать программы rnews и inews, с которыми компьютер должен входить в контакт при поставке статей. Это очень важно, поскольку innd должен установить соединение по NNTP для связи с сервером.

Ключевое слово domain должно определить доменную часть имени хоста. Если сервер имен возвращает неполное доменное имя, к нему будет присоединено значение параметра domain.

Следующая строка определяет имя хоста, которое собирается использовать inews при добавлении строки From: к статьям, зарегистрированным локальными пользователями. Большинство программ чтения новостей использует поле From: при создании ответа автору статьи. Если Вы опускаете это поле, будет использовано полное доменное имя хоста новостей. Это не всегда самый лучший выбор. Вы могли бы, например, обрабатывать почту и новости разными компьютерами. В этом случае Вы должны указать доменное имя почтового сервера после инструкции fromhost.

Строка pathhost определяет имя хоста INN для добавления к полю Path: в заголовке статей. В большинстве случаев Вы будете использовать доменное имя сервера новостей. В этой ситуации поле можно пропустить: значением по умолчанию как раз и является доменное имя сервера новостей. Иногда Вы можете использовать универсальное имя, типа news.vbrew.com, при обслуживании большого домена. Это позволяет Вам легко перемещать систему новостей с одной машины на другую в зависимости от технических требований.

Следующая строка имеет ключевое слово organization. Эта инструкция позволяет Вам конфигурировать, какой текст inews поместит в поле Organization: заголовков статей, зарегистрированных Вашими локальными пользователями. Формально здесь нужно указать описание или название Вашей организации.

Ключевое слово organization обязательно и определяет имя агента транспортировки почты, который будет использован для отправки сообщений модератору. Здесь вместо %s будет подставлен e-mail адрес модератора группы.

Слово moderatormailer определяет заданный по умолчанию адрес, используемый, когда пользователь пробует послать статью в модерируемую группу. Список адресов модераторов для каждой группы обычно хранится в отдельном файле. Запись moderatormailer используется как последняя инстанция: если она определена, inews заменит %s на адрес для соответствующей группы новостей. Например, при регистрации в soc.feminism статья будет отправлена по почте на адрес [email protected], заданный в данной конфигурации для модератора данной группы.

В заключение, каждая из оставшихся записей определяет расположение некоторого компонента, файла или программы, принадлежащего INN. Если Вы установили INN из пакета, эти пути должны быть уже сконфигурированы. Если же Вы устанавливаете INN из исходников, то должны гарантировать, что они отражают реальную ситуацию.

Настройка групп новостей

Администратор новостей может управлять правами доступа пользователей разных групп. INN обеспечивает два файла конфигурации, позволяющие администратору решать, какие группы поддерживать, и обеспечить описания для них.

Файлы active и newsgroups

Файлы active и newsgroups используются, чтобы сохранять и описывать группы, поддерживаемые этим сервером. Они вносят в список группы, в получении и поддержке которых заинтересован данный сервер, и административную информацию о них. Эти файлы обычно лежат в каталоге /var/lib/news.

Файл active определяет группы новостей, поддерживаемые данным сервером. Синтаксис у него простой. Каждая строка имеет четыре поля, разделенные пробелами:

name himark lomark flags

Поле name задает имя группы. Поле himark определяет самый старший номер, который использовался для статьи в этой группе. Аналогично поле lomark задает младший номер. Чтобы проиллюстрировать, как это работает, рассмотрим пример. Допустим, что мы имеем недавно созданную группу: himark и lowmark в ней пока 0, потому что нет статей. Если послать 5 статей, они будут пронумерованы от 1 до 5. Теперь himark будет равняться 5, самому старшему номеру, а lowmark соответственно будет равен 1. Если статью 5 удалить, ничего не изменится; himark будет равен 5, чтобы гарантировать, что номер статьи не перераспределен, и lowmark останется в 1, самом младшем номере активной статьи. Если мы теперь отменяем статью 1, himark останется неизменяемым, но lowmark будет теперь равен 2, потому что 1 больше не активен. Если мы теперь регистрируем новую статью, ей будет назначенный номер 6, так что himark будет теперь равен 6. Статья 5 была использована, так что мы не будем переназначать этот номер. Значение lowmark остается в 2. Этот механизм позволяет нам легко распределять уникальные числа статьи для новых статей и вычислять приблизительно, как много активных статей находятся в группе: himark- lowmark.

Поле flags может иметь одно из следующих значений:

y

Отправка статей непосредственно на этот сервер разрешена.

n

Отправка статей непосредственно на этот сервер запрешена. Новые статьи могут быть получены только с других серверов. Программы работы с новостями непосредственно на этот сервер передать ничего не могут.

m

Группа модерируемая. Любые статьи будут посланы модератору для утверждения прежде, чем они войдут в группу. Больше всего немодерируемых групп новостей.

j

Статьи в этой группе не сохраняются, а только передаются. Это вызывает сервер новостей для приема статьи, но он только передаст ее следующему серверу транзитом. Он не будет делать статьи доступными программам чтения новостей (newsreaders) с этого сервера.

x

Статья не может быть послана в эту группу. Единственный путь, которым статья может сюда попасть, это прийти с другого сервера.

=foo.bar

Местные статьи регистрируются в группе ``foo.bar''.

В нашей простой конфигурации файл /var/lib/news/active выглядит так:
control                      0000000000 0000000001 y
junk                         0000000000 0000000001 y
rec.crafts.brewing           0000000000 0000000001 y
rec.crafts.brewing.ales      0000000000 0000000001 y
rec.crafts.brewing.badtaste  0000000000 0000000001 y
rec.crafts.brewing.brandy    0000000000 0000000001 y
rec.crafts.brewing.champagne 0000000000 0000000001 y
rec.crafts.brewing.private   0000000000 0000000001 y
Числа himark и lomark в этом примере те, которые Вы использовали при создании новой группы. Числа будут выглядеть совершенно разными для групп, которые были активны некоторое время.

Файл newsgroups еще проще. Он обеспечивает однострочные описания для групп новостей. Некоторые программы способны читать и предоставлять эту информацию пользователям, чтобы помочь им решить, хотят ли они подписаться.

Формат файла newsgroups:

name description
Поле name задает имя группы, а description строку описания для нее.

В данном случае мы хотим описывать группы, которые поддерживает наш сервер, так что напишем такой файл newsgroups:

rec.crafts.brewing.ales         Home brewing Ales and Lagers
rec.crafts.brewing.badtaste     Home brewing foul tasting brews
rec.crafts.brewing.brandy       Home brewing your own Brandy
rec.crafts.brewing.champagne    Home brew your own Champagne
rec.crafts.brewing.private      The Virtual Brewery home brewers group

Настройка подачи новостей

INN обеспечивает администратору новостей способ управлять тем, какие группы будут посланы на другие сервера, а также каким способом это будет выполнено. Наиболее общий метод использует протокол NNTP, но INN также позволяет передавать новости через другие протоколы, например, UUCP.

Файл newsfeeds

Файл newsfeeds определяет, куда какие статьи рассылать. Обычно он лежит в каталоге /etc/news.

Формат файл newsfeeds сначала может показаться сложным. Здесь я опишу его в общих чертах, а за подробностями отсылаю к man-странице newsfeeds(5). Синтаксис файла:

# newsfeeds file format
site:pattern:flags:param
site2:pattern2\
     :flags2:param2
Каждая запись состоит из одной строки. Можно использоваать и несколько строк, но тогда требуется применить символ \ в качестве знака переноса. Символ # в начале строки обозначает комментарий.

Поле site определяет имя сайта, передача которому описана этой строкой. Здесь можно вписать любое имя, на которое потом будут ссылаться другие определения. Единственное, что здесь нельзя писать, это доменное имя сайта. Записанное здесь имя понадобится позже для поиска в таблице имен для программы innxmit, которая передает статьи по протоколу NNTP на удаленный сервер. Можно иметь несколько записей для одного сайта: они обрабатываются индивидуально.

Поле pattern указывает имена групп, которые надо передать этому сайту. Значение по умолчанию должно послать все группы, так что, если нужно именно это, оставьте поле пустым. Это поле обычно хранит разделенный запятыми список шаблонов имен. Символ * как обычно соответствует любой строке символов или ее отсутствию, символ . (точка) не имеет никакой специальной нагрузки, зато символ ! (при использовании в начале выражения) задает логический NOT. Наконец, символ @ в начале имени группы запрещает пересылать любые статьи, которые посланы в эту группу. Список читается и обрабатывается слева направо, так что Вы должны поместить более специфические правила сначала. Например, шаблон:

rec.crafts.brewing*,!rec.crafts.brewing.poison,@rec.crafts.brewing.private

пошлет все новости иерархии rec.crafts.brewing за исключением группы rec.crafts.brewing.poison. Он не пошлет никаких статей, которые пришли в группу rec.crafts.brewing.private: эти статьи будут доступны только тем людям, которые используют этот сервер.

Поле flags контролирует подачу новостей к заданному сайту. Здесь используется разделенный запятыми список из следующих команд:

<size

Статья должна быть размером меньше заданного значения в байтах.

A items

Статья проверяется на соответствие критериям: d (должен быть заголовок Distribution) или p (не проверять сайт в поле Path заголовка).

B high/ low

Размер внутреннего буфера перед записью.

H [count]

Статья должна иметь меньше, чем count записей о пересылке, по умолчанию 1.

I size

Размер внутреннего буфера для передачи файлов.

M pattern

Этому шаблону соответствуют только модерируемые группы.

N pattern

Этому шаблону соответствуют только немодерируемые группы.

S size

Если размер статьи в байтах превышает указанный, поместить ее в очередь для отправки.

T type

Типы подачи новостей: f (файл), m (поток, поле param в соответствующей записи указывает, что статья будет подаваться потоком), p (канал к программе), c (послать каналу stdin подпроцесса, заданного в поле param) и x (аналог c).

W items

Что записывать: b (размер статьи в байтах), f (полный путь), g (первая группа новостей), m (Message ID), n (относительный путь), s (сайт для подачи статьи), t (время приема), * (имя потока или перечень всех сайтов, которые получают статью), N (поле newsgroups заголовка), D (поле distribution заголовка), H (весь заголовок), O (обзорные данные) и R (данные для ответа).

Поле param имеет специальное кодирование, которое зависит от типа передачи. В наиболее общей конфигурации здесь хранится имя выходного файла, в который Вы будете записывать исходящие данные. В других конфигурациях Вы можете оставлять его пустым или задавать другие значения. Если Вы хотите сделать что-либо нестандартное, обратитесь за подробностями к man-странице newsfeeds(5).

Имеется специальное имя сайта, которое должно быть кодировано как ME и быть первым в этом файле. Эта запись используется, чтобы управлять заданными по умолчанию параметрами настройки для входящих статей. Если запись ME имеет дистрибутивный список, связанный с ней, этот список будет добавлен к каждой записи перед отправкой сообщения.

Я упомянул ранее, что можно использовать специальное сообщение для построения данных, которые делает работу с новостями проще. Это делается командой overchan, которая является частью INN. Чтобы делать это, мы создадим специальную локальную рассылку overview, которая передаст статьи для обработки команде overchan.

Наш сервер новостей будет обеспечивать только одну внешнюю подачу новостей, которая идет на Groucho Marx University, они получают все статьи из всех групп, кроме control и junk, а также группы rec.crafts.brewing.private, которая является местной, и rec.crafts.brewing.poison, в которую не могут ничего послать локальные пользователи.

Мы используем команду nntpsend для транспортировки новостей по NNTP на сервер news.groucho.edu. Программа nntpsend требует, чтобы мы использовали метод поставки "file" и писали путевое имя статьи и ее ID. Заметьте, что надо установить поле param в имя файла для вывода. Конфигурация в файле:

# /etc/news/newsfeeds file for the Virtual Brewery
#
# Send all newsgroups except the control and junk ones by default
ME:!control,!junk::
#
# Generate overview data for any newsreaders to use.
overview::Tc,WO:/usr/lib/news/bin/overchan
#
# Feed the Groucho Marx University everything except our private newsgroup
# and any articles posted to the rec.crafts.brewing.poison newsgroup.
gmarxu:!rec.crafts.brewing.poison,@rec.crafts.brewing.private:\
       Tf,Wnm:news.groucho.edu

Файл nntpsend.ctl

Программа nntpsend управляет передачей новостей, используя протокол NNTP и вызывая команду innxmit. Простое использование nntpsend было только что показано, но у нее есть свой файл настройки, который обеспечивает некоторую гибкость при передаче новостей.

Команда nntpsend ожидает найти пакетные файлы для сайтов, с которыми работает. Предполагается, что эти пакетные файлы будут именованы как /var/spool/news/out.going/ sitename. Демон innd создает эти пакетные файлы при обработке записи в newsfeeds, который приведен в предыдущем разделе. Там имя сайта было определено как имя файла в поле param, и это удовлетворяет входные требования команды nntpsend.

Команда nntpsend имеет файл конфигурации nntpsend.ctl, который обычно сохраняется в каталоге /etc/news.

Файл nntpsend.ctl позволяет связывать полное доменное имя, настройки подачи новостей и ряд параметров передачи с именем сайта назначения. Общий формат файла:

sitename:fqdn:max_size:[args]

Элементы этого формата:

sitename

Имя сайта из файла newsfeeds.

fqdn

Полное доменное имя сервера, которому будут передаваться новости.

max_size

Максимальный объем новостей, передаваемых одним блоком.

args

Дополнительные параметры для команды innxmit.

Наш пример конфигурации требует очень простой файл nntpsend.ctl. Мы имеем только одну подачу новостей. Ограничим максимальный блок новостей 2 MB и передадим параметр innxmit, который устанавливает 3-минутное (180 секунд) время ожидания. Если бы мы поддерживали большой сайт новостей с несколькими клиентами, пришлось бы создать дополнительные записи для каждого клиента:

# /etc/news/nntpsend.ctl
#
gmarxu:news.groucho.edu:2m:-t 180

Контроль доступа программ работы с новостями

Раньше доступ к новостям предоставлялся кому угодно. Но теперь клиентов стало столько, что предоставлять всем желающим доступ не получается: никакого сервера не хватит. Поэтому каждый сервер обслуживает лишь своих клиентов. INN имеет файлы конфигурации, чтобы управлять этим доступом.

Файл incoming.conf

Я упомянул в обзоре по INN, что данный пакет достигает хороших результатов, отделяя механизм рассылки новостей от работы с клиентскими программами. Файл /etc/news/incoming.conf как раз то место, где Вы определяете, какие хосты будут подавать Вам новости, используя протокол NNTP и ряд параметров подачи. Любой хост, не перечисленный в этом файле, не будет обработан демоном innd. Вместо этого для него будет запущен демон nnrpd.

Синтаксис файла /etc/news/incoming.conf очень прост. Допустимы три типа записей: пары "ключ/значение", задающие значения параметров, доменные имена, задающие имена хостов для доступа по NNTP (peer), и группы (group), задающие связь между двумя первыми типами записей. Пары ключ/значение могут иметь три различных типа контекста. Глобальные пары относятся ко всем записям хостов, определенным в файле. Группы обращаются ко всем определенным хостам в своей группе.

Фигурные скобки ({}) задают начало и конец записей типов group и peer. Символ # задает комментарий. Пары ключ/значение разделяются двоеточием и располагаются по одной на строке.

Наиболее часто используются следующие ключи:

hostname

Определяет разделенный запятыми список полных доменных имен или IP-адресов хостов, которым разрешено посылать новости на наш сервер.

streaming

Задает, разрешены ли потоковые команды с этого хоста. Тип переменной Boolean. По умолчанию значение true.

max-connections

Максимальное количество подключений из этой группы или с данного сервера. Значение 0 (ноль) задает неограниченное число подключений, аналогично значению none.

password

Задает пароль, используемый для передачи новостей. По умолчанию не определен, то есть пароль не требуется.

patterns

Определяет группы, которые принимаются от соответствующего сервера (или группы). Это поле кодируется по правилам из файла newsfeeds.

В нашем примере мы имеем только один хост, с которым надо обмениваться новостями. Пароль задавать не будем, но обеспечим, чтобы частные группы не выходили за пределы нашей сети. Файл hosts.nntp выглядит примерно так:

# Virtual Brewery incoming.conf file.
# Global settings
streaming:       true
max-connections: 5

# Allow NNTP posting from our local host.
peer ME {
  hostname: "localhost, 127.0.0.1"
}

# Allow groucho to send us all newsgroup except our local ones.
peer groucho {
  hostname: news.groucho.edu
  patterns: !rec.crafts.brewing.private
}

Файл nnrp.access

Я упомянул ранее, что программы чтения новостей (а фактически любой компьютер, не перечисленный в hosts.nntp), которые соединяются с INN, обрабатываются программой nnrpd. Демон nnrpd использует файл /etc/news/nnrp.access, чтобы определить, кто и с какими правами может использовать сервер.

Файл nnrp.access имеет структуру, схожую с файлами настройками, рассмотренными выше. Он включает набор образцов, используемых для проверки соответствия доменных имен или IP-адресов соединяющихся машин и определения прав доступа. Каждая запись должна быть на отдельной строке, поля разделяются двоеточиями. Для работы используется последнее найденное соответствие. Каждая запись включает пять полей:

Hostname или IP-адрес

Это поле соответствует правилам wildmat(3) соответствия шаблонов. Это образец, который описывает имя соединяющегося компьютера или его IP-адрес.

Permissions

Это поле определяет то, какие права нужно предоставлять. Есть два права: R для чтения и P для посылки статей в группы.

Username

Необязательно, но позволяет Вам определять имя пользователя для его регистрации клиентом NNTP на сервере перед тем, как он будет посылать статьи (для чтения авторизация не требуется).

Password

Необязательно, но может задавать пароль для отправки статей и задается в паре с username. Пустое поле определяет, что пароль не нужен.

Newsgroups

Задает группы, к которым разрешен доступ клиенту. Шаблон определен по правилам из файла newsfeeds.

В нашем примере разрешается каждому пользователю нашего домена читать статьи и посылать их по NNTP. Кроме того, всем клиентам NNTP предоставляется доступ только на чтение (read-only) ко всем конференциям, кроме внутренних. Файл nnrp.access выглядит так:

# Virtual Brewery - nnrp.access
# We will allow public reading of all newsgroups except our private one.
*:R:::*,!rec.crafts.brewing.private

# Any host with the Virtual Brewery domain may Read and Post to all
# newsgroups
*.vbrew.com:RP::*

Старение статей

Когда статьи принимаются сервером, они сохраняются на диске. Статьи должны быть доступными пользователям некоторое время. Но крупный сервер очень требователен к месту на диске. Для эффективного использования диска, надо удалять периодически устаревшие статьи. Можно это автоматизировать, что называется старение статей (article expiration). INN обеспечивает средства автоматического удаления старых статей.

Файл expire.ctl

Сервер INN использует программу expire, чтобы удалить устаревшие статьи. Она в свою очередь использует файл /etc/news/expire.ctl, чтобы конфигурировать правила, которые управляют этим процессом.

Синтаксис /etc/news/expire.ctl довольно прост. Как и в большинстве файлов конфигурации строки, начинающиеся с символа # или пустые, игнорируются. Общая идея состоит в том, что Вы определяете одно правило на строку. Каждое правило определяет, как будет стареть указанная группа статей. Синтаксис правила выглядит следующим образом:

pattern:
modflag:keep:
default:purge

Поля имеют смысл:

pattern

Разделенный запятыми список образцов имен групп. Для проверки используется программа wildmat. Будет применено последнее подходящее правило.

modflag

Описывает, как это правило применяется к модерируемым группам. Допустимо указание M для модерируемых групп, U для немодерируемых групп, или A, чтобы указать, что это правило применимо к любым группам новостей.

keep

Позволяет Вам определять минимальное время, которое статья с полем "Expires" в заголовке будет храниться. Единицами измерения являются дни. Можно использовать плавающую точку, например, 7.5 для указания семи с половиной дней. Можно также указать never, чтобы статья не сохранялась вообще.

default

Это поле позволяет определять, сколько времени статья без поля Expires в заголовке будет храниться. Большинство статей не имеют поля Expires в заголовке, так что этот параметр очень важен. Это поле кодируется по правилам для поля keep, но значение never указывает, что статьи без поля Expires в заголовке будут бессмертны.

purge

Это поле позволяет Вам определять максимальное время. которое статья с полем Expires в заголовке будет храниться до начала процесса старения. Правила задания аналогичны полю keep.

Наши требования просты. Мы будем хранить все статьи во всех группах в течение 14 дней по умолчанию и от 7 до 21 для статей с полем Expires в заголовке. Группа rec.crafts.brewing.private является внутренней, и в ней статьи бессмертны:

# expire.ctl file for the Virtual Brewery

# Expire all articles in 14 days by default, 7-21 days for those with
# Expires: headers
*:A:7:14:21

# This is a special internal newsgroup, which we will never expire.
rec.crafts.brewing.private:A:never:never:never

Есть один специальный тип записи, который Вы можете иметь в файле /etc/news/expires.ctl. Допустима только одна строка, которая выглядит следующим образом:

/remember/:days
Она позволяет Вам определять минимальное число дней. которое статья будет упоминаться в файле хронологии (history file), независимо от старения статьи. Это полезно, если один из подающих новости сайтов медленный и имеет тенденцию иногда присылать старые статьи. Установка поля /remember/ помогает избавиться от поступления статей, уже удаленных с Вашего сервера. Если он помнит, что уже получал такую статью, он отклонит попытки снова послать ее. Важно не забыть, что эта установка не имеет вообще никакого эффекта над самим процессом устаревания новостей, а воздействует только на время, которое статьи сохраняются в базе данных.

Обработка сообщений Control

Как и C-News, INN может автоматически обрабатывать сообщения Control. INN обеспечивает мощный механизм конфигурации, чтобы управлять тем, какое действие будет выполнено для каждого ряда сообщений управления, и блок контроля доступа, чтобы управлять тем, кто может инициализировать действия по управлению группами.

Файл control.ctl

Файл control.ctl довольно прост. Правила синтаксиса для этого файла аналогичны правилам для прочих файлов INN. Строки, начинающиеся с # игнорируются, строки могут быть продолжены, используя символ переноса /, поля разделяются двоеточиями (:).

Когда сообщение управления будет получено, оно будет проверено по каждому правилу в файле. Используется последнее подходящее совпадение, так что Вы должны поместить любые универсальные правила в начало файла и более специфические правила в конце. Общий синтаксис файла:

message:from
:newsgroups:
action

Поля имеют смысл:

message

Имя контрольного сообщения. Типичные сообщения описаны ниже.

from

Образец в стиле оболочки, соответствующий e-mail адресу отправителя сообщения. Адрес будет преобразован в нижний регистр перед сравнением.

newsgroups

Если пришло сообщение newgroup или rmgroup, это поле хранит соответствие образца в стиле оболочки (shell-style) с именем соответствующей группы.

action

Это поле определяет, какое действие выполнять для любого сообщения, соответствующего правилу. Имеется множество действий, которые мы можем выполнить, они будут описаны ниже.

Поле message каждой строки может иметь одно из значений:

checkgroups

Предписывает администраторам новостей синхронизировать их базы данных активных групп со списком в сообщении.

newgroup

Создать новую группу. Сообщение должно содержать короткое описание создаваемой группы новостей.

rmgroup

Удалить группу новостей.

sendsys

Переслать файл sys с этого сервера новостей отправителю сообщения. RFC-1036 заявляет, что это требование членства в Usenet. Эта информация должна быть публично доступна потому, что она используется для построения карты Usenet.

version

Вернуть отправителю сообщения имя хоста и версию программного обеспечения сервера новостей.

all

Соответствует любому типу сообщений управления.

Поле message может также включать любые следующие действия:

doit

Запрошенная команда выполняется. Во многих случаях будет послано e-mail сообщение администратору, чтобы уведомить его о выполнении.

doit=file

Аналог doit, но сообщение протокола пишется в файл протокола с именем file. Если в качестве имени файла задано mail, протокол отсылается по e-mail. Если в качестве имени задана пустая строка, сообщение будет записано в дыру памяти /dev/null, эквивалентно использованию неквалифицированного действия doit. Если строка file начинается с символа /, имя считается абсолютным (путевым или полным). В противном случае указанное имя транслируется в /var/log/news/file.log.

doifarg

Запрошенная команда выполняется, если имеет параметр. Если команда не имеет никакого параметра, сообщение управления игнорируется.

drop

Запрошенная команда игнорируется.

log

Сообщение протокола будет послано на stderr процессом innd. Это обычно направляется в файл /var/log/news/errlog.

log=file

Аналог log, но файл протокола определен согласно правилам, заданным для действия doit=file.

mail

Будет послано e-mail сообщение администратору новостей, содержащее запрошенные команды. Никаких других действий не будет выполнено.

verify-*

Если действие начинается со строки "verify-", то сообщение управления заверено, используя PGP (или GPG).

Пример простого файла control.ctl:

## Sample /etc/news/control.ctl
##
## Warning: You should not use this file, it is illustrative only.
##
##      Control Message Handling
all:*:*:mail
checkgroups:*:*:mail
ihave:*:*:drop
sendme:*:*:drop
sendsys:*:*:log=sendsys
senduuname:*:*:log=senduuname
version:*:*:log=version
newgroup:*:*:mail
rmgroup:*:*:mail

##  Handle control messages for the eight most important news heirarchies
##  COMP, HUMANITIES, MISC, NEWS, REC, SCI, SOC, TALK
checkgroups:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
newgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
rmgroup:*:comp.*|humanities.*|misc.*|news.*|rec.*|sci.*|soc.*|talk.*:drop
checkgroups:[email protected]:*:verify-news.announce.newgroups
newgroup:[email protected]:comp.*|misc.*|news.*:verify-news.announce.newgroups
newgroup:[email protected]:rec.*|sci.*|soc.*:verify-news.announce.newgroups
newgroup:[email protected]:talk.*|humanities.*:verify-news.announce.newgroups
rmgroup:[email protected]:comp.*|misc.*|news.*:verify-news.announce.newgroups
rmgroup:[email protected]:rec.*|sci.*|soc.*:verify-news.announce.newgroups
rmgroup:[email protected]:talk.*|humanities.*:verify-news.announce.newgroups

## GNU ( Free Software Foundation )
newgroup:[email protected]:gnu.*:doit
newgroup:news@*ai.mit.edu:gnu.*:doit
rmgroup:[email protected]:gnu.*:doit
rmgroup:news@*ai.mit.edu:gnu.*:doit

## LINUX (Newsfeed from news.lameter.com)
checkgroups:[email protected]:linux.*:doit
newgroup:[email protected]:linux.*:doit
rmgroup:[email protected]:linux.*:doit