Welcome to the InterNetNews project!

  INN 2.8

    Our "main" branch is for the current development of the next INN 2.8
    major release.  Head to the 2.7 branch for the maintenance of the most
    recently released stable version.

    This code is under active development and may or may not be stable at
    any given time.  Contributions and bug reports are welcome and
    encouraged.

    This work is sponsored by Internet Systems Consortium.

    The official homepage of the project is
    <https://www.isc.org/othersoftware/>.

    You'll also find very useful information about INN on Russ Allbery's web
    site <https://www.eyrie.org/~eagle/software/inn/>.

    Please see:

    *   CHECKLIST
        <https://www.eyrie.org/~eagle/software/inn/docs/checklist.html> for
        a quick overview of all the installation steps and pointers to
        documentation,

    *   INSTALL
        <https://www.eyrie.org/~eagle/software/inn/docs/install.html> for
        full installation instructions,

    *   FAQ <https://www.eyrie.org/~eagle/faqs/inn.html> for INN FAQ,

    *   NEWS <https://www.eyrie.org/~eagle/software/inn/docs/news.html> for
        what's changed from the previous release,

    *   and LICENSE
        <https://www.eyrie.org/~eagle/software/inn/docs/license.html> for
        the copyright, license, and distribution terms.

    These files can also be found in the doc or doc/pod directories if not
    present at top-level.

What is INN?

    INN (InterNetNews), originally written by Rich Salz, is a very
    full-featured and extremely flexible and configurable Usenet / Netnews
    news server.  For a complete description of the protocols behind Usenet
    and Netnews, see RFC 3977 (NNTP), RFC 4642 updated by RFC 8143
    (TLS/NNTP), RFC 4643 (NNTP authentication), RFC 4644 (streaming NNTP
    feeds), RFC 5536 (USEFOR), RFC 5537 (USEPRO), RFC 6048 (NNTP LIST
    additions), RFC 8054 (NNTP compression) and RFC 8315 (Cancel-Lock) or
    their replacements.

    In brief, Netnews is a set of protocols for exchanging messages between
    a decentralized network of news servers.  News articles are organized
    into newsgroups, which are themselves organized into hierarchies.  Each
    individual news server stores locally all articles it has received for a
    given newsgroup, making access to stored articles extremely fast. 
    Netnews does not require any central server; instead, each news server
    passes along articles it receives to all of the news servers it peers
    with, those servers pass the articles along to their peers, and so on,
    resulting in "flood fill" propagation of news articles.

    A news server performs three basic functions: it accepts articles from
    other servers and stores them on disk, sends articles it has received
    out to other servers, and offers stored news articles to readers on
    demand.  It additionally has to perform some periodic maintenance tasks,
    such as deleting older articles to make room for new ones.

    Originally, a news server would just store all of the news articles it
    had received in a file system.  Users could then read news by reading
    the article files on disk (or more commonly using news reading software
    that did this efficiently).  These days, news servers are almost always
    stand-alone systems and news reading is supported via network
    connections.  A user who wants to read a newsgroup opens that newsgroup
    in their newsreader software, which opens a network connection to the
    news server and sends requests for articles and related information. 
    The protocol that a newsreader uses to talk to a news server and that a
    news server uses to talk to another news server over TCP/IP is called
    NNTP (Network News Transport Protocol).

    INN supports accepting articles via either NNTP connections or via UUCP.
    innd, the heart of INN, handles NNTP feeding connections directly; UUCP
    newsfeeds use rnews (included in INN) to hand articles off to innd. 
    Other parts of INN handle feeding articles out to other news servers,
    most commonly innfeed (for real-time outgoing feeds) or nntpsend and
    innxmit (used to send batches of news created by innd to a remote site
    via TCP/IP).  INN can also handle outgoing UUCP feeds.

    The part of INN that handles connections from newsreaders is nnrpd.

    Also included in INN are a wide variety of supporting programs to handle
    periodic maintenance and recovery from crashes, process special control
    messages, maintain the list of active newsgroups, and generate and
    record a staggering variety of statistics and summary information on the
    usage and performance of the server.

    INN also supports an extremely powerful filtering system that allows the
    server administrator to reject unwanted articles (such as spam and other
    abuses of Usenet).

    INN is free software, supported by Internet Systems Consortium and
    volunteers around the world.  See "Supporting the INN Effort" below.

Prerequisites

    Compiling INN requires an ANSI C compiler (gcc is recommended).  INN was
    originally written in K&R C, but supporting pre-ANSI compilers has
    become enough of a headache that a lot of the newer parts of INN will no
    longer compile with a non-ANSI compiler.  gcc itself will compile with
    most vendor non-ANSI compilers, however, so if you're stuck with one,
    installing gcc is highly recommended.  Not only will it let you build
    INN, it will make installing lots of other software much easier.  You
    may also need GNU make (particularly if your system make is
    BSD-derived), although most SysV make programs should work fine. 
    Compiling INN also currently requires a yacc implementation (bison will
    do fine).

    INN uses GNU autoconf to probe the capabilities of your system, and
    therefore should compile on nearly any Unix system.  It does, however,
    make extensive use of mmap(), which can cause problems on some older
    operating systems.  See INSTALL
    <https://www.eyrie.org/~eagle/software/inn/docs/install.html> for a list
    of systems it is known to work on.  If you encounter problems compiling
    or running INN, or if you successfully run INN on a platform that isn't
    listed in INSTALL, please let us know (see "Reporting Bugs" below).

    Perl 5.8.0 or later is required to build INN, run several subsystems,
    and use the embedded Perl filtering and authentication hook support
    (which is highly recommended; some excellent spam filters have been
    written for INN).  Depending on what language you want to write your
    filters and authentication hooks in, you may also want to install
    Python 2.3.0 or later, or Python 3.3.0 or later.

    For support for authenticated control messages, you will need either PGP
    or GnuPG, the latter being recommended.  See INSTALL for more details.

    For the "ovdb" overview storage method, you'll need Berkeley DB 4.4 or
    later (4.7 or later recommended).  For the "hissqlite" history storage
    method or the "ovsqlite" overview storage method, you'll need
    SQLite 3.24.0 or later.  If you have zlib available, you can also
    compress overview before it's stored into "ovdb" or "ovsqlite", and
    enable the COMPRESS capability, an NNTP extension.  For support for news
    reading over TLS, you'll need OpenSSL or LibreSSL.  To support SASL
    authentication to nnrpd or to feed newsgroups to an IMAP server with
    SASL authentication, you'll need the Cyrus SASL libraries.  INN can also
    check passwords against a Kerberos KDC; for this, you will need Kerberos
    libraries.

Getting Started

    A news server can be a fairly complicated piece of software to set up
    just because of the wide variety of pieces that have to be configured
    (who is authorized to read from the server, what newsgroups it carries,
    and how the articles are stored on disk at a bare minimum, and if the
    server isn't completely stand-alone -- and very few servers are -- both
    incoming and outgoing feeds have to be set up and tested).  Be prepared
    to take some time to understand what's going on and how all the pieces
    fit together.  If you have any specific suggestions for documentation,
    or comments about things that are unclear, please send them to the INN
    maintainers (see "Reporting Bugs" below).

  Download

    Source code tarballs of the official releases can be downloaded from
    <https://downloads.isc.org/isc/inn/>.  The InterNetNews project does not
    distribute releases in binary form.  Yet, precompiled versions may exist
    on your operating system.

    When installing a new INN server, you may wish to download the latest
    snapshot of the stable branch rather than the last official release, so
    that to pick up possible bug fixes.

  Build and Install

    See INSTALL
    <https://www.eyrie.org/~eagle/software/inn/docs/install.html> for
    step-by-step instructions for setting up and configuring a news server.

    If you want to create a Docker image, you can find examples of standard
    local Docker containers or GitHub Actions services in projects like
    apt-get-inn2-docker <https://github.com/cclauss/apt-get-inn2-docker> or
    inn-docker <https://github.com/greenbender/inn-docker>.

  Documentation

    INN also comes with a very complete set of man pages; there is a man
    page for every configuration file and program that comes with INN.  (If
    you find one that doesn't have a man page, that's a bug.  Please do
    report it.)  When trying to figure out some specific problem, reading
    the man pages for all of the configuration files involved is a very good
    start.

    URL: <https://www.eyrie.org/~eagle/software/inn/docs/> (online
    documentation)

Reporting Bugs

    We're interested in all bug reports.  Not just on the programs, but on
    the documentation too.  Please use the GitHub issue tracker to send such
    non-security bug reports, or alternatively send them to

        inn-workers@lists.isc.org

    (patches are certainly welcome, see below).  Even if you post to Usenet,
    please CC the above address.

    Security issues must be reported through a dedicated private form on the
    GitHub Security Advisories
    <https://github.com/InterNetNews/inn/security/advisories/> of the
    project as they should not be made public until a fix is deployed.

    If you have general "how do I do this" questions or problems configuring
    your server that you don't believe are due to a bug in INN, you should
    post them to news.software.nntp.  A lot of experienced INN users,
    including several of the INN maintainers, read that newsgroup regularly.
    Please don't send general questions to the above addresses; those
    addresses are specifically for INN, and the INN maintainers usually
    won't have time to answer general questions.

Testing and Development

  Source Code

    INN is maintained using the Git version control system.  The official
    InterNetNews Git repository is located at
    <https://github.com/InterNetNews/inn>.  A local copy of the current
    development source can be obtained by cloning it using a Git client:

        git clone https://github.com/InterNetNews/inn.git

    You can also download daily snapshots
    <https://archives.eyrie.org/software/inn/snapshots/> produced only if
    the current code compiles and passes the test suite, so they have
    undergone at least some basic validation, although they've not been
    tested by a human.

  Contributing Code

    If you have a non-security patch or a utility that you'd like to be
    considered for inclusion into INN, please make a GitHub pull request, or
    alternatively mail it to

        inn-workers@lists.isc.org

    in the body of the message (not as an attachment because the
    mailing-list might strip it), or put it on a webpage and send a link. 
    Patches included with a bug report as described above should follow the
    same procedure.

    Patches related to security issues must not be made public.  A dedicated
    private form on the GitHub Security Advisories
    <https://github.com/InterNetNews/inn/security/advisories/> of the
    project must be used instead.

    Please submit all patches against the current main branch, not against a
    stable release.  The development version of INN is often much different
    than the last stable release.

    Also please take a look at HACKING
    <https://www.eyrie.org/~eagle/software/inn/docs/hacking.html> for
    information about development and coding style.

    Have fun!

Mailing Lists

    There are various INN-related mailing lists you can join or send
    messages to if you like.  Some of them you must be a member of before
    you can send mail to them (thank the spammers for that policy), and one
    of them is read-only (no postings allowed).

    inn-announce@lists.isc.org
            Where announcements about INN are sent (only maintainers may
            post).

            URL: <https://lists.isc.org/mailman/listinfo/inn-announce>

    inn-workers@lists.isc.org
            Discussion of INN development.  If you prefer not to use GitHub
            to create an issue or a pull request, it is also where to send
            bug reports and patches for consideration for inclusion into INN
            (postings by members only).  If you're an INN expert and have
            the time to help out other users, we encourage you to join this
            mailing list to answer questions.  (You may also want to read
            the newsgroup news.software.nntp, which gets a lot of
            INN-related questions.)

            URL: <https://lists.isc.org/mailman/listinfo/inn-workers>

    inn-committers@lists.isc.org
            Git commit messages for INN are sent to this list (only the
            automated messages are sent here, no regular posting).

            URL: <https://lists.isc.org/mailman/listinfo/inn-committers>

    inn-bugs@lists.isc.org
            This list used to receive Trac issues for INN, before the
            migration to GitHub (only the automated messages were sent here,
            no regular posting).  Bug reports should be sent to the
            inn-workers mailing list, or a GitHub issue created.

            URL: <https://lists.isc.org/mailman/listinfo/inn-bugs>

    To join these lists, send a subscription request to the "-request"
    address.  The addresses for the above lists are:

       inn-announce-request@lists.isc.org
       inn-workers-request@lists.isc.org
       inn-committers-request@lists.isc.org
       inn-bugs-request@lists.isc.org

    You can alternatively join them from the subscription form in their
    public web pages.

Who's Responsible / Who to Thank

    See CONTRIBUTORS
    <https://www.eyrie.org/~eagle/software/inn/docs/contributors.html> for a
    long list of past contributors as well as people from the inn-workers
    mailing list who have dedicated a lot of time and effort to getting this
    new version together.  They deserve a big round of applause.  They've
    certainly got our thanks.

    This product includes software developed by UUNET Technologies, Inc. and
    by the University of California, Berkeley and its contributors.

    Last, but certainly not least, Rich Salz, the original author of INN
    deserves a lion's share of the credit for writing INN in the first place
    and making it the most popular news server software on the planet (no
    NNTP yet to the moon, but we plan to be there first).

Related Packages

    INN users may also be interested in the following software packages that
    work with INN or are based on it.  Please note that none of this
    software is developed or maintained by ISC; we don't support it and
    generally can't answer questions about it.

    cleanfeed-ng
        URL: <https://github.com/infybofh/cleanfeed-ng/> (maintained by Ivo
        Gandolfo)

        cleanfeed-ng is a maintained, lightweight continuation of the
        historical Cleanfeed filter.  It is designed for server-to-server
        Usenet transit filtering, with particular attention to predictable
        behaviour, low overhead, safe configuration changes, and useful
        diagnostics.

        cleanfeed-ng is an extremely powerful spam filter, probably the most
        widely used spam filter on Usenet currently.  It catches excessive
        multiposting and a host of other things, and is highly configurable.
        Note that it requires the MD5 Perl module and that INN be built with
        Perl support (the --with-perl option to configure).

        Since 2026, cleanfeed-ng has continued the historical work of
        Cleanfeed, originally developed by Jeremy Nixon, who maintained it
        until 1998.  Further development was then taken on by Marco d'Itri
        until 2002, followed by later updates and maintenance by Steve Crook
        from 2007 to 2020 (at <http://www.mixmin.net/cleanfeed/> but no
        longer maintained).

        A Python-based variant of Cleanfeed, named PyClean, also exists and
        can be found at <https://github.com/crooks/PyClean>.

    GUP (Group Update Program)
        URL: <https://github.com/rfc1036/gup>

        GUP provides a way for your peers to update their newsfeeds entries
        as they want without having to ask you to edit the configuration
        file all the time.  It's useful when feeding peers take limited and
        very specific feeds that change periodically.

    innduct
        URL:
        <https://www.chiark.greenend.org.uk/ucgi/~ian/git-manpage/innduct.gi
        t/innduct.8> (maintained by Ian Jackson)

        A possible replacement for innfeed, innxmit and nntpsend that
        quickly and reliably streams Usenet article to a remote site. 
        innduct is designed to be robust and not to lose any articles (when
        offered to peers) in case it unexpectedly dies, contrary to innfeed.
        It also permits a realtime feed, contrary to innxmit or nntpsend.

    NewsPortal
        URL: <https://gitlab.com/yamo-nntp/newsportal>

        A PHP-based web news reader that works as a front-end to a regular
        news server such as INN and lets people read and post without
        learning a news reader.

        NewsPortal was originally written by Florian Amrhein
        <https://amrhein.eu/newsportal/doc/> and is now maintained by
        Stéphane Grégoire who notably did a great job fixing a few bugs and
        adapting it for use on smartphones.

    PersonalINN
        URL: <http://www.ritual.org/summer/pinn/>

        PersonalINN is a version of INN modified for personal use and with a
        friendly GUI built on top of it.  It is available for NEXTSTEP or
        OPENSTEP only, unfortunately.

    suck
        URL: <https://github.com/lazarus-pkgs/suck>

        suck is a separate package for downloading a news feed via a reading
        connection (rather than via a direct NNTP or UUCP feed) and sending
        outgoing local posts via POST.  It's intended primarily for personal
        or small-organization news servers who get their news via an ISP and
        are too small to warrant setting up a regular news feed.

Supporting the INN Effort

    Note that INN is supported by Internet Systems Consortium, and although
    it is free for use and redistribution and incorporation into vendor
    products and export and anything else you can think of, it costs money
    to produce.  That money comes from ISPs, hardware and software vendors,
    companies who make extensive use of the software, and generally
    kind-hearted folk such as yourself.

    Internet Systems Consortium has also commissioned a DHCP server
    implementation and handles the official support/release of BIND.  You
    can learn more about the ISC's goals and accomplishments from the web
    page at <https://www.isc.org/>.

                                            Russ Allbery
                                            Katsuhiro Kondou
                                            <inn@isc.org>

