The Usenet news protocol knows a special category of articles that
evoke certain responses or actions by the news system. These are called
control messages. They are recognized by the presence of a
Control: field in the article header, which contains the
name of the control operation to be performed. There are several types of them,
all of which are handled by shell scripts located in
/usr/lib/news/ctl.
Most of these messages perform their action automatically at the time the article
is processed by C News without notifying the newsmaster. By default, only
checkgroups messages will be handed
to the newsmaster, but you may change this by editing the scripts.
The most widely known message is cancel, with which a user can cancel an
article sent earlier. This effectively removes the article from the
spool directories, if it exists. The cancel message is forwarded to all sites
that receive news from the groups affected, regardless of whether the
article has been seen already. This takes into account the possibility
that the original article has been delayed over the cancellation
message. Some news systems allow users to cancel other people's
messages; this is, of course, a definite no-no.
Two messages dealing with creation or removal of newsgroups are the
newgroup and
rmgroup messages. Newsgroups below the
“usual” hierarchies may be created only after a discussion and
voting has been held among Usenet readers. The rules applying to the
alt hierarchy allow for something
close to anarchy. For more information, see the regular postings in
news.announce.newusers and
news.announce.newgroups. Never send
a newgroup or
rmgroup message yourself unless you
definitely know that you are allowed to.
checkgroups messages are sent by news
administrators to make all sites within a network synchronize their
active files with the realities of Usenet. For example,
commercial Internet Service Providers might send out such a message to their
customers' sites. Once a month, the “official”
checkgroups message for the major
hierarchies is posted to
comp.announce.newgroups by its
moderator. However, it is posted as an ordinary article, not as a control
message. To perform the checkgroups
operation, save this article to a file, say /tmp/check,
remove everything up to the beginning of the control message itself, and feed
it to the checkgroups script using the
following command:
# su news -c "/usr/lib/news/ctl/checkgroups" < /tmp/check |
This will update your newsgroups file from the new list
of groups, adding the groups
listed in localgroups. The old
newsgroups file will be moved to
newsgroups.bac. Note that posting the message locally
rarely works, because inews, the command that accepts
and posts articles from users, refuses to accept that large an article.
If C News finds mismatches between the
checkgroups list and the
active file, it produces a list of commands that
would bring your site up to date and mails it to the news administrator.
The output typically looks like this:
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 |
When you receive a message like this from your news system, don't
believe it automatically. Depending on who sent the
checkgroups message, it may lack a few
groups or even entire hierarchies; you should be careful about removing
any groups. If you find groups are listed as missing that you want to carry
at your site, you have to add them using the addgroup
script. Save the list of missing groups to a file and feed it to the
following little script:
#!/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 |
Finally, there are three messages that can be used to find out about
the network's topology. These are sendsys, version, and senduuname. They cause C News to return
the sys file to the sender, as well as a software
version string and the output of uuname,
respectively. C News is very laconic about version messages; it returns a simple,
unadorned C.
Again, you should never issue such a message unless you
have made sure that it cannot leave your (regional) network. Replies to
sendsys messages can quickly bring down
a UUCP network.[1]