Одним из наиболее популярных пакетов программ для Netnews является C-News.
Он было разработан для сайтов, которые работают с новостями через UUCP.
В этой главе я подробно опишу все файлы конфигурации 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 на удаленной машине.