Upgrading from 2.3 to 2.4

    Currently, there are no incompatible differences between INN 2.3 and
    2.4, unless you use nnrpd's Perl authentication hooks.  A simple "make
    update" should be sufficient (you probably need to add

            hismethod:              hisv6

    to inn.conf).  If you are upgrading from a version prior to INN 2.3, see
    the section on "Upgrading from 2.2 to 2.3".

    * If you use Perl authentication for nnrpd (if nnrpdperlauth in inn.conf
      is true), however, there have been major changes.  See the section on
      "Changes to Perl Authentication Support for nnrpd" in doc/hook-perl
      for details.

Changes from 2.3 to 2.4

    * All accesses to the history file for all parts of INN now go through a
      generic API like the storage and overview subsystems do.  This will
      eventually allow new history implementations to be dropped in without
      affecting the rest of INN, and will significantly improve the
      encapsulation of the history subsystem.  See the libinnhist(3) man
      page for the details of the interface.

    * Variables can now be used in the newsfeeds file to make it easier to
      specify a lot of similar feeds or feed patterns.  See the newsfeeds(5)
      man page for more details.

    * Local connections to INN support a new special mode, MODE CANCEL, that
      allows efficient batch cancellation of messages.  This is intended to
      be the preferred interface for external spam and abuse filters like
      NoCeM.

    * Thanks to code contributed by CMU, innfeed can now feed an IMAP server
      as well as other NNTP servers.  See the man page for innfeed for more
      information.

    * An authenticator that checks a username and password against a remote
      Samba server is now included.

    * The interface between external authenticators and nnrpd is now wrapped
      in a library, which should make it easier to write additional
      authenticators.

    * INN now checks to ensure that the configured temporary directory is
      not world-writeable since INN doesn't currently create all temporary
      files in a manner that's safe against symlink attacks.

    * Two configure options have changed names:  --with-tmp-path is now
      --with-tmp-dir and --with-largefiles is now --enable-largefiles to
      improve consistency and better match the autoconf option guidelines.

    * Preliminary IPv6 support has been added, it is off by default.  Build
      with --enable-ipv6 to try it.  Hopefully, nobody will notice any
      problems with the default configuration, although some changes have
      been made to data structures even when IPv6 is disabled.  Further
      information is available in doc/IPv6-info.

    * All of the applicable bug fixes from the INN 2.3 STABLE series are
      also included in INN 2.4.

Upgrading from 2.2 to 2.3

    There may be additional things to watch out for not listed here; if you
    run across any, please let inn-bugs@isc.org know about them.

    Simply doing a make update is not sufficient to upgrade; the history and
    overview information will also have to be regenerated, since the formats
    of both files have changed between 2.2 and 2.3.  Regardless of whether
    you were using the storage API or traditional spool under 2.2, you'll
    need to rebuild your overview and history files.

    If you want to allow readers, or if you want to expire based on
    newsgroup name, you need to tell INN to generate overview data and pick
    an overview method by setting ovmethod in inn.conf.  See INSTALL and
    inn.conf(5) for more details.

    The code that generates the dbz index files has been split into a
    seperate program, makedbz.  makehistory still generates the base history
    file and the overview information, but some of its options have been
    changed.  To rebuild the history and overview files, use:

        makehistory -b -f history.n -O -T/usr/local/news/tmp -l 600000

    (Change the /usr/local/news/tmp path to some directory that has plenty
    of temporary space, and leave off -O if you're running a transit-only
    server and don't intend to expire based on group name, and therefore
    don't need overview.)  Or use:

        makehistory -b -f history.n -O -F

    (This is suitable for the "buffindexed" overview backend.)  Both will
    generate a new history file as history.n and rebuild overview at the
    same time.  If you want to preseve a record of expired message IDs in
    the history file, run:

        awk 'NF==2 { print; }' < history >> history.n

    to append them to the newly created history file.  Look over the new
    history file and make sure it looks right, then generate the new index
    files and move them into place:

        makedbz -s `wc -l <history.n` -f history.n
        mv history.n history
        mv history.n.dir history.dir
        mv history.n.hash history.hash
        mv history.n.index history.index

    (Rather than .hash and .index files, you may have a .pag file if you're
    using tagged hash.)

    For a reader machine, nnrp.access has been replaced by readers.conf. 
    There currently isn't a program to convert between the old format and
    the new format (if you'd like to contribute one, it would be welcomed
    gratefully).  The new file is unfortunately considerably more complex to
    support its new capabilities; please carefully read the example
    readers.conf provided and the man page when setting up your initial
    configuration.  The provided commented-out examples cover the most
    common installation (IP-based authentication for all machines on the
    local network).

    INN makes extensive use of mmap for the new overview mechanisms, so at
    the present time NFS-mounting the spool and overview from one central
    server on multiple reader machines probably isn't feasible in this
    version.  mmap tends to interact poorly with NFS (at the least, NFS
    clients won't see updates to the mapped files in situations where they
    should).  (The preferred way to fix this would, rather than backing out
    the use of mmap or making it optional, to add support for Diablo-style
    header feeds and pull-on-demand of articles from a master server.)

    The flags for overchan have changed, plus you probably don't want to run
    overchan at all any more.  Letting innd write overview data itself
    results in somewhat slower performance, but is more reliable and has a
    better failure mode under high loads.  Writing overview data directly is
    the default, so in a normal upgrade from 2.2 to 2.3 you'll want to
    comment out or remove your overchan entry in newsfeeds and set
    useoverchan to false in inn.conf.

    crosspost is no longer installed, and no longer works (even with
    traditional spool).  If you have an entry for crosspost in newsfeeds,
    remove it.

    If you're importing a traditional spool from a pre-storage API INN
    server, it's strongly recommended that you use NNTP to feed the articles
    to your new server rather than trying to build overview and history
    directly from the old spool.  It's more reliable and ensures that
    everything gets put into the right place.  The easiest way to do this is
    to generate, on your old server, a list of all of your existing article
    files and then feed that list to innxmit.

    If you are using a version of Cleanfeed that still has a line in it
    like:

        $lines = $hdr{'__BODY__'} =~ tr/\n/\n/;

    you will need to change this line to:

        $lines = $hdr{'__LINES__'};

    to work with INN 2.3 or later.  This is due to an internal optimization
    of the interface to embedded filters that's new in INN 2.3.

Changes from 2.2 to 2.3

    * New readers.conf file (replaces nnrp.access) which allows more
      flexible specification of access restrictions.  Included in the sample
      implementations is a RADIUS-based authenticator.

    * Unified overview has been replaced with an overview API, and there are
      now three separate overview implementations to choose from.  One
      (tradindexed) is very like traditional overview but uses an additional
      index file.  The second (buffindexed) uses large buffers rather than
      separate files for each group and can handle a higher incoming article
      rate while still being fast for readers.  The third (ovdb) uses
      Berkeley DB to store overview information (so you need to have
      Berkeley DB installed to use it).  The ovmethod key in inn.conf
      chooses the overview method to use.

      Note that ovdb has not been as widely tested as the other overview
      mechanisms and should be considered experimental.

    * All article storage and retrieval is now done via the storage API. 
      Traditional spool is now available as a storage type under the storage
      API.  (Note that the current traditional spool implementation causes
      nightly expire to be extremely slow for a large number of articles, so
      it's not recommended that you use the tradspool storage method for the
      majority of a large spool.)

    * The timecaf storage method has been added, similar to timehash but
      storing multiple articles in a single file.  See INSTALL for details
      on it.

    * INN now supports embedded Python filters as well as Perl and TCL
      filters, and supports Python authentication hooks.

    * There is preliminary support for news reading over SSL, using OpenSSL.

    * Users can no longer post articles containing Approved: headers to
      moderated groups by default; they must be specifically given that
      permission with the access: parameter in readers.conf.  See the man
      page for more details.

    * To simplify anti-abuse filtering, and to be more compliant with news
      standards and proposed standards, INN now treats as control messages
      only articles containing a Control header.  A Subject line beginning
      with "cmsg " is no longer sufficient for a message to be considered a
      control message, and the Also-Control header is no longer supported.

    * inews is not installed setgid news and rnews is not installed setuid
      root by default any more.  If you need the old permissions, you have
      to give a flag to configure.  See INSTALL for more details.

    * The INN build system no longer uses subst.  (This will be transparent
      to most users; it's an improvement and modernization of how INN is
      configured.)

    * The build and installation system has been substantially overhauled. 
      make update now updates scripts as well as binaries and documentation,
      there is better support for parallel builds (with make -j), there is
      less needless make recursion, and far more of the system-dependent
      configuration is handled directly by autoconf.  libtool build support
      (including shared library support) should be better than previous
      releases.

    * All of the applicable bug fixes from the INN 2.2 STABLE series are
      also included in INN 2.3.

Changes from 2.1 to 2.2

    * New storage.conf file (replaces storage.ctl).

    * New (optional) way of handling non-cancel control messages
      (controlchan) that serializes them and prevents server overload from
      control message storms.

    * Support for actsyncd to fetch active file with ftp; configured by
      default to use <ftp://ftp.isc.org/pub/usenet/CONFIG/active.Z> if you
      run actsyncd.  Be sure to read the manual page for actsync to
      configure an actsync.ign file for your site, and test simpleftp if you
      do not configure with wget or ncftp.  Also see
      <ftp://ftp.isc.org/pub/usenet/CONFIG/README>.

    * Some options to configure are now moved to inn.conf (merge-to-groups
      and pgp-verify).

    * inndf, a portable version of df(1) is supplied.

    * New cnfsstat program to show stats of cnfs buffers.

    * news2mail and mailpost programs for gatewaying news to mail and mail
      to news are supplied.

    * pullnews program for doing a sucking feed is provided (not meant for
      large feeds).

    * The innshellvars.csh.in script is obsolete (and lives in the obsolete
      directory, for now).

