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), 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  stan-
     dard 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 data-
     base, 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 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 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 disassoci-
          ates 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  fore-
          ground.

     -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 run-
          ning 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 news-
          reading  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'' 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 mechan-
          ism 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  Sub-
     ject  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/local/news/bin/control  directory.   (Cancel   messages
     update  the history database, so they must be handled inter-
     nally; 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 pro-
     gram 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  mes-
     sage 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 addi-
     tional 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.


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 com-
          mand 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  whi-
     tespace 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 arti-
     cle (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  informa-
     tion.

     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 per-
     formed.  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 indi-
     cates 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).

















Man(1) output converted with man2html