Протокол новостей Usenet знает специальный класс статей, которые вызывают
некоторые ответы или действия системы новостей. Они называются сообщениями
control. Они распознаются присутствием поля
Control: в заголовке статьи, которое
содержит имя операции управления, которую нужно выполнить. Имеются отдельные
типы этих операций, которые обрабатываются командами оболочки, расположенными
в /usr/lib/news/ctl.
Большинство из них выполнит свое действие автоматически во время
обработки статьи C-News, без уведомления newsmaster. По умолчанию только
сообщения checkgroups будут вручены
newsmaster, но Вы можете изменить это, редактируя скрипты.
Наиболее широко известное сообщение cancel
, которым пользователь может отменять статью, посланную ранее. Оно
действительно удаляет статью из каталогов spool, если она существует.
Сообщение cancel будет послано всем
абонентам, которые получают новости из заданных групп независимо от того,
была ли статья уже замечена или еще нет. Нужно принять во внимание
возможность того, что первоначальная статья была отсрочена, несмотря на
сообщение сокращения. Некоторые системы новостей позволяют пользователям
отменять сообщения другого автора, это определенный минус.
Два сообщения имеют дело с созданием или удалением newsgroups: это
newgroup и rmgroup
. Newsgroups ниже "обычной" иерархии могут быть созданы только после
того, как среди читателей Usenet было проведено обсуждение и утверждение.
Правила для иерархии alt представляют собой
что-то близкое к анархии. Для подробной информации см. регулярные регистрации
в news.announce.newusers и
news.announce.newgroups. Никогда не посылайте
сообщение newgroup или
rmgroup самостоятельно, если Вы определенно
не знаете, что Вам позволено.
Сообщения checkgroups посылаются
администраторами новостей, чтобы для всех абонентов внутри сети
синхронизировать их файлы active с фактическим
положением дел в Usenet. Например, коммерческие поставщики услуг Internet
могли бы выпускать такое сообщение к своим абонентам. Один раз в месяц
"официальное" сообщение checkgroups для
главных иерархий отсылается в
comp.announce.newgroups их модератором. Однако оно зарегистрировано
как обычная статья, а не как управляющее сообщение. Чтобы выполнить операцию
checkgroups, сохраните эту статью в файле,
скажем, /tmp/check, удалите все до начала сообщения
управления и передайте его скрипту checkgroups
, используя следующую команду:
# su news -c "/usr/lib/news/ctl/checkgroups" < /tmp/check
|
Это модифицирует Ваш файл newsgroups, добавляя
группы, перечисленные в localgroups. Старый файл
newsgroups будет перемещаться в
newsgroups.bac. Обратите внимание, что регистрация
сообщения локально редко будет работать, потому что inews
отказывается принимать это как статью.
Если C-News находит несоответствия между списком
checkgroups и файлом active, он выдаст
список команд, которые модернизируют Ваш сервер и сообщат это администратору
новостей. Вывод обычно походит на это:
From news Sun Jan 30 16:18:11 1994
Date: Sun, 30 Jan 94 16:18 MET
From: news (News Subsystem)
To: usenet
Subject: Problems with your active file
The following newsgroups are not valid and should be removed.
alt.ascii-art
bionet.molbio.gene-org
comp.windows.x.intrisics
de.answers
You can do this by executing the commands:
/usr/lib/news/maint/delgroup alt.ascii-art
/usr/lib/news/maint/delgroup bionet.molbio.gene-org
/usr/lib/news/maint/delgroup comp.windows.x.intrisics
/usr/lib/news/maint/delgroup de.answers
The following newsgroups were missing.
comp.binaries.cbm
comp.databases.rdb
comp.os.geos
comp.os.qnx
comp.unix.user-friendly
misc.legal.moderated
news.newsites
soc.culture.scientists
talk.politics.crypto
talk.politics.tibet
|
Когда Вы получаете такое сообщение от вашей системы новостей, не
отбрасывайте его вслепую. В зависимости от того, кто послал сообщение
checkgroups, оно может испытывать недостаток
нескольких групп или даже всех иерархий; так что Вы должны быть осторожны
относительно удаления любых групп. Если Вы находите группы, перечисленные как
отсутствующие, и Вы хотите иметь их на сервере, Вы должны добавить их,
используя скрипт addgroup. Сохраните список
отсутствующих групп в файле и передайте его следующему небольшому скрипту:
#!/bin/sh
#
WHOIAM=`whoami`
if [ "$WHOIAM" != "news" ] then
echo "You must run $0 as user 'news'" >&2
exit 1
fi
#
cd /usr/lib/news
while read group; do
if grep -si "^$group[[:space:]].*moderated" newsgroup; then
mod=m
else
mod=y
fi
/usr/lib/news/maint/addgroup $group $mod
done
|
В заключение, имеются три сообщения, которые могут использоваться, чтобы
выяснить топологию сети. Это sendsys,
version и senduuname
. Они заставляют C-News возвращать отправителю файл
sys, версию программного обеспечения и вывод
uuname, соответственно. C-News очень лаконичен
относительно сообщения version; он возвращает
просто C.
Вы никогда не должны выдавать такое сообщение,
если Вы не уверены, что это не может повредить Вашей региональной сети.
Ответы сообщениям sendsys могут быстро
положить сеть UUCP.