Provided by: inn_1.7.2q-46build3_amd64 bug


       innd, inndstart - InterNetNews daemon


       innd  [ -a ] [ -c days ] [ -d ] [ -f ] [ -i count ] [ -o count ] [ -l size ] [ -m mode ] [
       -n flag ] [ -p port ] [ -r ] [ -s ] [ -S host ] [ -t timeout ] [ -u ] [ -x ] [ -L ] [ -N ]
       [ -H count ] [ -T count ] [ -X seconds ]

       inndstart [ flags ]


       Innd,  the  InterNetNews daemon, handles all incoming NNTP feeds.  It reads the active(5),
       newsfeeds(5), and hosts.nntp(5) files into memory.  It then opens the NNTP port to receive
       articles from remote sites (see the ``-p'' option), a Unix-domain stream socket to receive
       articles from local processes such as nnrpd(8) and rnews(1), and  a  Unix-domain  datagram
       socket  for  use  by  ctlinnd(8) 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 300 seconds.

       If innd gets an NOSPC 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.

       Any sub-processes spawned by the server will get a nice(2) value of 10.


       -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 running with
              the proper permissions and it will not call chown(2) on any files or directories it

       -t     Change the timeout period before flushing to timeoutseconds.

       -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.

       -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.

       -l     To limit the size of an article, use the ``-l'' flag.  If this flag is  used,  then
              any  article  bigger than size bytes will be rejected.  The default is no checking,
              which can also be obtained by using a value of zero.

       -c     Innd 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 default is 14 days.

       -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.

       -u     The logs are normally buffered; use the ``-u'' flag to have them unbuffered.

       -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,

       -r     If the ``-r'' flag is used, the server will  renumber  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 status if there
              are any errors; the actual errors will be reported in syslog(3).

       -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 running.  The default is to allow reading.

       -S     If the ``-S'' flag is used, then innd will run in ``slave'' mode.  When running  as
              a  slave,  the server will only accept articles from the specified host, which must
              use the ``xreplic'' protocol extension described below.  Note that  the  host  must
              either appear in the hosts.nntp file, or the server must be started with the ``-a''

       -a     By default, if a host if not mentioned in the hosts.nntp file, then the  connection
              is  handed off to nnrpd.  If the ``-a'' flag is used, then any host can connect and
              transfer articles.

       -L     If the ``-L'' flag is used, then innd will not create 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.

       -C     If  the  ``-C''  flag is used, then innd will accept and propagate but not actually
              process cancel or supercedes messages.  This is intended for sites concerned  about
              abuse   of   cancels  and  wish  to  use  another  cancel  mechanism  with  greater

       -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'' seconds.  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.

       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.


       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   /usr/lib/news/control
       directory.   (Cancel  messages  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 and
       used as the name of the program to execute; if the named program does not  exist,  then  a
       program named default is executed.

       All  control  programs  are invoked with four parameters.  The first is the address of the
       person who posted the message; 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 parameter will be a name under which the article is
       filed, relative to the news spool directory.  The fourth parameter is the host  that  sent
       the article, as specified on the Path line.

       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

       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  subscribe  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


       Innd implements the NNTP commands defined in RFC 977, with the following differences:

       1.     The ``list''  maybe  followed  by  an  optional  ``active'',  ``active.times'',  or
              ``newsgroups''  argument.   This  common  extension  is  not  fully  supported; see

       2.     The ``authinfo user'' and ``authinfo pass'' commands are  implemented.   These  are
              based on the reference Unix implementation; no other documentation is available.

       3.     A new command, ``mode reader'', is provided.  This command will cause the server to
              pass the connection on to nnrpd.  The command ``mode query'' is intended for future
              use, and is currently treated the same way.

       4.     A  new  command, ``xreplic[,]'', is provided.  This is
              similar to the ``ihave'' command (the same reply codes are  used)  except  for  the
              data  that  follows  the command word.  The data consists of entries separated by a
              single comma.  Each entry consists of a newsgroup name, a  slash,  and  an  article
              number.   Once  processed,  the  article will be filed in the newsgroup and article
              numbers specified in the command.

       5.     A new command, ``xpath messageid'', is provided.  The server responds  with  a  223
              response and a space-separated list of filenames where the article was filed.

       6.     The  only  other  commands implemented are ``head'', ``help'', ``ihave'', ``quit'',
              and ``stat''.


       Innd modifies as few article headers as possible, although it  could  be  better  in  this

       The following headers, if present, are removed:
       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.

       The Xref header is removed.  If the article is cross-posted a new header is generated.

       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.


       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...
       The first three fields are the date and time to millisecond 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-separated 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 "%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 information.

       Note  that  if  an  article  is  accepted 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 ``ME'' if the message relates to the server itself, such as when  a
       read error occurs.

       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 information.

       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'' generally
       indicates an internal logic error.


       Written by Rich $alz <> for InterNetNews.  This is revision 1.37,  dated


       active(5),  ctlinnd(8),  crosspost(8),  dbz(3z),  history(5),  hosts.nntp(5), inn.conf(5),
       newsfeeds(5), nnrpd(8), rnews(1), syslog(8).