Newsreaders running on the same machine as the server (or having mounted
the server's news spool via NFS) can read articles from the
spool directly. To post an article composed by the user, they invoke the
inews program, which adds any header fields that are
missing and forwards them to the daemon via NNTP.
Alternatively, newsreaders can access the server remotely via
NNTP. This type of connection is handled differently from NNTP-based
news feeds, to avoid tying up the daemon. Whenever a newsreader
connects to the NNTP server, innd forks a
separate program called nnrpd, which handles
the session while innd returns to the more
important things (receiving incoming news, for
example).[1] You may be wondering how the
innd process can distinguish between an incoming
news feed and a connecting newsreader. The answer is quite simple: the
NNTP protocol requires that an NNTP-based newsreader issue a
mode reader command after connecting to the server;
when this command is received, the server starts the
nnrpd process, hands the connection to it, and
returns to listening for connections from another news server. There
used to be at least one DOS-based newsreader which was not configured
to do this, and hence failed miserably when talking to INN, because
innd itself does not recognize any of the commands
used to read news if it doesn't know the connection is from a news
reader.
We'll talk a little more about newsreader access to INN under
"Controlling Newsreader Access," later in the chapter.