Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

Глава 21. C-News

Одним из наиболее популярных пакетов программ для Netnews является C-News. Он было разработан для сайтов, которые работают с новостями через UUCP.

C-News хранит файлы настроек в /etc/news, большинство исполняемых модулей лежит в иерархии /usr/lib/news. Статьи хранятся в иерархии /var/spool/news. Все файлы в этих каталогах должны принадлежать пользователю news или группе news. Большинство проблем возникает из-за того, что C-News не имеет прав доступа к своим файлам. Прежде чем что-то править в них, используйте команду su, чтобы стать пользователем news. Исключением является программа setnewsids, которая используется для установки реального user ID для программ работы с новостями. Она должна принадлежать пользователю root и иметь бит setuid.

В этой главе я подробно опишу все файлы конфигурации C-News и покажу, что именно нужно делать для поддержания пакета в рабочем состоянии.

Доставка новостей

Статьи могут быть поданы C-News разными способами. Когда локальный пользователь отправляет по почте статью, newsreader (программа для работы с новостями) обычно вручает ее команде inews, которая заполняет информацию заголовка. Новости от отдаленного абонента, будь это одиночная статья или целый пакет, передаются команде rnews , которая сохраняет их в каталоге /var/spool/news/in.coming, откуда они будут подняты в более позднее время программой newsrun. Любым из этих двух методов статья будет в конечном счете вручена команде relaynews .

Для каждой статьи команда relaynews проверяет, была ли статья уже замечена на локальной машине, для чего ищет id сообщения в файле хронологии (history). Копии статьи будут пропущены. Затем relaynews рассматривает строку заголовка Newsgroups:, чтобы выяснить, запрашивает ли локальная машина статьи из любой из этих групп. Если она это делает, и группа новостей перечислена в файле active, relaynews пробует сохранить статью в соответствующем каталоге в области хранения новостей. Если этот каталог не существует, он будет создан. Id сообщения статьи будет зарегистрирован в файле history. В противном случае relaynews пропускает статью.

Если relaynews будет не в состоянии сохранить входящую статью, потому что группа, в которой она была зарегистрирована, не перечислена в вашем файле active, статья будет перемещаться в группу junk. relaynews также проверит старые или статьи без дат и уничтожит их. Входящие пакеты, которые терпят неудачу по любой другой причине, перемещаются в /var/spool/news/in.coming/bad , и регистрируется сообщение об ошибках.

После этого статья рассылается всем сайтам, запросившим новости из этой группы способом, специфичным для каждого конкретного сайта. Чтобы не посылать статью одному и тому же сайту несколько раз, проверяется поле Path: заголовка статьи, в нем указываются все машины, через которые прошла статья. Сайту будет послана статья, только если он не упомянут в этом поле.

C-News обычно используется, чтобы передавать новости между UUCP-машинами, хотя можно использовать его и в NNTP-среде. Чтобы доставить новости на удаленную UUCP-машину делается следующее: используется uux для вызова на удаленной машине команды rnews с последующей перекачкой статьи или набора статей на эту машину. Подробно UUCP рассматривается в главе 16.

Когда удаленный сайт поддерживает пакетирование, C-News не рассылает статьи поштучно, а добавляет имена их файлов в некий файл, обычно out.going/site/togo. Периодически из crontab вызывается программа пакетирования, которая записывает статьи в файл, сжимает их, если это задано, и отправляет rnews на удаленной машине.