rkt logo

The various parts of INN

After reading the topic Usenet RKT: How does a newsserver work?, which describes the basic requirements fulfilled by a newsserver, the purpose and relationships of the various parts of INN can be introduced with the help of a data flow diagram.


The main program which accepts news. To ensure consistency, only one program can write to the spool and data files. This is innd. (expire also has write access, but this is done in a way which does not interfere) Longer description at Installing INN 6.2.2. Innd Documented by the INN man page innd(8)

This program supports administrative tasks (adding newsgroups, changing configuration, etc.) It permits changes in an orderly way without having to shut down and restart INND. Documented by the INN man page ctlinnd(8)

The program which permits reading of the news. Longer description in Installing INN 6.2.3. The NetNews Reading Daemon Documented by the INN man page nnrpd(8)

As discussed, there can be only one program writing to the spool and data files. inews permits posting of articles by users. Documented by the INN man page inews(1)


innxmit reads articles from the spool and uses the NNTP Protocol to send them to a single peer. Multiple innxmits are needed to send to more than one peer, or use more than one channel per peer. Documented by the INN man page innxmit(8) innxmit is generally started by nntpsend(8)

innfeed performs the same function as innxmit: sending articles to peers. But it permits sending to multiple peers at the same time. This has advantages in performance, since it tries to keep articles in memory to be sent. It also can use and write to batch files under certain conditions. innfeed is not part of the standard INN distribution, but it is becoming the most popular method of transferring news.

Articles cannot remain in a finite size spool forever. After a period of time (configurable by newsgroup) they are removed. This is generally done once per day. It often takes a long time, and INN is designed such that INN can continue to receive articles and write them to the spool while expire is running. Other programs must be robust enough to detect and deal with the fact that the spool and the index files (overview databases, history files, etc) may not be synchronized. (An article referenced in the overview database or the history file may have been deleted and its references may not be updated yet.) expire creates new history database files, which are moved into place at the end of expire. (INND is paused to do this to maintain consistency.) expire is documented in the INN Man page expire(8)

Writes entries to the overview data files. Documented by the INN man page overchan(8)

Updates the overview data files by removing entries for expired articles. Documented by the INN man page expireover(8)


feeds from peers
News is transferred from peers into innd using the NetNewsTransferProtocol (NNTP) There are usually multiple peers and there may be multiple incoming channels per peer. The process is described in better detail at Usenet RKT How does INN transfer articles?


Active File
This is the list of newsgroups and the high and low article numbers in the spool, and whether or not the group is moderated. Documented by the INN man page active(5)

The news spool is where all the articles are stored. Each newsgroup has its own directory and an article is stored in a file name that matches the numerical article number in the group.
Usenet RKT How does INN store articles?

History database
This is a list of article message IDs, the arrival and expiration time, the article posting data, and where the article was stored in the spool. Lines are appended to the history file for each accepted incoming article. Documented by the INN man page history(5)

History index
This is a DBZ database which permits locating the particular line in the history database by message ID.

Most of the INN programs generate log messages. Documented by the INN man page newslog(8)

innd does not write the complete article out to feeds. To maintain index/overview/spool consistency there must be only one program receiving articles. But there is no such restriction on sending, therefore inn does not do this task. Instead INN writes meta-information either to a "batch" file to be transmitted later, or directly to a program which transmits.. See the INN man page newsfeeds(5)

News overview files maintain the most requested "meta" information about articles in a newsgroup from the article headers. The overview database can be consulted to process many NNTP overview and XHDR commands, without having to open each article. Documented by the INN man page: overview.fmt(5)

More Detailed Topics
Usenet RKT: INN Versions
4.3 INN FAQ How does it all fit together?
Rich Salz's original paper still is probably "where to start" understanding how innd works in theory. For more detail, you'll need to refer to the source itself.
InterNetNews...[Salz92]: Innd architecture
InterNetNews...[Salz92]: Innd structure

Overview and Related Topics
Up to How does a newsserver work?

RKT Rapid-Links:[Search] [RKT Tips] Path: / Usenet RKT / For Providers / Getting Started / 0036.htm

You are reading from the Usenet RKT
Comments? [DocID: USERKT/INN/0036.htm]
Copyright 1997-1998, Forrest J. Cavalier III, Mib Software, INN customization and consulting