Articles can be fed to C News in several ways. When a local user posts
an article, the newsreader usually hands it to the
inews command, which completes the header
information. News from remote sites, be it a single article or a whole
batch, is given to the rnews command, which stores
it in the /var/spool/news/in.coming directory,
from where it will be picked up at a later time by
newsrun. With any of these two techniques, however,
the article will eventually be handed to the
relaynews command.

For each article, the relaynews command first checks if the
article has already been seen at the local site by looking up the message ID
in the history file. Duplicate articles are dropped.
Then relaynews looks at the Newsgroups:
header line to find out if the local site requests articles from any of these
groups. If it does, and the newsgroup is listed in the
active file, relaynews tries to store
the article in the corresponding directory in the news spool area. If this
directory does not exist, it is created. The article's message ID is then
logged to the history file. Otherwise,
relaynews drops the article.

Sometimes relaynews fails to store an incoming
article because a group to which it has been posted is not listed in
your active file. In this case, the article is moved to the junk
group.[1]relaynews also checks for stale or misdated articles
and reject them. Incoming batches that fail for any other reason are moved
to /var/spool/news/in.coming/bad, and an error message
is logged.

After this, the article is relayed to all other sites that request news
from these groups, using the transport specified for each particular site. To
make sure an article isn't sent to a site that has already seen it, each
destination site is checked against the article's Path:
header field, which contains the list of sites the article has traversed so
far, written in the UUCP-style bang-path source-routing style described in
Chapter 17. If the destination site's name does not
appear in this list, the article is sent to it.

C News is commonly used to relay news between UUCP sites, although it is
also possible to use it in an NNTP environment. To deliver news to a remote
UUCP site, either in single articles or whole batches, uux
is used to execute the rnews command on the remote site and
feed the article or batch to it on standard input.
Refer to Chapter 16, for more information on UUCP.

Batching is the term used to describe sending large bundles of
individual articles all in one transmission. When batching is
enabled for a given site, C News does not send any incoming article
immediately; instead, it appends its path name to a file, usually called
out.going/site/togo. Periodically, a program is executed
from a crontab entry by the cron program,
which reads this file and bundles all of the listed articles into one or more
file, optionally compressing them and sending them to rnews
at the remote site.[2]

Figure 21-1 shows the news flow through
relaynews. Articles may be relayed to the local site
(denoted by ME), to a site named
ponderosa via email, and a site
named moria, for which batching is
enabled.

Figure 21-1. News flow through relaynews

Notes

There may be a difference
between the groups that exist at your site and those that your site
is willing to receive. For example, the subscription list might
specify comp.all, which
should send all newsgroups below the comp hierarchy, but at your site you
might not list several of the comp newsgroups in the
active file. Articles posted to those groups will
be moved to junk.