Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
INND(8) 		   InterNetNews Documentation			 INND(8)

NAME
     innd - InterNetNews daemon

SYNOPSIS
     innd  [-adfNrsSu] [-4 address] [-6 address] [-c days] [-H count] [-i count]
     [-l size] [-m mode] [-n flag] [-o count] [-P port] [-t timeout] [-T  count]
     [-X seconds]

DESCRIPTION
     innd, the InterNetNews daemon, handles all incoming NNTP feeds, coordinates
     the storage, retransmission, and overview generation for all accepted arti-
     cles,  and  manages the active(5) and history(5) databases.  It handles in-
     coming connections on the NNTP port, and also creates and listens to a  lo-
     cal  Unix-domain  stream  socket  in  order  to receive articles from local
     processes such as nnrpd(8) and rnews(1).

     As the master daemon, innd should generally be started at boot and  be  al-
     ways  running.  It listens to a Unix-domain datagram socket for commands to
     control its activities, commands that can be sent	using  ctlinnd(8).   The
     current  status  of  innd can be obtained by running "ctlinnd mode", or for
     more detailed output, innstat(8).

     innd can be in one of three operating modes: running, paused, or throttled.
     Running is the normal mode; when the server is throttled, it closes connec-
     tions and rejects new ones.  Paused is like a temporary throttle,	suspend-
     ing innd's activities but not causing the server to shut down existing con-
     nections.	 The  mode is normally changed via ctlinnd(8), either by various
     automated processes (such as nightly article expiration) or manually by the
     news administrator, but innd will also throttle  itself  if  it  encounters
     ENOSPC  errors  in writing data or an excessive number of I/O errors (among
     other problems).

     innd normally takes care of spawning nnrpd(8) to  handle  connections  from
     news reading clients, but it can be run on a separate port from nnrpd(8) so
     that  feed  connections and news reading connections are handled separately
     (this can often be faster).  Normally, innd listens on port  119,	the  as-
     signed  port for NNTP; if it is desirable to run innd and nnrpd(8) on sepa-
     rate ports, it's recommended that nnrpd(8) be given port  119  (since  many
     news  reading  clients connect only to that port) and that port 433 be used
     for innd.

     The primary configuration files that control innd's activities  are  incom-
     ing.conf,	which  specifies  what remote sites innd will accept connections
     from, newsfeeds, which specifies what is to be done with incoming	articles
     besides storing them, and inn.conf, which sets a wide variety of configura-
     tion  parameters.	Some parameters in inn.conf(5) can also be set with com-
     mand-line flags; for these, the command-line flags take precedence if used.

     innd must be run as the news user and news group.	It will check  for  this
     at  startup  and  fail to start if not run properly.  Normally it should be
     started via rc.news(8) as part of the system boot up process.  It relies on
     the setuid root helper program innbind(8) to listen on  a	privileged  port
     (119, 433 or 563).

OPTIONS
     For  the options below that override inn.conf settings, see inn.conf(5) for
     the default values if neither the inn.conf setting nor the command-line op-
     tion is given.

     -4 address
	 Normally, innd binds to all local IP addresses (unless  bindaddress  is
	 set in inn.conf).  If this option is given, it specifies the IP address
	 that INN should bind as.  This is only relevant for servers with multi-
	 ple  local  IP  addresses.   The  IP  address	must  be  in dotted-quad
	 ("nnn.nnn.nnn.nnn") format.

	 If this option is specified, it's the same as	setting  bindaddress  in
	 inn.conf  and may cause changes in whether INN binds to an IPv6 address
	 as well.  See inn.conf(5) for more details and also  the  -6  flag  for
	 innd.

	 This option has no effect when systemd socket activation is used.

     -6 address
	 Only  applies when INN has been built with IPv6 support.  Normally innd
	 binds to  all	local  IP  addresses  (unless  bindaddress6  is  set  in
	 inn.conf).  If this option is given, it specifies the IPv6 address that
	 INN  should  bind  to.   The  IPv6  address  must be in colon-separated
	 RFC 4291 format ("n:n:n:n:n:n:n:n").

	 If this option is specified, it's the same as setting	bindaddress6  in
	 inn.conf  and may cause changes in whether INN binds to an IPv4 address
	 as well.  See inn.conf(5) for more details and also  the  -4  flag  for
	 innd.

	 This option has no effect when systemd socket activation is used.

     -a  By  default,  if  a  host  connects to innd but is not listed in incom-
	 ing.conf, the connection is handed off to nnrpd (or rejected  if  nore-
	 ader is set in inn.conf).  If -a is given, incoming.conf is ignored and
	 any  host can connect and transfer articles.  This flag should never be
	 used with an accessible server connected to Usenet; it would  open  the
	 server up for all sorts of abuse.

     -c days
	 innd  normally  rejects  any  article	that is older (in days) than the
	 value of artcutoff in inn.conf.  This option, if given,  overrides  the
	 value of that setting.  If days is 0, this check is suppressed and innd
	 will accept articles regardless of how old they are.

	 Note  that  rejected  articles are remembered during the number of days
	 specified by the "/remember/" line in expire.ctl(5).	You'll	have  to
	 wait  that  number of days before being able to inject again an article
	 with the same previously rejected Message-ID.

	 In case you need re-injecting articles  before  that  amount  of  time,
	 you'll  have  to  set	"/remember/"  to 0 in expire.ctl, run the expire
	 process (for instance via news.daily called with the same parameters as
	 in crontab, plus "notdaily") and undo the change  in  expire.ctl.   All
	 previously  rejected or removed articles will then not be considered as
	 duplicate if their Message-ID is proposed.

     -d, -f
	 innd normally puts itself into the background, points its standard out-
	 put and error to log files, and disassociates itself from the terminal.
	 Using -d prevents all of this, resulting in log messages being  written
	 to standard output; this is generally useful only for debugging.  Using
	 -f  prevents  the  backgrounding and disassociation but still redirects
	 output; it may be useful if you want to monitor  innd	with  a  program
	 that would be confused by forks.

     -H count, -T count, -X seconds
	 These	flags control the number of connections per seconds seconds that
	 are allowed.  This code is meant to protect your server from newsreader
	 clients that make too many connections per minute (and therefore  these
	 flags are probably only useful when innd is spawning nnrpd).  You prob-
	 ably  should  not use these options unless you're having problems.  The
	 table used for this check is fixed at 128 entries  and  is  used  as  a
	 ring;	the size was chosen to make calculating the index easy and to be
	 fairly sure that it won't run out of space.  In  practice,  it  is  un-
	 likely that even half the table will be used at any given moment.

	 The  -H flag limits the number of times a host is allowed to connect to
	 the server per the time interval given by -X.	The default is 2.

	 The -T flag limits the total number of  incoming  connections	per  the
	 time  interval  given by -X.  The maximum value is 128, and the default
	 is 60.

	 Note that the time interval given by -X is set to 0 by default, that is
	 to say no control is done on the number of connections.

     -i count
	 innd normally allows a maximum number of  concurrent  NNTP  connections
	 given	by  the  value	of  maxconnections in inn.conf.  This option, if
	 given, overrides the value of that setting.  If count is 0, this  check
	 is suppressed.

     -l size
	 innd  normally  rejects any article larger than the value of maxartsize
	 in inn.conf.  This option, if given, overrides the value of  that  set-
	 ting  and specifies a maximum article size of size.  If size is 0, this
	 check is suppressed.

     -m mode
	 Normally, innd starts in the "running" mode.  If this option is  given,
	 it  specifies	what  mode innd should start in.  mode should begin with
	 one of "g", "p", or "t", and the starting mode will  be  set  to  "run-
	 ning",  "paused",  or	"throttled", respectively, based on that initial
	 letter.  ("g" is short for "go".)

     -N  If this option is given, any filters (Perl or Python) are disabled  be-
	 fore  innd  starts  (normally,  filters default to being enabled).  The
	 filters can be enabled after innd has started with ctlinnd(8).

     -n flag
	 Whether innd allows (and hands off to nnrpd) reader  connections  while
	 paused or throttled is normally determined by the value of readerswhen-
	 stopped  in inn.conf.	This option, if given, overrides that value.  If
	 flag is "n", innd will not allow readers if it is paused or  throttled.
	 If  flag is "y", readers will be allowed regardless of innd's operating
	 mode.

     -o count
	 This flag limits the number of file descriptors that are available  for
	 outgoing  file  feeds.  The default is the number of available file de-
	 scriptors minus some reserved for internal use (which could potentially
	 starve innd of descriptors to use for accepting new  connections).   If
	 innd  has more file feeds than count, some of them will be buffered and
	 only written out periodically.

	 Normally you never need to use this option, since the number of  outgo-
	 ing  feeds is fixed, being the number of file feeds configured in news-
	 feeds, and is generally small (particularly given  that  innfeed(8)  is
	 now used for most outgoing feeds at large sites).

     -P port
	 The  port  innd should listen on is normally given by the value of port
	 in inn.conf.  This option, if given, overrides that value and specifies
	 the port that innd should bind to.

     -r  Instructs innd to renumber the active file after starting, just as if a
	 "ctlinnd renumber" command were sent.

     -s  Just check the syntax of the newsfeeds file and exit.	innd  will  exit
	 with  a non-zero status if any errors are found; the actual errors will
	 be reported via syslog(3).

     -S  Report errors found in incoming.conf via syslog(3) and  exit  normally.
	 (Yes, this is less useful than it should be.)

     -t seconds
	 Normally,  innd  will	flush any changes to history and the active file
	 after 300 seconds of inactivity.  This option changes that  timeout  to
	 seconds.

     -u  The news log (the trace information for every article accepted by innd)
	 is normally buffered.	This option changes the log to be unbuffered.

CONTROL MESSAGES
     Arriving articles that have a Control header field are called "control mes-
     sages".   Except  for  cancel  messages, these messages are handled by con-
     trolchan(8) via a feed set up in newsfeeds.

     (Cancel messages update the history database, so they must be  handled  in-
     ternally;	the  cost  of syncing, locking, then unlocking would be too high
     given the number of cancel messages that are received.  Note that if an ar-
     ticle is cancelled before it is received by the news server, it will be re-
     jected when it arrives since the history database has been updated;  it  is
     useful for rejecting spam before it arrives.)

     The distribution of control messages is different than that of standard ar-
     ticles.   Control	messages  are  normally  filed into the pseudo-newsgroup
     named "control" regardless of which newsgroup they were actually posted to.
     If, however, a "control."command newsgroup exists that matches the  control
     command,  the  control  message will be filed into that group instead.  For
     example, a newgroup control message will be filed in "control.newgroup"  if
     that group exists; otherwise, it will be filed in "control".

     If  you  want to specifically feed all control messages to a given site re-
     gardless of whether the control messages would affect the newsgroups you're
     feeding that site, you can put the appropriate  control  newsgroup  in  the
     subscription list.  For example, to feed all cancel messages to a given re-
     mote  site  (normally a bad idea), add "control.cancel" to its subscription
     list.  Normally it's best to exclude the control newsgroups from  feeds  to
     keep  from  sending  your peers more control messages than they care about.
     That's why the newsfeeds pattern "!control,!control.*" is as often  as  not
     specified (adding this pattern do not prevent control messages which affect
     the newsgroups fed to a site from being sent to it).

     checkgroups,  newgroup and rmgroup control messages receive additional spe-
     cial treatment.  If one of these control messages is approved and posted to
     the newsgroup being created or removed (or to the admin group to which  the
     checkgroups  is  posted),	the message will be sent to all sites whose sub-
     scription patterns would cause them to  receive  articles	posted	to  that
     group.   For example, if a newgroup control message for a nonexistent news-
     group "news.admin.meow" is received, it will be sent to any site whose sub-
     scription pattern would cause it to receive "news.admin.meow" if that news-
     group existed (such as a pattern of "news.admin.*").  For this  reason,  it
     is correct to post newgroup messages to the newsgroup that the control mes-
     sage  would create.  It is not generally correct to crosspost newgroup mes-
     sages to some "well-propagated" newsgroup; not only will this not	actually
     improve  their propagation to sites that want such control messages, but it
     will also cause sites that do not want those control  messages  to  receive
     them.   Therefore,  assuming that a newgroup control message is sent to the
     group "news.admin.meow" (specified in the Newsgroups header field body)  in
     order  to	create the group "news.admin.meow", the sites with the following
     subscription patterns will receive it:

	 *,@news.*
	 news.*
	 news.*,!control,!control.*
	 control,control.*

     As a matter of fact, for the first pattern,  "control.newgroup"  (or  "con-
     trol") is included in "*".  However, the sites with the following subscrip-
     tion patterns will not receive it:

	 *,@news.*,!control,!control.*
	 comp.*,@news.*

     If  a  control  message  is posted to a group whose name ends with the four
     characters ".ctl", this suffix is stripped off and the control  message  is
     propagated  as  if it were posted to the base group.  For example, a cancel
     message posted to "news.admin.ctl" will be sent to all sites that subscribe
     to "control.cancel" (or "control"	if  that  newsgroup  doesn't  exist)  or
     "news.admin".   This  behavior is present for historical compatibility rea-
     sons and should be considered obsolete; support for the ".ctl"  suffix  may
     be removed in a future version of INN.

     Finally,  articles  posted  to  newsgroups beginning with "to." are treated
     specially.  Provided that either that newsgroup exists in the  active  file
     or  mergetogroups	is  set  in  inn.conf, the remainder of the newsgroup is
     taken to be a site name, as configured in newsfeeds,  and	the  article  is
     sent to sites propagating "to.uunet".  If mergetogroups is set, the article
     will  be  filed  in  the  group  named "to" (which must exist in the active
     file).   For  example,  with  mergetogroups  set,	an  article  posted   to
     "to.uunet"  will  be  filed  in  "to"  and  sent  to  the sites propagating
     "to.uunet".

PROTOCOL DIFFERENCES
     innd implements the NNTP commands	defined  in  RFC 3977  (NNTP),	RFC 4643
     (NNTP  authentication),  RFC 4644 (streaming NNTP feeds) and RFC 6048 (NNTP
     LIST additions) with the following differences:

     1.  A batch transfer command, XBATCH byte-count, is provided.  This command
	 will read byte-count bytes and  store	them  for  later  processing  by
	 rnews(1) (which must be run separately, probably from cron).  See innx-
	 batch(8) and sendxbatches for more details on this extension.

     2.  As  INN is a mode-switching news server, innd implements a limited sub-
	 set of the protocol useful for transferring news.  The  remaining  com-
	 mands	are  mostly  only  useful  for	readers  and  are implemented by
	 nnrpd(8).  Use of the MODE READER command will cause innd to  pass  the
	 connection to nnrpd.

     3.  innd allows a wider syntax for wildmats.

     4.  Three	commands (IHAVE, CHECK and TAKETHIS) will continue, for interop-
	 erability reasons, to return a reject code (respectively 435,	438  and
	 439)  when the command contains a syntax error (which normally leads to
	 501).

HEADER MODIFICATIONS
     innd modifies as few article headers as possible, although it could be bet-
     ter in this area.

     Empty header field bodies and header field bodies that consist  of  nothing
     but whitespace are dropped.

     The  local site's name (as set with the pathhost parameter in inn.conf) and
     an exclamation point are prepended to the Path header field body,	provided
     the first site name in the Path header field body is different from the lo-
     cal  one.	 In addition, pathalias and pathcluster may be similarly respec-
     tively prepended and appended as path identities immediately to  the  right
     or  the left of pathhost in the Path header field body; see inn.conf(5) for
     the details.

     The Xref header field is removed and a new one created.

     innd does not rewrite incorrect header fields.  For example,  it  will  not
     replace an incorrect Lines header field, though it may reject such an arti-
     cle depending on the value of linecountfuzz in inn.conf.

CANCEL FEEDS
     In order to efficiently apply a large number of local cancels (such as from
     processing  NoCeMs or from some other external source), INN supports a spe-
     cial feed mode available only  to	connections  to  the  local  Unix-domain
     socket (not to connections to any network sockets).

     To  enter this mode, connect to the Unix-domain socket (pathrun/nntpin) and
     send the command MODE CANCEL.  The response will have code 284.  Every sub-
     sequent line sent on that connection should consist of a single message-ID.
     An attempt will be made to cancel that message-ID, and the server will  re-
     ply  289  for success or 484 for failure.	(Failure can occur, for example,
     if the server is paused or throttled, or the message-ID is corrupt.   Fail-
     ure does not occur if the article to be cancelled does not exist.)

LOGGING
     innd reports all incoming articles in its log file (pathlog/news).  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> Cancelling <message-id>
	 mon dd hh:mm:ss.mmm - feed <message-id> reason
	 mon dd hh:mm:ss.mmm ? feed <message-id> reason

     There may also be hostname and/or size fields after the message-ID  depend-
     ing on the settings of nntplinklog and logartsize in inn.conf.

     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
     field body) 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, providing all of the newsgroups to which the
     article was posted were set to status "j" in the active file (or not listed
     in the active file and wanttrash was set in inn.conf), and then the article
     was filed into the "junk" newsgroup.  In both of these 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 the letter "c", then a cancel message  was	accepted
     before  the original article arrived, and a history entry for the cancelled
     message was created so that innd will reject that	message  if  it  arrives
     later.

     If  the  fourth  field is a minus sign, then the article was rejected.  The
     reasons for rejection generated by innd include:

	 "%s" header too long
	 Article exceeds local limit of %s bytes
	 Article posted in the future -- "%s"
	 Bad "%s" header field
	 Can't write history
	 Duplicate
	 Duplicate "%s" header field
	 EOF in headers
	 Linecount %s != %s +- %s
	 Missing %s header field
	 No body
	 No colon-space in "%s" header field
	 No matching newsgroups in cancel <%s>
	 No space
	 Space before colon in "%s" header field
	 Too old -- "%s"
	 Unapproved for "%s"
	 Unwanted newsgroup "%s"
	 Unwanted distribution "%s"
	 Whitespace in "Newsgroups" header field -- "%s"

     where %s, above, is replaced by more specific information.  (The  Perl  and
     Python filters, if used, may reject articles with other reasons.)

     If  the  fourth  field  is  the  letter  "?",  the article contains strange
     strings, such as CR without LF or LF without CR.  (These characters  should
     never  occur  in  isolation, only together as CRLF to indicate the end of a
     line.)  This log message is just informational, to  give  an  idea  of  how
     widespread such articles are; innd does not reject such articles.

     Note  that  when wanttrash is set to true in inn.conf and an article is re-
     ceived that isn't posted to any valid newsgroups, it will be  accepted  and
     logged  with  two	lines, a "j" line and a minus sign line, unless the log-
     trash parameter is set to false (in which case only the "j" line  is  writ-
     ten).

     innd also makes extensive reports through syslog(3).  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
     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 re-
     ported.  (The absence of an apostrophe is intentional; it makes  it  easier
     to grep from the command line and easier to find error messages in FAQs us-
     ing  a  search engine.  However, "can't" is also used at a few places.)  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 indicates an internal logic error.

SIGNALS
     innd  will  catch	SIGTERM and SIGHUP and shut down.  If -d is used, SIGINT
     will also be caught and will result in an orderly shutdown.

     innd will catch the SIGUSR1 signal and recreate the control channel used by
     ctlinnd(8).

HISTORY
     Written by Rich $alz <rsalz@uunet.uu.net> for InterNetNews.

SEE ALSO
     active(5),   ctlinnd(8),	history(5),    incoming.conf(5),    inn.conf(5),
     innbind(8),   innfeed(8),	innstat(8),  libinn_dbz(3),  libinn_inndcomm(3),
     newsfeeds(5), nnrpd(8), rnews(1), syslog(3).

INN 2.8.0			   2024-07-23				 INND(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=innd&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help