--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/NEWS.html Wed Jan 16 22:39:43 2008 +0100
@@ -0,0 +1,576 @@
+<html>
+<head>
+<title>Release History</title>
+<body>
+<center><h1>Release History</h1></center>
+<hr>
+<h2>Changes in version 0.96.9</h2>
+<p>
+New Features:
+<ul>
+<li>vdeluser now has an option to prevent it from deleting users with a
+ mailbox.
+<li>All the Python CGI code has been dropped. A stand-alone vpyadmin
+ package (to be release very shortly) will replace the Python CGIs.
+ Between this new interface and the PHP code, the C++ CGIs are
+ depricated and will be removed in a future version, unless somebody
+ violently objects.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Cleaned up the vpwtable API.
+<li>New CLI documentation generator, should help keep the man pages and
+ the programs in sync.
+<li>Major overhaul to the Python library.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed error handling in vdeliver to properly handle file-system quota
+ errors.
+<li>Fixed a bug in the Courier IMAP authentication module that prevented
+ non-virtual users from authenticating.
+<li>The daemon now exits immediately if a SIGALRM or SIGPIPE is caught,
+ instead of completing the action.
+<li>Fixed a bug in autodetecting Python. It should now work with any
+ version of make.
+</ul>
+<hr>
+<h2>Changes in version 0.96.8</h2>
+<p>
+New Features:
+<ul>
+<li>Added a quota checking program for use in vdeliver-predeliver.
+<li>The authvmailmgr Courier-IMAP auth module now executes
+ authvmailmgr-presetuid and authvmailmgr-postsetuid before and after
+ executing the setuid respectively, just like checkvpw.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>The daemon lookup command now returns all of the virtual user data,
+ not just the mailbox and forwarding.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed a typo in the vmailmgrd run script.
+<li>Fixed a bug in the daemon that would cause actions to be applied to
+ the default virtual user if the named virtual user did not exist.
+<li>Fixed a bug in the daemon that would allow disabled autoresponders to
+ be written to.
+<li>Fixed a bug in the subprogram execution code that would cause the
+ wrong exit status to be returned.
+<li>vdeliver now rewinds standard input before executing postdeliver.
+<li>The autoresponse daemon command will now read the disabled
+ autoresponse file if the enabled one does not exist.
+<li>Fixed note on setting up a domain in the HOWTO.
+<li>Fixed a bug in the fdbuf library.
+</ul>
+<hr>
+<h2>Changes in version 0.96.7</h2>
+<p>
+New Features:
+<ul>
+<li>Contains configure-time switchable support for GDBM virtual user tables.
+<li>Added a new utility, vpasswd2db, to convert a plain text password
+ table into whatever vpwtable format is configured. This utility will
+ be much slower than vpasswd2cdb for CDB files (for now), so only use
+ it for other (ie GDBM) formats.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Updated PHP code.
+<li>The daemon now relies on ucspi-unix to handle connections and forking
+ instead of doing it internally.
+<li>The autoresponse is written into a new subdirectory of the virtual
+ user's mailbox directory. This makes it work better with the
+ autoresponder, which requires a directory to store temporary files in.
+<li>Reorganized the vpwtable code somewhat.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>The daemon now initializes its random number generator each time it
+ handles a command, which should make it generate different salts for
+ password hashes.
+<li>The python subdirectory no longer requires GNU make to build, and
+ should no longer build at all if Python cannot be located.
+</ul>
+<hr>
+<h2>Changes in version 0.96.6</h2>
+<p>
+New Features:
+<ul>
+<li>Added autoresponse command to daemon, modified from code submitted by
+ Mike Bell. This allows the user to upload a autoresponse file to
+ their virtual mailbox, to be used by an autoresponder (not included).
+<li>Added autoresponse CGI written in Python, as well as updated Python
+ library code.
+<li>Updated PHP code from Mike Bell.
+<li>Replaced the FAQ and HOWTO documents with the revised ones by Dan
+ Kuykendall.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>The necessary parts of the Courier IMAP "authlib" library is now
+ included in this package. The Courier IMAP authentication module is
+ now always built.
+<li>The Courier IMAP module is now part of the standard RPM.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed a problem with converting from old records that didn't set the
+ virtual user flags properly.
+<li>Fixed a problem with the virtual user creation time field not being
+ set properly.
+<li>Fixed a bug in vdeliver that would cause any error from the predeliver
+ script to be treated as a temporary failure.
+<li>Fixed a bug in the domain name lookup code that caused case sensitive
+ domain name comparisons.
+</ul>
+<hr>
+<h2>Changes in version 0.96.5</h2>
+<p>
+New Features:
+<ul>
+<li>Mailbox delivery can be temporarily disabled on a per-virtual-user
+ basis, through either the CGIs, command-line tools, or PHP, without
+ deleting the mailbox.
+<li>Account expiry is handled by the authentication tools and by vdeliver.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>The binary record format has changed to handle the new boolean flags.
+ Note that this new format is backwards compatible, so no conversion is
+ needed.
+<p>
+</ul>
+Bug Fixes: None
+<hr>
+<h2>Changes in version 0.96.4</h2>
+<p>
+New Features:
+<ul>
+<li>Added an upgrading section in the FAQ.
+<li>The command-line tools now have a "--quiet" option to suppress all
+ status messages.
+<li>Added a "vchforwards" CGI interface.
+<li>Modified the "vaddalias" CGI program to accept a comma-seperated list
+ of destinations.
+<li>Added some sample HTML pages for the CGIs.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Minor updates to the mystring and fdbuf libraries.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed a problem that caused the Courier IMAP authentication module to
+ fail for users of the form "baseuser-virtuser". It should work now.
+</ul>
+<hr>
+<h2>Changes in version 0.96.3</h2>
+<p>
+New Features: None
+<p>
+Internal Changes:
+<ul>
+<li>Removed the "include" directory.
+<li>Made vpwtable & vpwentry a seperate source directory.
+<li>Merged the "adduser", "addalias", and "addaliasp" daemon interfaces
+ into one new inteface named "adduser2". The C++ CGIs and the PHP3
+ code has been modified to use the new interface.
+<p>
+</ul>
+Bug Fixes: None
+<hr>
+<h2>Changes in version 0.96.2</h2>
+<p>
+New Features:
+<ul>
+<li>Updated the FAQ, and added some new answers.
+<li>Added a Courier IMAP authentication module. This module does not yet
+ work, unfortunately.
+<li>Tossed the existing non-functional PHP3 module and added a working one
+ (written in PHP3) from Mike Bell.
+<li>Modified vsetup to call programs before and after setting up the
+ domain.
+<li>Added new "vauthenticate" command.
+<li>Turned the small vaddalias program into a simple shell script.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Moved the Python code into its own directory, like the PHP3 stuff.
+<li>Moved the checkvpw module into an "authenticate" directory.
+<li>Imported changes to the CLI library to make it behave more like the
+ standard getopt.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed some bugs in the Kerberos5 configuration handling.
+</ul>
+<hr>
+<h2>Changes in version 0.96.1</h2>
+<p>
+New Features:
+<ul>
+<li>Output of listvdomain CGI has changed slightly to reflect the change
+ in internal data structures.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Changed listdomain daemon protocol to speed up domain listings and to
+ allow for more information (not yet present in the listdomain CGI).
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed bug in building Python code from input files with non-GNU make.
+</ul>
+<hr>
+<h2>Changes in version 0.96</h2>
+<p>
+New Features:
+<ul>
+<li>Record data format has been enhanced to add personal information,
+ simple quotas, and expiry information, plus other extra data.
+<li>Messages can now be delivered to both a mailbox and a list of
+ forwarding addresses at once.
+<li>Programs executed from checkvpw or vdeliver will have all the above
+ data set in environment variables.
+<li>listvdomain can now list only users, only aliases, or selected names.
+<li>The listvdomain CGI has improved formatting ability.
+<li>Preliminary support for Kerberos5 authentication. Please tell me if
+ this works for you if you need this, as I can't test it myself.
+<li>New "vchattr" command to change a virtual user's attributes.
+<li>New "vchforwards" command to change the forwarding addresses of a
+ user.
+<li>Executable configuration settings are treated as executable files
+ rather than lists of statements to execute.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>Record parsing routines will read either record format but will write
+ out new record format.
+<li>Daemon command dispatching now requires seperate virtual domain and
+ virtual user arguments (all the CGIs do this anyways), as opposed to
+ allowing "baseuser-virtual".
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed non-portable increment statement in vconf2dir shell script, as
+ well as a couple of other bugs.
+<li>Fixed bug in vdeliver that would cause it to loop without sleeping
+ when it couldn't write to the output file.
+<p>
+</ul>
+NOTES:
+<ul>
+<li>I would consider this an unstable release. Adding and deleting users,
+ delivery, and password checking have been tested, but little else. I
+ just want to get this out. There are so many big changes in this one
+ that there are bound to be unexpected bugs.
+<li>Despite the change in the record format, no password table upgrading
+ will be necessary, as this version can read in both new and old
+ records.
+<li>The "vaddalias" command has been superceeded by "vadduser -D".
+<li>The "vchalias" command has been replace with "vchforwards".
+<li>The "vdelalias" command has been removed since "vdeluser" does both
+ jobs.
+<li>Support for quota management and account expiry are not included yet.
+<li>The C++ CGIs are limited to adding aliases with a single forwarding
+ address. The generic Python CGI can be used to create users with
+ multiple forwarding addresses. I intend to remove most or all of the
+ C++ CGIs in favour of a more generic interface.
+</ul>
+<hr>
+<h2>Changes in version 0.95</h2>
+<p>
+New Features:
+<ul>
+<li>vdeliver now has a hook to execute a list of programs before and after
+ delivering an email. See doc/configuration.* for full details.
+<li>checkvpw now has a hook to execute a list of programs before and after
+ changing its uid, and after executing the subprogram
+<li>The bulletins facility is now a standalone program called vpopbull.
+<li>There is a new program showvconfig which can list the configuration
+ information.
+<p>
+</ul>
+Internal Changes as above.
+<p>
+Bug Fixes:
+<ul>
+<li>The call to execl in vdeliver when calling qmail-queue was missing a
+ parameter.
+</ul>
+<hr>
+<h2>Changes in version 0.94</h2>
+<p>
+New Features:
+<ul>
+<li>vdeliver and checkvpw no longer call up to vmailmgrd to do user
+ lookups and authentication. This makes them significantly faster,
+ since the daemon no longer does any useful memorization of any kind of
+ data (no password or virtualdomains caches, etc.), and the socket
+ connection and fork took significant amounts of time.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>The virtual user and virtual password table manipulation were moved
+ into a class interface. This will be (once the password content
+ changes are integrated in the next couple of versions) the official
+ API target for building alternative database backends (like the much
+ requested MySQL interface).
+<li>Removed the "check" command from the daemon, since it's no longer
+ used.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>vdeliver still used a hard coded /var/qmail instead of
+ config->qmail_root().
+<p>
+</ul>
+NOTES:
+* You will no longer need to have vmailmgrd running to use checkvpw,
+<ul>
+ vdeliver, and the command-line tools. You only need vmailmgrd (and
+ the vmailmgr-daemon RPM package) if you need to use the CGIs.
+</ul>
+<hr>
+<h2>Changes in version 0.93</h2>
+<p>
+New Features:
+<ul>
+<li>New configuration system, based on individual files per configuration
+ parameter rather than one big file. Should be more extensable this
+ way, and has been benchmarked to be faster. The configuration files
+ are documented in the configuration.{html,texi,txt} files.
+<li>New configuration system also set up to allow domain-local
+ configurations by putting a directory named ".vmailmgr" in the domain
+ directory. This IS (unlike my last attempt) read properly by the
+ daemon and all the utilities and clients. The daemon switches over to
+ checking for local configuration items immediately after determining
+ what user/domain is being handled.
+<li>A new "qmail-root" configuration parameter to allow for installations
+ where qmail is not installed in /var/qmail.
+<p>
+</ul>
+Internal Changes:
+<ul>
+<li>All the v* commands now do a chdir to $HOME before continuing.
+<li>A virtual domain class has been set up, and is used to reference each
+ domain through a user, with both a user-local and domain-local
+ configuration structure. This will shortly be used to set up multiple
+ virtual domains per user.
+<li>Imported new and improved mystring and fdbuf libraries.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>The .qmail-default file is created with mode r--r--r-- to prevent
+ qmail problems with a writable delivery file in situations where the
+ umask is less restrictive than 022.
+<p>
+</ul>
+IMPORTANT NOTES:
+* This version uses a new configuration structure. You *MUST* run the
+<ul>
+ included vconf2dir program. The RPM tries to do this automatically.
+</ul>
+<hr>
+<h2>Changes in version 0.92.2</h2>
+<p>
+Bug Fixes:
+<ul>
+<li>Delivery to partially qualified aliases was broken again in a few hard
+ to trace cases by potentially changing one character in the domain
+ address. Fixed by rewriting the envelope building code into something
+ simpler and more efficient.
+</ul>
+<hr>
+<h2>Changes in version 0.92.1</h2>
+<p>
+Bug Fixes:
+<ul>
+<li>Delivery to partially qualified aliases (such as the common 'root@')
+ caused vdeliver to either crash itself or to cause qmail-queue to
+ crash (since qmail-queue expects FQDN addresses). This behavior has
+ been fixed to make such addresses use a domain name of the contents of
+ control/me.
+</ul>
+<hr>
+<h2>Changes in version 0.92</h2>
+<p>
+New Features:
+<ul>
+<li>Aliases can now have passwords. See the man page for vaddalias or the
+ CGI documentation for details on how to create such an alias. The
+ intended effect is that, once set up, a virtual user could "own" an
+ alias, for the purpose of changing its destination (or password, of
+ course).
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Delivery to aliases in vdeliver used to go through qmail-inject. This
+ would cause qmail to reformat headers or even bounce the message.
+ vdeliver now sends aliases through qmail-queue, the same way that
+ qmail itself does it.
+</ul>
+<hr>
+<h2>Changes in version 0.91</h2>
+<p>
+New Features:
+<ul>
+<li>Command-line and CGI programs to change an alias (to avoid the delete,
+ recreate cycle).
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Always set the mode on created files to be read-write-only by owner.
+<p>
+</ul>
+Other Changes:
+<ul>
+<li>vdeliver now uses fdbuf instead of raw I/O to deliver content.
+<li>Changed the default default username from '*' to '+', to avoid
+ confusion when typing '*' at a shell prompt.
+<li>Command-line tools now count and report the number of errors
+ encountered and exit false if any errors occurred.
+</ul>
+<hr>
+<h2>Changes in version 0.90.2</h2>
+<p>
+New Features: None
+<p>
+Bug Fixes:
+<ul>
+<li>Fixed compile problem on systems lacking the O_SYNC definition.
+<li>Fixed compile problem on systems where perror is in stdio.h, and
+ stdio.h is not included through other includes.
+<p>
+</ul>
+NOTES: If you did not have a problem compiling 0.90 or 0.90.1, don't
+bother with this version.
+<hr>
+<h2>Changes in version 0.90.1</h2>
+<p>
+New Features: None
+<p>
+Bug Fixes:
+<ul>
+<li>Added definitions for MIN and MAX in md5-crypt.c if they aren't
+ defined by the included headers.
+<li>Removed the include of errnos.h in vpwentry_putpw.cc
+<p>
+</ul>
+NOTES: If you did not have a problem compiling 0.90, don't bother with
+this version.
+<hr>
+<h2>Changes in version 0.90</h2>
+<p>
+New Features:
+<ul>
+<li>Eliminated all dependance on any C++ library by incorporating my own
+ C++ I/O library.
+<li>Dropped the RSA MD5 library and incorporated the GNU MD5 code.
+<li>Added the GNU md5-crypt module which should provide compatibility with
+ all systems that do MD5-based passcodes. The new code will read in
+ and authenticate against standard DES-crypted codes, the new standard
+ MD5-crypted '$1$' style codes, and my mistaken MD5 hashes (for
+ temporary backwards compatibility), and will write out the '$1$' style
+ MD5 codes.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Fixed a nearly invisible bug in the parsing of the configuration file
+ (it was too lenient in the syntax it allowed).
+<li>In the bulletin code, the timestamp file was named wrong
+ ("maildir/cur/.timestamp" instead of "maildir/.timestamp"), and it was
+ not created with a proper mode flag.
+<p>
+</ul>
+Other Changes:
+<ul>
+<li>This package is now distributed under the GPL.
+<li>The daemon will now not print out any "Accepted Connection" messages
+ unless the verbose flag is set.
+<li>Inverted the sense of the crypt flag in configure. There is now a
+ "--enable-crypt" flag which causes the code to revert to only using
+ crypt for password encryption and comparison (the default is to use
+ the built-in md5-crypt module).
+<p>
+</ul>
+NOTES:
+<ul>
+<li>My plan to move from a fork-based daemon to a thread-based one is on
+ temporary hold until I can complete several other more important
+ reorganizations and cleanups, most importantly completing a generic DB
+ interface layer.
+</ul>
+<hr>
+<h2>Changes in version 0.89</h2>
+<p>
+New Features:
+<ul>
+<li>Changed the file format for the virtual password tables to using CDB
+ tables.
+<li>The daemon now forks immediately after accepting a connection,
+ allowing for greater concurrency in the POP3 server.
+<p>
+</ul>
+Bug Fixes:
+<ul>
+<li>Use a ".timestamp" file in a virtual user's maildir to determine the
+ last login time for bulletin delivery.
+<p>
+</ul>
+Other Changes:
+<ul>
+<li>Removed all the cache tables in the daemon.
+<li>Did a major reorganization of the libraries and header files.
+<p>
+</ul>
+IMPORTANT NOTES:
+* This package now uses an incompatible file format for the virtual
+<ul>
+ domain password tables. You *MUST* run "vpasswd2cdb" in each
+ domain to convert your tables before starting the new daemon!
+</ul>
+<hr>
+<h2>Changes in version 0.88</h2>
+<p>
+New Features:
+<ul>
+<li>Long passwords are now supported using MD5 hashing to create the
+ encoded version. The code will still read the older passwords but
+ will always write out MD5 hashes.
+<p>
+</ul>
+Bug Fixes: None
+<p>
+Other Changes:
+<ul>
+<li>I am now finally using automake to build the package.
+</ul>
+<hr>
+</body>
+</html>