=head1 Changes from 2.3.4 to 2.3.5

=over 2

=item *

Clients using POST are no longer permitted to provide an Injector-Info
header.

=item *

Fixed a bug causing posts with Followup-To set to a moderated group to be
rejected if the posting user didn't have permission to approve postings.

=item *

Fixed bugs in inncheck with setuid rnews or setgid inews, in innconfval
with inn.conf parameters containing shell metacharacters but no spaces,
and in parsedate.y with some versions of yacc.  Fixed a variety of
size-related printf format warnings (e.g., %d vs. %ld) thanks to the work
of Winfried Szukalski.

=back

=head1 Changes from 2.3.3 to 2.3.4

=over 2

=item *

LIST ACTIVE no longer returns data when given a single group argument if
the client is not authorized to read that group.

=item *

XHDR and XPAT weren't correctly parsing article headers, resulting in
searches for the header "newsgroup" matching the header "newsgroups".

=item *

Made CNFS more robust against crashes by actually syncing the cycbuff
headers to disk as was originally intended.  Fixed a memory leak in the
tradspool code.

=item *

Two bugs in pgpverify when using GnuPG were fixed: it now correctly checks
for gpgv (rather than pgp) when told to use GnuPG and expects the keyring
to be pubring.gpg (not pubring.pgp).

=item *

Substantial updates to the sample provided control.ctl file.

=item *

Compilation fixes with Perl 5.8.0, BerkeleyDB 4.x, current versions of
Linux (including with large file support), and Tru64.  inndf fixes for
ReiserFS.

=item *

Various bugs in the header handling in nnrpd have been fixed, including
hangs when using virtual domains and improper processing of folded headers
under certain circumstances.

=item *

Other minor bug fixes and documentation improvements.

=back

=head1 Changes from 2.3.2 to 2.3.3

=over 2

=item *

pgpverify now supports using GnuPG to check signatures (rather than PGP)
without the pgpgpg wrapper.  GnuPG can check both old-style RSA signatures
and new OpenPGP signatures and is recommended over PGP 2.6.  If you have
GnuPG installed, pgpverify will use it rather than PGP, which means that
you may have to create a new key ring for GnuPG to use to verify signatures
if you were previously using PGP.

=item *

An item that was noted in NEWS below but was inadvertently left out of
nnrpd has actually been added this time:  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.

=item *

Two bugs in repacking overview index files and a reliability bug with
writing overview data were all fixed in the tradindexed overview method,
hopefully making it somewhat more reliable, particularly for makehistory.

=item *

If rc.news.local exists in the INN binary directory, it will be run with
the start or stop argument whenever rc.news is run.  This is available
as a hook for local startup and shutdown code.

=item *

The default history table hash sizes were increased because a too-small
value can cause serious performance problems (whereas a too-large hash
just wastes a bit of disk space).

=item *

The sample control.ctl file has been extensively updated.

=item *

Wildmat exclusions (@ and !) should now work properly in storage.conf
newsgroup patterns.

=item *

The implementation of the -w flag for expireover was fixed; previously,
the value given to -w to change expireover's notion of the current time
was scaled by too much.

=item *

Various other more minor bug fixes, standards compliance fixes, and
documentation improvements.

=back

=head1 Changes from 2.3.1 to 2.3.2

=over 2

=item *

innxmit can again handle regular filenames as input as well as storage API
tokens (allowing it to be used to import an old traditional spool).

=item *

Several problems with tagged-hash history files have been fixed thanks to
the debugging efforts of Andrew Gierth and Sang-yong Suh.

=item *

A very long-standing (since INN 1.0!) NNTP protocol bug in nnrpd was
fixed.  The response to an ARTICLE command retrieving a message by message
ID should have the message ID as the third word of the response, not the
fourth.  Fixing this is reported to *possibly* cause problems with some
Netscape browsers, but other news servers correctly follow the protocol.

=item *

Some serious performance problems with expiration of tradspool should now
be at least somewhat alleviated.  tradspool and timehash now know how to
output file names for removal rather than tokens, and fastrm's ability to
remove regular files has been restored.  This should bring expiration
times for tradspool back to within a factor of two of pre-storage-API
expiration times.

=item *

An item that was actually changed in 2.3.0 but wasn't noted in NEWS when
it should have been:  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
F<readers.conf>.  See the man page for more details.

=item *

Added a sample subscriptions file and documentation for it and innmail.

=back

=head1 Changes from 2.3.0 to 2.3.1

=over 2

=item *

inews no longer downloads the active file, no longer tries to send
postings to moderated groups to the moderator directly, and in general
duplicates less of the functionality of nnrpd, instead letting nnrpd
handle it.  This fixes the problem of inews not working properly for users
other than news without being setgid.

=item *

Added a man page for ckpasswd.

=item *

A serious bug in the embedded Perl authentication hooks was fixed, thanks
to Jan Rychter.

=item *

The annoying compilation problem with embedded Perl filtering on Linux
systems without libgdbm installed should be fixed.

=item *

INN now complaints loudly at configure time if the configured path for
temporary files is world-writeable, since this configuration can be a
security hole.

=item *

Many other varied bug fixes and documentation fixes of all sorts.

=back

=head1 Upgrading from 2.2 to 2.3

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 ``buffindexed'' ovmethod.)
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, F<nnrp.access> has been replaced by F<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
F<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 F<newsfeeds> and set useoverchan to false
in F<inn.conf>.

crosspost is no longer installed, and no longer works (even with
traditional spool).  If you have an entry for crosspost in F<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.

=head1 Changes from 2.2 to 2.3

=over 2

=item *

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

=item *

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 F<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.

=item *

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.)

=item *

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

=item *

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

=item *

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

=item *

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 F<readers.conf>.  See the man
page for more details.

=item *

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
C<cmsg > is no longer sufficient for a message to be considered a control
message, and the Also-Control header is no longer supported.

=item *

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 F<INSTALL> for more details.

=item *

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.)

=item *

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.

=item *

All of the applicable bug fixes from INN 2.2.1 and 2.2.2 are also included
in INN 2.3.

=back

=head1 Changes from 2.1 to 2.2

=over 2

=item *

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

=item *

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

=item *

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>.

=item *

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

=item *

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

=item *

New cnfsstat program to show stats of cnfs buffers.

=item *

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

=item *

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

=item *

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

=back
