Release History
Changes in version 0.97
New Features:
- Aliases can now have autoresponders.
- New "stat" command in the daemon to lookup the mailbox size.
- Added a "dumpvuser" command, to output all of an account's data.
- Renamed vpasswd2db to vupgrade and allvpasswd2db to vupgrade-all.
- Authentication recognizes plain text (null-crypt) passwords.
- Added options to turn off execution of vdeliver-predeliver and
vdeliver-postdeliver.
- Added option to vadduser to specify the pre-encrypted password.
Internal Changes:
- All accounts are created with an account directory now.
- Created a vpwtable writer interface, and removed the CDB-specific
commands.
- Added adduser3 daemon function, which works the same as the existing
adduser2 function but with an additional has-mailbox parameter.
- New CDB library that uses mmap instead of file reads for efficiency.
- Removed the vcheckquota and vpopbull tools that are now part of the
vmailmgr-tools package.
Bug Fixes:
- Fixed a bug in Python library that caused the listdomain command to fail
on some OS's.
- Fixed a bug in the PHP library that caused long listdomains to fail.
- Exit code 99 from vdeliver-predeliver now causes vdeliver to exit
(with code 99) without delivering the message.
- Fixed a bug that caused creating directories with a trailing slash to
fail.
- Fixed the use of libstdc++ in showvconfig.
- Personal information can now be changed by the virtual user in the daemon.
Changes in version 0.96.9
New Features:
- vdeluser now has an option to prevent it from deleting users with a
mailbox.
- 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.
Internal Changes:
- Cleaned up the vpwtable API.
- New CLI documentation generator, should help keep the man pages and
the programs in sync.
- Major overhaul to the Python library.
Bug Fixes:
- Fixed error handling in vdeliver to properly handle file-system quota
errors.
- Fixed a bug in the Courier IMAP authentication module that prevented
non-virtual users from authenticating.
- The daemon now exits immediately if a SIGALRM or SIGPIPE is caught,
instead of completing the action.
- Fixed a bug in autodetecting Python. It should now work with any
version of make.
Changes in version 0.96.8
New Features:
- Added a quota checking program for use in vdeliver-predeliver.
- The authvmailmgr Courier-IMAP auth module now executes
authvmailmgr-presetuid and authvmailmgr-postsetuid before and after
executing the setuid respectively, just like checkvpw.
Internal Changes:
- The daemon lookup command now returns all of the virtual user data,
not just the mailbox and forwarding.
Bug Fixes:
- Fixed a typo in the vmailmgrd run script.
- 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.
- Fixed a bug in the daemon that would allow disabled autoresponders to
be written to.
- Fixed a bug in the subprogram execution code that would cause the
wrong exit status to be returned.
- vdeliver now rewinds standard input before executing postdeliver.
- The autoresponse daemon command will now read the disabled
autoresponse file if the enabled one does not exist.
- Fixed note on setting up a domain in the HOWTO.
- Fixed a bug in the fdbuf library.
Changes in version 0.96.7
New Features:
- Contains configure-time switchable support for GDBM virtual user tables.
- 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.
Internal Changes:
- Updated PHP code.
- The daemon now relies on ucspi-unix to handle connections and forking
instead of doing it internally.
- 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.
- Reorganized the vpwtable code somewhat.
Bug Fixes:
- The daemon now initializes its random number generator each time it
handles a command, which should make it generate different salts for
password hashes.
- The python subdirectory no longer requires GNU make to build, and
should no longer build at all if Python cannot be located.
Changes in version 0.96.6
New Features:
- 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).
- Added autoresponse CGI written in Python, as well as updated Python
library code.
- Updated PHP code from Mike Bell.
- Replaced the FAQ and HOWTO documents with the revised ones by Dan
Kuykendall.
Internal Changes:
- The necessary parts of the Courier IMAP "authlib" library is now
included in this package. The Courier IMAP authentication module is
now always built.
- The Courier IMAP module is now part of the standard RPM.
Bug Fixes:
- Fixed a problem with converting from old records that didn't set the
virtual user flags properly.
- Fixed a problem with the virtual user creation time field not being
set properly.
- Fixed a bug in vdeliver that would cause any error from the predeliver
script to be treated as a temporary failure.
- Fixed a bug in the domain name lookup code that caused case sensitive
domain name comparisons.
Changes in version 0.96.5
New Features:
- 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.
- Account expiry is handled by the authentication tools and by vdeliver.
Internal Changes:
- 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.
Bug Fixes: None
Changes in version 0.96.4
New Features:
- Added an upgrading section in the FAQ.
- The command-line tools now have a "--quiet" option to suppress all
status messages.
- Added a "vchforwards" CGI interface.
- Modified the "vaddalias" CGI program to accept a comma-seperated list
of destinations.
- Added some sample HTML pages for the CGIs.
Internal Changes:
- Minor updates to the mystring and fdbuf libraries.
Bug Fixes:
- Fixed a problem that caused the Courier IMAP authentication module to
fail for users of the form "baseuser-virtuser". It should work now.
Changes in version 0.96.3
New Features: None
Internal Changes:
- Removed the "include" directory.
- Made vpwtable & vpwentry a seperate source directory.
- 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.
Bug Fixes: None
Changes in version 0.96.2
New Features:
- Updated the FAQ, and added some new answers.
- Added a Courier IMAP authentication module. This module does not yet
work, unfortunately.
- Tossed the existing non-functional PHP3 module and added a working one
(written in PHP3) from Mike Bell.
- Modified vsetup to call programs before and after setting up the
domain.
- Added new "vauthenticate" command.
- Turned the small vaddalias program into a simple shell script.
Internal Changes:
- Moved the Python code into its own directory, like the PHP3 stuff.
- Moved the checkvpw module into an "authenticate" directory.
- Imported changes to the CLI library to make it behave more like the
standard getopt.
Bug Fixes:
- Fixed some bugs in the Kerberos5 configuration handling.
Changes in version 0.96.1
New Features:
- Output of listvdomain CGI has changed slightly to reflect the change
in internal data structures.
Internal Changes:
- Changed listdomain daemon protocol to speed up domain listings and to
allow for more information (not yet present in the listdomain CGI).
Bug Fixes:
- Fixed bug in building Python code from input files with non-GNU make.
Changes in version 0.96
New Features:
- Record data format has been enhanced to add personal information,
simple quotas, and expiry information, plus other extra data.
- Messages can now be delivered to both a mailbox and a list of
forwarding addresses at once.
- Programs executed from checkvpw or vdeliver will have all the above
data set in environment variables.
- listvdomain can now list only users, only aliases, or selected names.
- The listvdomain CGI has improved formatting ability.
- Preliminary support for Kerberos5 authentication. Please tell me if
this works for you if you need this, as I can't test it myself.
- New "vchattr" command to change a virtual user's attributes.
- New "vchforwards" command to change the forwarding addresses of a
user.
- Executable configuration settings are treated as executable files
rather than lists of statements to execute.
Internal Changes:
- Record parsing routines will read either record format but will write
out new record format.
- Daemon command dispatching now requires seperate virtual domain and
virtual user arguments (all the CGIs do this anyways), as opposed to
allowing "baseuser-virtual".
Bug Fixes:
- Fixed non-portable increment statement in vconf2dir shell script, as
well as a couple of other bugs.
- Fixed bug in vdeliver that would cause it to loop without sleeping
when it couldn't write to the output file.
NOTES:
- 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.
- 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.
- The "vaddalias" command has been superceeded by "vadduser -D".
- The "vchalias" command has been replace with "vchforwards".
- The "vdelalias" command has been removed since "vdeluser" does both
jobs.
- Support for quota management and account expiry are not included yet.
- 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.
Changes in version 0.95
New Features:
- vdeliver now has a hook to execute a list of programs before and after
delivering an email. See doc/configuration.* for full details.
- checkvpw now has a hook to execute a list of programs before and after
changing its uid, and after executing the subprogram
- The bulletins facility is now a standalone program called vpopbull.
- There is a new program showvconfig which can list the configuration
information.
Internal Changes as above.
Bug Fixes:
- The call to execl in vdeliver when calling qmail-queue was missing a
parameter.
Changes in version 0.94
New Features:
- 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.
Internal Changes:
- 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).
- Removed the "check" command from the daemon, since it's no longer
used.
Bug Fixes:
- vdeliver still used a hard coded /var/qmail instead of
config->qmail_root().
NOTES:
* You will no longer need to have vmailmgrd running to use checkvpw,
vdeliver, and the command-line tools. You only need vmailmgrd (and
the vmailmgr-daemon RPM package) if you need to use the CGIs.
Changes in version 0.93
New Features:
- 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.
- 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.
- A new "qmail-root" configuration parameter to allow for installations
where qmail is not installed in /var/qmail.
Internal Changes:
- All the v* commands now do a chdir to $HOME before continuing.
- 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.
- Imported new and improved mystring and fdbuf libraries.
Bug Fixes:
- 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.
IMPORTANT NOTES:
* This version uses a new configuration structure. You *MUST* run the
included vconf2dir program. The RPM tries to do this automatically.
Changes in version 0.92.2
Bug Fixes:
- 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.
Changes in version 0.92.1
Bug Fixes:
- 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.
Changes in version 0.92
New Features:
- 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).
Bug Fixes:
- 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.
Changes in version 0.91
New Features:
- Command-line and CGI programs to change an alias (to avoid the delete,
recreate cycle).
Bug Fixes:
- Always set the mode on created files to be read-write-only by owner.
Other Changes:
- vdeliver now uses fdbuf instead of raw I/O to deliver content.
- Changed the default default username from '*' to '+', to avoid
confusion when typing '*' at a shell prompt.
- Command-line tools now count and report the number of errors
encountered and exit false if any errors occurred.
Changes in version 0.90.2
New Features: None
Bug Fixes:
- Fixed compile problem on systems lacking the O_SYNC definition.
- Fixed compile problem on systems where perror is in stdio.h, and
stdio.h is not included through other includes.
NOTES: If you did not have a problem compiling 0.90 or 0.90.1, don't
bother with this version.
Changes in version 0.90.1
New Features: None
Bug Fixes:
- Added definitions for MIN and MAX in md5-crypt.c if they aren't
defined by the included headers.
- Removed the include of errnos.h in vpwentry_putpw.cc
NOTES: If you did not have a problem compiling 0.90, don't bother with
this version.
Changes in version 0.90
New Features:
- Eliminated all dependance on any C++ library by incorporating my own
C++ I/O library.
- Dropped the RSA MD5 library and incorporated the GNU MD5 code.
- 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.
Bug Fixes:
- Fixed a nearly invisible bug in the parsing of the configuration file
(it was too lenient in the syntax it allowed).
- 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.
Other Changes:
- This package is now distributed under the GPL.
- The daemon will now not print out any "Accepted Connection" messages
unless the verbose flag is set.
- 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).
NOTES:
- 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.
Changes in version 0.89
New Features:
- Changed the file format for the virtual password tables to using CDB
tables.
- The daemon now forks immediately after accepting a connection,
allowing for greater concurrency in the POP3 server.
Bug Fixes:
- Use a ".timestamp" file in a virtual user's maildir to determine the
last login time for bulletin delivery.
Other Changes:
- Removed all the cache tables in the daemon.
- Did a major reorganization of the libraries and header files.
IMPORTANT NOTES:
* This package now uses an incompatible file format for the virtual
domain password tables. You *MUST* run "vpasswd2cdb" in each
domain to convert your tables before starting the new daemon!
Changes in version 0.88
New Features:
- 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.
Bug Fixes: None
Other Changes:
- I am now finally using automake to build the package.