INND(8)INND(8)NAME
innd, inndstart - InterNetNews daemon
SYNOPSISinnd [ -a ] [ -c days ] [ -C ] [ -d ] [ -f ] [ -H count ]
[ -i count ] [ -IIP_address ] [ -l size ] [ -L ] [ -m mode
] [ -n flag ] [ -o count ] [ -pfd_desc ] [ -Pport ] [ -r ]
[ -s ] [ -t timeout ] [ -T count ] [ -u ] [ -X seconds ] [
-Z ]
inndstart [ flags ]
DESCRIPTION
Innd, the InterNetNews daemon, handles all incoming NNTP
feeds. It reads the active(5), newsfeeds(5), and incom-
ing.conf(5) files into memory. It then opens the NNTP
port to receive articles from remote sites (see the ``-p''
option), If <HAVE_UNIX_DOMAIN_SOCKETS in include/config.h>
is defined, a Unix-domain stream socket to receive arti-
cles from local processes such as nnrpd(8) and rnews(1),
and a Unix-domain datagram socket for use by ctlinnd(8).
If <HAVE_UNIX_DOMAIN_SOCKETS in include/config.h> is not
defined, named pipes are used instead. Ctlinnd(8) is used
to direct the server to perform certain actions. It also
opens the history(5) database and two log files to replace
its standard output and standard error.
Once the files and sockets have been opened, innd waits
for connections and data to be ready on its ports by using
select(2) and non-blocking I/O. If no data is available,
then it will flush its in-core data structures. The
default number of seconds to timeout before flushing is
set as <DEFAULT_TIMEOUT in config.data> (typically 300)
seconds.
If innd gets an ENOSPC error (see intro(2)) while trying
to write the active file, an article file, or the history
database, it will send itself a ``throttle'' command.
This will also happen if it gets too many I/O errors while
writing to any files.
OPTIONS-a By default, if a host if not mentioned in the
incoming.conf file, then the connection is handed
off to nnrpd. If the ``-a'' flag is used, then any
host can connect and transfer articles.
-cinnd rejects articles that are too old. While this
behavior can be controlled by the history database,
occasionally a site dumps a batch of very old news
back onto the network. Use the ``-c'' flag to
specify a cutoff. For example ``-c21'' will reject
any articles that were posted more than 21 days
ago. A value of zero will suppress this check. The
1
INND(8)INND(8)
default is 14 days, but can be changed with the
``artcutoff'' option in inn.conf(5)-C If the ``-C'' flag is used, then innd will accept
and propagate but not actually process cancel or
supersedes messages. This is intended for sites
concerned about abuse of cancels and wish to use
another cancel mechanism with greater authentica-
tion.
-d -f Innd normally puts itself into the background, sets
its standard output and error to log files, and
disassociates itself from the terminal. Using the
``-d'' flag instructs the server to not do this,
while using the ``-f'' flag just leaves the server
running the foreground.
-H -T -X
The ``-H'', ``-T'', and ``-X'' flags control the
number of connects per minute allowed. This code
is meant to protect your server from newsreader
clients that make too many connects per minute to
your server. You should probably not use it unless
you are having a problem. The table used for these
checks is fixed at 128 entries and is used as a
ring. The size was chosen to make calculating the
index easy and to be pretty sure you won't run out
of space. In practice, it is doubtful that you
will use even half the table at any given moment.
The ``-H'' flag limits the number of times a host
is allowed to connect to the server per ``-X'' sec-
onds. The default is 2.
The ``-T'' flag limits the total number of incoming
connects to innd per ``-X'' seconds. The maximum
value is 128. The default is 60.
The ``-X'' sets the number of seconds used by the
``-H'' and ``-T'' flags. A value of zero turns off
checking. The default is 0.
-i To limit the number of incoming NNTP connections,
use the ``-i'' flag. A value of zero will suppress
this check. The default is 50, if the ``maxconnec-
tions'' option in inn.conf(5) is not specified.
The ``maxconnections'' option in inn.conf(5) is
changed with this value.
-I This option allows you to bind innd to a specific
interface IP address. The IP address must be in
dotted quad (nnn.nnn.nnn.nnn) format. See also the
``bindaddress'' option in inn.conf(5)
2
INND(8)INND(8)-l To limit the size of an article, use the ``-l''
flag. If this flag is used, then any article big-
ger than size bytes will be rejected. The default
is 1000000L bytes. Checking can be disabled by
using a value of zero.
-L If the ``-L'' flag is used, then innd will not cre-
ate the links for cross posted articles. A feed
only type of site could use this option to improve
performance. Or it can be combined with a channel
feed to the crosspost(8) program to move the delay
associated with creating the links out of the innd
processing loop.
-m To start the server in a paused or throttled state
(see ctlinnd(8)) use the ``-m'' flag to set the
initial running mode. The argument should start
with a single letter g, p, or t, to emulate the
``go,'' ``pause,'' or ``throttle'' commands,
respectively.
-n The ``-n'' flag specifies whether or not pausing or
throttling the server should also disable future
newsreading processes. A value of ``y'' will make
newreaders act as the server, a value of ``n'' will
allow newsreading even when the server is not run-
ning. The default is to allow reading, but can
also be changed with the ``readerswhenstopped''
option in inn.conf(5)-o To limit the number of files that will be kept open
for outgoing file feeds, use the ``-o'' flag. The
default is the number of available descriptors
minus some reserved for internal use.
-p If the ``-p'' flag is used, then the NNTP port is
assumed to be open on the specified descriptor.
(If this flag is used, then innd assumes it is run-
ning with the proper permissions and it will not
call chown(2) on any files or directories it cre-
ates.)
-P If the ``-P'' flag is used, then the port specified
is used for listening for connections. innd will
need to have been executed with enough permissions
to open the specified port.
-r If the ``-r'' flag is used, the server will renum-
ber the active file as if a ``renumber'' command
were sent.
-s If the ``-s'' flag is used, then innd will not do
any work but will instead just check the syntax of
the newsfeeds file. It will exit with an error
3
INND(8)INND(8)
status if there are any errors; the actual errors
will be reported in syslog(3).
-t Change the timeout period before flushing to time-
out seconds.
-u The logs are normally buffered; use the ``-u'' flag
to have them unbuffered.
-Z The ``-Z'' flag turns off streaming, so that innd
will not accept the `mode stream' or other stream-
ing commands.
Inndstart is a small front-end program that opens the NNTP
port, sets its userid and groupid to the news maintainer,
and then execs innd with the ``-p'' flag and a minimal
secure, environment. This is a small, easily-understood
front-end program that can be used if a site does not want
to run innd with root privileges.
CONTROL MESSAGES
Arriving articles that have a Control header or have a
Subject header that starts with the five characters
``cmsg '' are called control messages. Except for the
cancel message, these messages are implemented by external
programs in the <pathcontrol in inn.conf> directory, if
<usecontrolchan in inn.conf> is ``false''. (Cancel mes-
sages update the history database, so they must be handled
internally; the cost of syncing, locking, then unlocking
would be too high given the number of cancel messages that
are received.)
When a control message arrives, the first word of the text
is converted to lowercase except for ``cancel'' and used
as the name of the program to execute; if the named pro-
gram does not exist, then a program named <pathcontrol in
inn.conf>/default is executed.
All control programs are invoked with four parameters.
The first is the address of the person who posted the mes-
sage; this is taken from the Sender header. If that
header is empty, then it is taken from the From header.
The second parameter is the address to send replies to;
this is taken from the Reply-To header. If that header is
empty then the poster's address is used. The third param-
eter will be a name under which the article is filed, rel-
ative to the news spool directory. The fourth parameter
is the host that sent the article, as specified on the
Path line.
If <usecontrolchan in inn.conf> is ``true'', all control
messages except for the cancel will never processed by
external program fork'ed by innd. Instead they can be
processed by controlchan script which is invoked as
4
INND(8)INND(8)
channel program by innd, and you need to setup news-
feeds(5) to use this script. Processing by controlchan
can reduce excessive load if many control messages arrive
in a short time.
The distribution of control message is also different from
those of standard articles.
Control messages are normally filed in the newsgroup named
control. They can be filed in subgroups, however, based
on the control message command. For example, a newgroup
message will be filed in control.newgroup if that group
exists, otherwise it will be filed in control.
Sites may explicitly have the ``control'' newsgroup in
their subscription list, although it is usually best to
exclude it. If a control message is posted to a group
whose name ends with the four characters ``.ctl'' then the
suffix is stripped off and what is left is used as the
group name. For example, a cancel message posted to
``news.admin.ctl'' will be sent to all sites that sub-
scribe to ``control'' or ``news.admin.'' Newgroup and
rmgroup messages receive additional special treatment. If
the message is approved and posted to the name of the
group being created or removed, then the message will be
sent to all sites whose subscription patterns would cause
them to receive articles posted in that group.
If <mergetogroups in inn.conf> is ``true'', if an article
is posted to a newsgroup that starts with the three let-
ters ``to.'' it will get special treatment if the news-
group does not exist in the active file: the article is
filed into the newsgroup ``to'' and it is sent to the
first site named after the prefix. For example, a posting
to ``to.uunet'' will be filed in ``to'' and sent to the
site ``uunet.''
PROTOCOL DIFFERENCES
Innd implements the NNTP commands defined in RFC 977, with
the following differences:
1. The ``list'' may be followed by an optional
``active'', ``active.times'', ``newsgroups'' or
``subscription'' argument. This common extension
is not fully supported; see nnrpd(8).
2. The ``authinfo user'' and ``authinfo pass'' com-
mands are implemented. These are based on the ref-
erence Unix implementation; see draft-barber-nntp-
imp-07.txt for more detail.
3. A new command, ``mode reader'', is provided. This
command will cause the server to pass the connec-
tion on to nnrpd. The command ``mode query'' is
5
INND(8)INND(8)
intended for future use, and is currently treated
the same way.
4. The commands to support streaming transfer ``check
messageid'' and ``takethis messageid'' are pro-
vided.
5. A batch transfer command ``xbatch byte-count'' is
also provided. This command will read byte-count
bytes and store them for later processing by
rnews(1) (which must be started separately). See
the programs innxbatch and sendxbatches.sh.
6. The only other commands implemented are ``head'' ,
``help'' , ``ihave'' , ``quit'' , and ``stat''.
HEADER MODIFICATIONS
Innd modifies as few article headers as possible, although
it could be better in this area.
The following headers, if present, are removed:
Date-Received
Posted
Posting-Version
Received
Relay-Version
Empty headers and headers that consist of nothing but
whitespace are also dropped.
The local site's name (as determined by the ``pathhost''
value in inn.conf(5)) and an exclamation point are
prepended to the Path header, if the first site's name in
the header is different from local one.
The Xref header is removed and a new one created.
The Lines header will be added if it is missing.
Innd does not rewrite incorrect headers. For example, it
will not replace an incorrect Lines header, but will
reject the article.
LOGGING
Innd reports all incoming articles in its log file. This
is a text file with a variable number of space-separated
fields in one of the following formats:
mon dd hh:mm:ss.mmm + feed <Message-ID> site...
mon dd hh:mm:ss.mmm j feed <Message-ID> site...
mon dd hh:mm:ss.mmm c feed <Message-ID> site...
mon dd hh:mm:ss.mmm - feed <Message-ID> reason...
There can also be a hostname and size field after the Mes-
sage-ID depending on the ``nntplinklog'' and ``logsize''
options in inn.conf(5)
6
INND(8)INND(8)
The first three fields are the date and time to millisec-
ond resolution. The fifth field is the site that sent the
article (based on the Path header) and the sixth field is
the article's Message-ID; they will be a question mark if
the information is not available.
The fourth field indicates whether the article was
accepted or not. If it is a plus sign, then the article
was accepted. If it is the letter ``j'' then the article
was accepted, but all of newsgroups have an ``j'' in their
active field, so the article was filed into the ``junk''
newsgroup. If the fourth field is the letter ``c'', then
a cancel message was accepted before the original article
arrived. In all three cases, the article has been
accepted and the ``site...'' field contains the space-sep-
arated list of sites to which the article is being sent.
If the fourth field is a minus sign, then the article was
rejected. The reasons for rejection include:
"%s" header too long
"%s" wants to cancel <%s> by "%s"
Article exceeds local limit of %s bytes
Article posted in the future -- "%s"
Bad "%s" header
Can't write history
Duplicate
Duplicate "%s" header
EOF in headers
Linecount %s != %s +- %s
Missing %s header
No body
No colon-space in "%s" header
No space
Space before colon in "%s" header
Too old -- "%s"
Unapproved for "%s"
Unwanted newsgroup "%s"
Unwanted distribution "%s"
Whitespace in "Newsgroups" header -- "%s"
Where ``%s'', above, is replaced by more specific informa-
tion.
Note that if an article is accepted, and <wanttrash in
inn.conf> is set to ``yes'' and none of the newsgroups are
valid, it will be logged with two lines, a ``j'' line and
a minus sign line.
Innd also makes extensive reports through syslog. The
first word of the log message will be the name of the site
if the entry is site-specific (such as a ``connected''
message). The first word will be ``SERVER'' if the mes-
sage relates to the server itself, such as when a read
error occurs.
7
INND(8)INND(8)
If the second word is the four letters ``cant'' then an
error is being reported. In this case, the next two words
generally name the system call or library routine that
failed, and the object upon which the action was being
performed. The rest of the line may contain other infor-
mation.
In other cases, the second word attempts to summarize what
change has been made, while the rest of the line gives
more specific information. The word ``internal'' gener-
ally indicates an internal logic error.
SIGNALS
Innd will catch SIGTERM and SIGDANGER and then it will
shutdown. If ``-d'' flag is used, SIGINT also will be
catched and innd will shutdown.
Innd will catch SIGUSR1 signal and recreate the control
channel which is typically used for ctlinnd(8).
HISTORY
Written by Rich $alz <rsalz@uunet.uu.net> for InterNet-
News. This is revision 1.1.2.1, dated 1999/06/12.
SEE ALSOactive(5), ctlinnd(8), crosspost(8), dbz(3), history(5),
incoming.conf(5), inn.conf(5), newsfeeds(5), nnrpd(8),
rnews(1), syslog(8).
8