Настройка INN

Настройка INN

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

Общие установки

Основным конфигурационным файлом является /etc/news/inn.conf. В этом файле содержатся выражения следующего вида:

имя_опции: значение

Такой же синтаксис используется и в других конфигурационных файлах. Значения большинства опций в файле inn.conf, заданные по умолчанию, не нуждаются в редактировании. Наиболее важные из опций, которые вам придется установить в соответствии с требованиями вашей системы, описаны ниже.

• organization. Данная опция позволяет указать имя вашей организации. Строка, заданная в качестве значения опции organization, включается в заголовки всех сообщений, переданных через ваш сервер.

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

• pathhost. Получая сообщение, сервер INN включает значение данной опции в поле заголовка Path. Это поле позволяет выяснить путь сообщения и устранить ситуации, при которых сообщение вторично попадает на тот же сервер. Задавая значение данной опции, желательно указать полное доменное имя сервера, например news.threeroomco.com.

• moderatormailer. Некоторые группы новостей модерируются, т.е. перед тем, как отправленные сообщения становятся доступными всем пользователям, их проверяет один из участников административной группы — модератор. Если вам надо связаться с модератором, вы можете либо послать письмо непосредственно ему, либо отправить сообщение на централизованный адрес модерируемой группы; в результате оно будет доставлено модератору. Примером централизованного адреса может служить %s@uunet.uu.net.

• domain. С помощью данной опции задается имя домена, например threeroomco.com. Оно предназначено для внутреннего использования компонентами INN.

• fromhost. Когда локальный пользователь передает сообщение, INN создает поле заголовка From, идентифицирующее отправителя. Значение данного поля интерпретируется как имя компьютера, поэтому вы можете указать в качестве значения данной опции имя домена или имя почтового сервера.

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

В файле inn.conf предусмотрено много других опций, но для них обычно принимают значения, установленные по умолчанию. Дополнительную информацию о назначении различных опций вы можете получить на страницах справочной системы, посвященных inn.conf.

Объявление групп новостей

В файле inn.conf отсутствуют объявления и описания групп новостей. Эта информация указывается в двух других конфигурационных файлах: active и newsgroups. Данные файлы хранятся в каталоге, указанном с помощью опции pathdb, которая находится в файле inn.conf (обычно это каталог /var/lib/news).

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

имя_группы максимальный_номер минимальный_номер флаги

В первом поле указывается полное имя группы, например comp.os.linux.misc. Два следующих поля содержат соответственно максимальный и минимальный номера сообщений, присутствующих в группе. Для новой группы значения этих полей равны соответственно 0000000000 и 0000000001. (Сервер INN хранит сообщения, переданные в группу, как отдельные файлы, имена которых создаются на базе номеров сообщений в локальной группе. Эти номера не связаны с идентификаторами сообщений и могут по-разному присваиваться на различных серверах.) Последнее поле содержит флаги, определяющие характеристики группы. Значения флагов описаны ниже.

• y. Данный флаг присутствует в объявлениях групп чаще других. Он указывает на то, что пользователи могут передавать сообщения в группу.

• n. Группа, помеченная этим флагом, может получать новые статьи с других серверов, но локальные пользователи не могут передавать в нее свои сообщения.

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

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

• x. Данный флаг определяет статическую группу. Новые сообщения не принимаются ни от локальных пользователей, ни от поставщика новостей.

• =группа_новостей. Сообщения, отправленные в группу, которая помечена данным флагом, передаются в указанную группу. Этот флаг можно использовать для автоматического перенаправления материалов.

Сервер новостей, который допускает только локальные операции, может поддерживать лишь несколько групп. Имена этих групп задаются произвольно, но они должны соответствовать схеме, принятой в Usenet. При желании вы можете назначать локальным группам имена, начинающиеся с имени вашей организации, например, на сервере новостей, расположенном в домене threeroomco.com, могут поддерживаться группы threeroomco.support, threeroomco.support.bigproduct и threeroomco.accounting. Если вы получаете материалы новостей из внешнего источника, соответствующий сервер должен предоставлять вам список групп новостей или даже полностью сформированный файл active.

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

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

Управление доступом

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

Предоставление материалов групп другим серверам

Если вы хотите, чтобы сообщения, переданные вашими пользователями, достигали других узлов, тем более, если вы собираетесь предоставлять другим серверам материалы групп в полном объеме, вам надо соответствующим образом сконфигурировать ваш сервер новостей. Для этого необходимо отредактировать содержимое файла /etc/news/newsfeeds. В файле /etc/news/newsfeeds находятся записи, представленные в следующем формате:

идентификатор_узла:шаблон[,шаблон...]:флаг[, флаг...]:параметр

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

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

• шаблон. Шаблон определяет одну или несколько групп новостей. Если количество групп, поддерживаемых сервером, невелико, вы можете указывать имя каждой группы, в противном случае следует применять символ групповой операции (*). Например, comp.os.* определяет все группы в категории comp.os. Если перед шаблоном указан символ !, это означает, что материалы данных групп не должны передаваться на другой сервер; исключение составляют лишь сообщения, переданные одновременно в несколько групп. Аналогичный результат получается при использовании символа @, но при этом сообщения, переданные в несколько групп, также блокируются. Предположим, например, что вы задали в данном поле значение !comp.os.linux. Если сообщение направлено в группы comp.os.linux и comp.os.linux.hardware, оно появится лишь в составе группы comp.os.linux.hardware. Значение @comp.os.linux полностью запретит передачу данного сообщения. Сервер INN интерпретирует записи в файле newsfeeds последовательно одну за другой, поэтому если вы укажете comp.os.*, !comp.os.linux, INN разрешит передачу всех сообщений категории comp.os, за исключением группы !comp.os.linux. Изменив порядок следования записей на обратный, вы разрешите передачу всех групп, так как более общее выражение comp.os.* переопределит более конкретное выражение !comp.os.linux.

• флаг. В данном поле задается один или несколько флагов; эти флаги ограничивают типы сообщений, которые могут быть переданы на удаленный узел. Например, выражение <размер ограничивает набор передаваемых сообщений теми, размер которых меньше указанного, а выражение Gчисло указывает на то, что сообщение, направленное в несколько групп, передается только в том случае, если количество групп не превышает указанное. Описания всех флагов можно найти в справочной системе.

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

Файл newsfeeds управляет созданием файла, который должен быть передан другому серверу. Информация, заданная в файле /etc/news/nntpsend.ctl, определяет порядок взаимодействия INN с этим сервером. Подобно newsfeeds, файл nntpsend.ctl содержит записи, состоящие из нескольких полей, разделенных двоеточиями. Формат записи приведен ниже.

идентификатор_узла: имя_узла: максимальный_размер: [параметры]

Значение в поле идентификатор_узла должно совпадать со значением, заданным в одноименном поле файла newsfeeds, а имя_узла — это реальное имя узла. Поле максимальный_размер позволяет ограничить объем данных, передаваемых в течение одного сеанса обмена; например, значение 2m ограничивает объем данных двумя мегабайтами. Последнее поле содержит необязательные параметры, которые могут передаваться программе innxmit, выполняющей реальную передачу данных. Сведения об этих параметрах можно найти в справочной системе.

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

Установка опций, управляющих доступом к серверу

Сервер INN может управлять доступом со стороны других серверов и клиентов. Основной демон, innd, принимает обращения от внешних серверов, предоставляющих материалы групп новостей, и от других программ, входящих в состав пакета INN. Несмотря на то что innd также принимает обращения от клиентов, он практически сразу перенаправляет их другой программе. Поэтому в конфигурационном файле /etc/news/incoming.conf, который управляет установлением соединений с innd, указаны только локальный компьютер и серверы, выполняющие роль поставщиков новостей.

Атрибуты и их значения, задаваемые в файле incoming.conf, представлены в виде ключ : значение. Атрибуты могут быть объединены в записи (создаваемые с помощью ключевого слова peer); каждая запись описывает отдельный компьютер. (Глобальные атрибуты и их значения не включаются в записи.) Записи, в свою очередь, могут объединяться в группы. Для определения границ как записи, так и группы используются фигурные скобки. Пример файла incoming.conf для сервера, который получает материалы групп с одного сервера новостей, приведен в листинге 12.1.

Листинг 12.1. Пример файла incoming.conf

# Глобальные установки

streaming: true

max-connections: 50

# Allow NNTP posting from localhost

peer ME {

 hostname: "localhost, 127.0.0.1"

}

# Разрешение на передачу групп fiveroomco.com.

peer fiveroom {

 hostname : news.f iveroomco.com

 patterns: *,!threeroomco.*

}

Наиболее важным является ключ hostname. Он задет имя узла, которому разрешено устанавливать соединение с данным сервером. Чтобы определить список групп новостей, которые могут быть переданы, используется ключ patterns; при указании имен групп используются те же соглашения, что и при формировании файла newsfeeds. По умолчанию сервер принимает все группы новостей, предлагаемые поставщиком. Другие ключи описаны в справочной системе, на страницах, посвященных incoming.conf.

Управление доступом клиентов

Возможно, вы захотите осуществлять проверку пользователей на право доступа к вашему серверу. Поскольку innd привлекает к решению этой задачи другую программу, необходимые установки выполняются в файле /etc/news/nnrp.access. Каждая строка этого файла состоит из пяти полей, разделенных двоеточиями:

имя_узла: полномочия: имя_пользователя: пароль: группы_новостей

Назначение каждого поля описано ниже.

• имя_узла. В этом поле указывается имя или IP-адрес узла. В составе имени может использоваться символ *, определяющий групповую операцию. Так, например, выражение *.threeroomco. com описывает всех клиентов в пределах домена threeroomco. com. При указании IP-адреса можно задавать также маску подсети в виде IP-адрес/маска подсети, например 172.20.0.0/16.

• полномочия. В этом поле может содержаться одна или несколько следующих опций: R (чтение сообщений разрешено), P (передача сообщений разрешена), N (клиент может использовать команду NEWNEWS) и L (клиент может передавать сообщения даже в ту группу, в которые не могут посылать статьи локальные пользователи). Последние две опции переопределяют глобальные установки для конкретного клиента.

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

• пароль. Данное поле содержит пароль, требуемый для доступа к серверу.

• группы новостей. Для указания групп новостей можно использовать шаблоны, подобные тем, которые применяются в файле newsgroups. Это поле позволяет ограничить доступ узла к конкретным группам. Если оставить данное поле пустым, это означает, что клиенту не доступна ни одна группа. Для того чтобы клиент мог обращаться ко всем группам, надо указать символ *.

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

Опции, управляющие удалением сообщений

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

• шаблон. В данном поле помещается описание группы новостей. Подобно другим конфигурационным файлам, символ * определяет групповую операцию, т.е. выражение comp.os.* описывает всю категорию comp.os.

• флаг. В качестве флага используется символ, который указывает, что правило должно применяться только к модерируемым группам (M), только к немодерируемым группам (U) или ко всем группам (А).

• хранение. В составе сообщения может присутствовать поле заголовка Expires, в котором указывается срок действия этого сообщения. Значение, указанное в поле хранение, задает минимальный срок (число дней), в течение которого статья должна оставаться на сервере. Предположим, например, что в поле хранение содержится значение 6, а в поле заголовка Expires указано, что сообщение должно быть удалено через пять дней. В результате сообщение будет храниться в течение шести дней. Если бы при том же значении в поле хранение, в поле заголовка Expires был бы определен срок 7 дней, статья хранилась бы на сервере в течение семи дней. В рассматриваемом поле можно задавать не только целые числа, но и числа с плавающей точкой. Специальное значение never указывает на то, что срок действия статьи не ограничен. (Применяя значение never, будьте внимательны. Если оно будет указано для слишком большого количества статей, жесткий диск сервера быстро переполнится.)

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

• удаление. Если значение в поле хранения позволяет увеличить срок действия, указанный в поле заголовка Expires, то значение в поле удаление позволяет лишь уменьшить его. Например, если вы зададите в данном поле значение 10 и ваш сервер получит сообщение, поле Expires которого содержит значение 100, это сообщение будет удалено через десять дней. Подобно полям хранение и время_по_умолчанию, в поле удаление может быть задано число с плавающей точкой или специальное значение never.