INND (8)

NAME
     innd, inndstart - InterNetNews daemon

SYNOPSIS
     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 ]

DESCRIPTION
     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),  When  <config$HAVE_UNIX_DOMAIN>  ==  DO,  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) .
     When <config$HAVE_UNIX_DOMAIN> is not DO 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 <config$DEFAULT_TIMEOUT> (typically 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.  If <config$INND_NICE_KIDS> == DO,
     any sub-processes spawned by the server  will  get  a  nice(2)  value  of
     <config$INND_NICE_VALUE> (typically 4.)

OPTIONS

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

     -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 set
          by <config$DEFAULT_CONNECTIONS> (typically 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 set by <config$DEFAULT_CUTOFF>
          (typically 14.)

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

     -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
          behavior is set by <config$ALLOW_READERS>.

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

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

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

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  <config$_PATH_CONTROLPROGS>  directory
     (typically /usr/news/bin/control.)  (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
     <config$_PATH_BADCONTROLPROG> (typically 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 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 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 group.

     When <config$MERGE_TO_GROUPS> ==  DO,  if  an  article  is  posted  to  a
     newsgroup  that starts with the three letters ``to.'' it will get special
     treatment if the newsgroup 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''   maybe   followed   by   an   optional   ``active'',
          ``active.times'', or ``newsgroups'' argument.  This common extension
          is not fully supported; see nnrpd(8) .

     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  news.group/art[,news.group/art]'',   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''.

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.

     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.

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...
     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
          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 when <config$WANT_TRASH> == DO, 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.

HISTORY
     Written by Rich $alz  <rsalz@uunet.uu.net>  for  InterNetNews.   This  is
     revision 1.37, dated 1996/12/06.

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

You can find a summary and links related to this topic
as part of the Mib Software Usenet RKT.