Numbers in square brackets ([]) are tracker items on SourceForge with patch or info related to the entry. 5.4.20 - Released 21-Aug-2007 Bill Shupp/Rick Widmer - add show_error function to vpopmaild Rick Widmer - Make vadduser check that domain exists and user does not exist before prompting for password - Add TODO file to record stuff I don't want to forget - Add README.vdelivermail - Add examples for delete and bounce-no-mailbox to help on vadddomain Remo Mattei - Change upgrade script to use pw_domain instead of domain in example code to change domain name field lengths. John Simpson, Joshua Megerman, Adam Sloan - Fix bad exit if script exists but can not be executed - Fix missing onchange on delete of alias domain John Simpson - Bug fix for vuserifo - vlimits Harm van Tilborg - Add support to vpopmaild to retrieve used storage sizes of domains or users - mod_user did not respond +OK if command is valid Vitali Malicky (coonardoo), Ismail Yenigul - add ldap patch [1909348] Ronnie Karstenberg (rkarstenberg) - vdominfo crashes with a lot of aliased domains [1765534] 5.4.19 - released 21-May-2007 Rick Widmer - update to aclocal 1.9.5, automake 1.9.5, autoconf 2.59 to match my system - Don't set LocalPort to a real port number so the default case has a chance to identify how vchkpw was called. - ./configure tells status of onchange script setting - Fix rights problem with alias commands. - thanks Alessio Cecchi - Only report out of order entries when sorting files once per file - make pop syslog ./configure setting report itself like the rest of the choices - Make error messages more consistant (P/O checking Jonathan's bug report) Harm van Tilborg, Quinn Comendant - Do not allow delete of catchall address within account. [1511531] Bill Shupp - enable-onchange-script defaults to no. NOTE: Still need to supress error message if file not found. - Fix bug in output format of list_alias - Remove unneeded AC_DEFINE_UNQUOTED from ONCHANGE_SCRIPT in configure - Port remaining spamassassin code from 5.5 branch to stable-5_4. - Add new --enable-maildrop option, and new NO_MAILDROP bit flag. - New Documentation: README.maildrop, README.spamassassin - Sample maildroprc files for both 1.x and 2.x (maildrop/*) Fabio Busatto - #include at top of vpopmail.h blaze_cs - Ldap back end reads config parms from a file at runtime. [1056529][1476647] Stoyan Marinov (smarinov) - add %m$t style for SQL queries format string [1236349] - connect to mysql with a unix socket [1437085] 5.4.18 - released 30-Dec-06 Joshua Megerman (offsides) - SQL backend fixes - NOTE: Requires database changes. See UPGRADE for 5.4.18. [1619489] - MySQL Tablename Backquotes - Add back quotes around table names so MySQL will allow names that start with a digit. [1619491] Drew - add .qmail-extension ability to vdelivermail - mods to Delivered-To: header to support .qmail-extension John Simpson - onchange - call a script when users or domains are changed see README.onchange. - cslogin - Compact and silent login options for vpopmaild note: don't blame John for problems in this, I changed a lot to make it fit with other changes. rww Tijs Zwinkels - vmysql: add missing mysql_free_result to fix mem leak. Tom Collins - vdelivermail: Add missing loop check. - vchangepw: Minor changes to Peter's error checking. [1573277] Rick Widmer (rwidmer) - Multiple changes to vpopmaild: Add rename_file command. Expert mode works in vmoduser. Commands that are not yet implemented say so. Blank input lines are not an error in vpopmaild. Separate help before and after login in vpopmaild. Allow 3 tries to login to vpopmaild. Clean up if add_user fails because of bad user data. Add termination code (.) to get_lastauth return. Number the error messages (XXX) in vpopmaild If invalid option is sent in set_limits, show warning - Add various patches from others listed below: Peter Pentchev (roamer) - Various sanity checks and minor optimizations [1573292] - Fix child handling - waitpid and sys/wait.h [1573288] - Dynamicallly allocate sortdata[] in vpopmail.c [1573287][1596259] - Include ctype.h in the PostgreSQL backend [1573284] - Set SHELL in vdelivermail before executing external programs [1573280] - Some more error checking in vchangepw [1573277] - Improve the vpopmaild documentation [1573269] - Clean cdb files in the distclean target [1573267] - Optional building as non-root [1573266] Trent Lloyd (lathiat) - Add vailas add/delete/list support to vpopmaild [1555398] - Refresh assign cache if a domain is deleted [1529744] Bill Shupp - Add user_count function to vpopmaild - Add stat_file function to vpopmaild 5.4.17 - released 12-Jul-06 Rick Widmer - vpopmaild: remove debug output from find_domain function. - vpopmail: fix segfault in users/assign sorting code caused by entries that don't contain a dot (.). [1514733] Jeremy Kister - vdelivermail: pass qmail-inject's error code instead of always deferring. [1484105] Ron Gage - vmysql: reconnect to server if connection timed out. Rolf Eike Beer - vchangepw: add error checking and other code improvements. [1371572] - change API for vgetpasswd() to make more sense. [1371566] - Update del_control() to properly handle remove_lines() return value. [1514613] - vpopmail: minor improvements to remove_lines(). [1371536] secnetdk - vmysql, vpgsql: remove entries from vlog when deleting a domain or a user. [1099800, 995762] Michael Krieger - vcdb, vpopmail: pass mode to open() when creating files. Fixes bug where lock files were created with 0000 permissions. [1499043] - vpalias: set mydir to NULL after closing it. [1499045] Tom Collins - vpalias: don't trash alias name passed to valias_insert(). [1491087] - vpopmaild: don't show last auth if auth-logging disabled. [1511313] - Only include err.h if it's present. [1484110] - vpgsql: convert domain name to lower case when creating table name. [1227383] - vpopmail: fix minor error in remove_lines() when file locking not defined. 5.4.16 - released 7-May-06 Michael Krieger - vpalias: Properly handle some empty search results. Ken Jones - vpalias: wasn't allocating enough memory for alias name in valias_select_names (missing one byte for NULL). [1479842] Jianbin Xiao - vmysql: reconnect to server if connection was dropped. [1469731] Rick Widmer - vpgsql: fix queries to allow domains starting with digits. John Simpson - vpgsql: fix compile errors introduced in 5.4.14. - vdominfo: undo change from 5.4.14 that displayed alias domains incorrectly. Toshihiko Kyoda - vdelivermail: check for over quota when creating temp mail file. Tom Collins - vpalias: Fix double-free in code ported from 5.5 branch. - valias: exit non-zero on error, send all errors to stderr. - vchkpw: make sure we have cleartext pass before checking SMTP_AUTH or APOP logins. [1453216] - Remove vactivedir code since it's just a client for a non-existent server. 5.4.15 - released 24-Feb-06 Tom Collins - Add 'compile' script to distribution. - If warn() isn't available, use fprintf() instead. - vmysql.c: add missing valias_select_names, valias_select_names_next, and valias_select_names_end from 5.5 branch. - vpalias.c: #include "config.h" before we check if VALIAS defined. 5.4.14 - released 17-Jan-06 Tom Collins - vmysql.c: Increase buffer size in vauth_adduser() and use correct size when calling snprintf. - Backport most of 5.5.1, including code required for vpopmaild. - Allow --enable-valias option for Postgres backend (incorrectly disabled in 5.4.13). - Only check a domain's disk usage when a quota is set. [1396238] Bill Shupp - vpopmaild: store quota in proper format and update maildirsize on quota change. Gaetan Minet - Remove lock file in open_smtp_relay() even if update_rules() fails. Rick Morris - vdelivermail.c: Fix problem where "# delete" in .qmail file was being ignored. [1360346] Robin Bowes - Add vpopmaild (the vpopmail daemon) from 5.5 development series. 5.4.13 - released 16-Sep-05 Riccardo Bini - vdelivermail.c: Use DOMAINS_DIR instead of hard-coded "domains". Jory A. Pratt - Compile libvpopmail with -fPIC option so amd64 users can compile courier-authlib against libvpopmail.a. Tom Collins - hmac_md5.c: include for bzero and bcopy declarations. - configure.in: fix checks to limit enable-valias to MySQL only. - INSTALL: make clear that valias only applies to MySQL backend. - vpopmail.c: modify get_remote_ip() to work with xinetd, not just tcpserver from daemontools. 5.4.12 - released 4-Jul-05 Tom Collins - vdelivermail: read full message, even on catchall delete/bounce to avoid SIGPIPE error if maildrop is calling vdelivermail. - vdelivermail: missing declaration when QMAIL_EXT defined. - vpopmail.h: remove declaration of crypt() and use #include crypt.h instead (if present). - configure: remove enable-domainquotas option until the domain quota code is fixed. - maildirquota.c: fix bug from 5.4.11 that could accidentally close stdin and result in a failed delivery in vdelivermail. - vpopmail.c: better error checking in r_mkdir(). 5.4.11 - released 20-Mar-05 Tom Collins - vdelivermail: code cleanup (fix exit codes, improve reliability, fix problems with quotas). [837146, 840749, 904155, 1111291, 1119741, 1145618] 5.4.10 - released 20-Mar-05 Stephan Tesch - md5.h: fix related to segfaults in vchkpw on Sparc64. [1144851] Peter Seiderer - vcdb.c: vauth_getpw() didn't check for invalid domain. Bill Shupp - vuserinfo: display spamassassin info. Anonymous - vpopmail.c: Add missing ifdef that preventing modification of one-character username accounts. Niki Denev - maildirquota.c: Remove double free() and fix use of free'd memory in docheckquota(). [1101316] - contrib/qmail-maildir++.patch: same fix as for maildirquota.c. Tom Collins - vlimits.c: print errors to stderr. - vmoduser.c: add clarity to usage/help for bit flags. - vcdb.c: be sure to close password file in vauth_getpw(). - md5.h: use cdb/uint32.h (built by configure) for defining uint32. [1144851] - vpopmail.c: fix vauth_user() to not clobber pw_uid and pw_gid. - vpopmail.c: If setting user quota for new user fails because newly created user does not exist, sleep 5 seconds and try again. (This can happen on servers using MySQL replication.) - Remove convert/vcalias.c and related files; vcalias was replaced by dotqmail2valias. Michael Bowe - configure.in: fix typo of where the configure script says it is checking for qmail-inject when in fact it was checking for qmail-newmrh - Documentation updates to README.roamingusers. Mention the requirement of tcpserver for POP-before-SMTP. Also include some documentation on IMAP-before-SMTP. [1110269] 5.4.9 - released 26-Dec-04 Jeremy Kister - Makefile.am: fix install problem on Solaris. Some .h files weren't being installed correctly. Charles Boening - Fix logging in PostgreSQL. - Change ENABLE_{MY|PG}SQL_LOGGING to ENABLE_SQL_LOGGING. - Replace --enable-{my|pg}sql-logging with --enable-sql-logging in configure options. Tom Collins - Tweaking of Charles Boening's changes. - vchkpw: Fix problem in md5.h causing segfault in SMTP AUTH on amd64. [964843, 958799] - vpopmail.h: Add new error and flag defines from 5.5 series. - vchkpw: log webmail connections as 'vchkpw-webmail'. - vpopmail.c: fix problem related to sending SIGHUP to qmail-send. Original problem could cause "Signal 1 caught by ps" error. 5.4.8 - released 12-Nov-2004 Rick Widmer - vadddomain: Check for existing domain before prompting for password. - vdeldomain: Fix uninitialized variable warning. Tom Collins - Fix problems with valias code in vmysql.c and vpgsql.c. Storing aliases in Postgres should work now, and it should fix problems with processing Maildir valias entries in vdelivermail. [985011, 1024706, 1033801] - Fix bug in vmoddomlimits that wiped out the Domain Quota when editing default limits. - Change columns in Postgres valias table to varchar from char. See README.pgsql for instructions on fixing existing tables. - vmoduser: update maildirsize instead of just deleting it when modifying quota. - vchkpw: classify POP/IMAP connections from select IPs (defaults to 127.0.0.1) as webmail and check NO_WEBMAIL user flag instead of NO_POP and NO_IMAP. - Update qmail-smtpd-auth patch in contrib to latest (0.5.6). - Update README.quotas with note about domain quotas not working. - vpopmail.c: remove unused sys/varargs.h include. - vdominfo: fix broken -a option. - vdominfo: better display of real name for alias domains. [981335] - vpopmail.c: Improved maildir_to_email() function. [953439] Gentoo Port - Integrate vuserinfo patch to fix the -a option and to display the comment/gecos field (used for "real name"). 5.4.7 - released 23-Sep-04 Michael Bowe - Mention in README.mysql that is is possible to create mailboxes by inserting entries directly into the MySQL table. Tom Collins - Don't try to delete dir-control for domain unless users-big-dir is enabled. - Verify user exists before trying to set quota in vsetuserquota(). [984698] - Update cdb/Makefile so you can 'make install' without doing 'make' first. - Fix size comparisons to MAX_PW_X (should be ">", not ">="). - Fix possible buffer overflows in vsybase.c. - Have vconvert reset dir_control and increment it for each user added when converting from cdb to MySQL. - If crypt() doesn't support MD5 passwords, fall back to using a valid, non-MD5 salt even if MD5 passwords are enabled. - Fix format string vuln. in vactivedir.c (thanks D4rk Eagle). - Added comment to vqmaillocal.c mentioning that it isn't maintained and probably doesn't work. Makefile no longer installs vqmaillocal. 5.4.6 - released 30-Jun-04 [backport from 5.5.0] - Consolidate table creation code in vmysql.c and vpgsql.c. - Increase SQL_BUF_SIZE from 600 to 2048 for Oracle, Postgres and Sybase. - Multiple fixes to vpgsql.c related to freeing PGresults and attempting to access NULL PGresults when reporting errors. * These changes address SQL Injection vulnerability documented in * Bugtraq ID 10990 - Add qnprintf() to vpopmail.c for escaping strings in SQL queries. - Use qnprintf() when building queries in vmysql.c, vpgsql.c, voracle.pc, and vsybase.c. 5.4.5 - released 25-Jun-04 fernando (at) telemacro (dot) com (dot) br - Patch for vpgsql.c fixes bug with Postgres and roaming users (POP before SMTP). [895501] Françoi Wautier - Fix method used to open database in vauth_open_update of vmysql.c. [967994, 946983] Pit Palme - Show 'delete' as valid option to vdelivermail in docs. [951245] rstml - Hide error message during POP3 auth with Postgres. [915485] Tom Collins - Fix `vuserinfo -l` output, based on Bill Shupp's patch (moved code to a single function call). [961742] 5.4.4 - released 26-May-04 Tom Collins - Link math lib when compiling for MySQL. - Create ~vpopmail and ~vpopmail/etc in configure script. [930939] Note that any code creating files in ~vpopmail should probably be moved from configure and into Makefile (under make install). - Use MAX_PW_DIR when checking max size of domain's directory. Ken Jones - vdelivermail.c: wait on pid for qmail-inject to finish before continuing in deliver_mail function. [from 5.5.1] Michael Bowe - Minor documentation tweaks - Fix for : If roaming users were enabled, and auth module was not SQL based, and user's IP address was not available (eg being called from Courier-IMAP with authdaemon enabled), then open_smtp.tmp.pid files would be created for each auth but never removed. 5.4.3 - released 11-Mar-04 Tom Collins - Add missing link libs (m, nsl, socket) on Solaris installs. - Fix vsetuserquota() to write properly formatted quota to maildirsize file. - Update vdominfo to ignore non-domains in users/assign. - Update vconvert and dotqmail2valias to ignore non-domains in users/assign. 5.4.2 - released 22-Feb-04 Tom Collins - Remove attempts to free() static buffers in vpgsql.c. [888888] - Fix problems with creating valias table in vpgsql.c. [892595] - Remove unnecessary check for C++ from configure[.in]. - Don't include DESTDIR when building inc_deps and lib_deps. [886988] - Properly parse Maildir and mbox delivery lines in .qmail files in vdelivermail (and exit(111) for mbox lines). [889756] - Temporarily disable -s option to vadduser (since it's broken). [895375] Anders Brander - Add contrib/checkpassword_debug.[README,c] for testing and debugging problems with vchkpw. [862608] 5.4.1 - released 10-Feb-04 Tom Collins - Add dotqmail2valias program for converting .qmail-alias files to valias table entries. 5.4.0 - released 1-Feb-04 Tom Collins - Update configure with correct location of vlimits.default. - Fix typo (ammount) in vmoddomlimits. [882884] - Don't include $(DESTDIR) when building vpopmailbindir. [884247] - Mention compatability issues with older SMTP AUTH patches. [882351] 5.4.0-rc2 - released 19-Jan-04 Michael Bowe - Added some basic 5.4 upgrade notes to the UGPRADE file - Fix typo's in configure.in that relate to the errors generated when a discontinued configure option is used - Fix bug when autocreating a user dir for a user who exists in the auth backend, but does not yet have a user dir allocated. [873007] - Fix bug introduced in vpopmail-5.4.0-pre2 that was preventing ~vpopmail/etc/vpopmail.mysql from being installed [874776] - vpopbull was failing to create userdirs in some cases (when the user exists in the auth backend, but did not have a dir allocated yet) [816942] - clearopensmtp was using USE_MYSQL rather than USE_SQL to determine where the roaming IPs were being stored [876016] - Update INSTALL and other guides to mention that vchkpw group does not need to be gid 89. [877154] - Update README.pgsql to include security warning regarding the postgres username/password [879124] Ken Nonaka - Fixes to vpgsql.c to clear compile errors when --enable-ip-alias-domains is enabled. [874066] Tom Collins - Check for comments earlier in deliver_mail(). - Remove unused --enable-defaultquota and code related to it. (Replaced by settings in vlimits.default.) [869411] - Remove references to --eanble-defaultquota in documentation. - vdelivermail.c: Consistent return values in deliver_mail(). - More updates to build files. [874831] - Apply patch from http://www.fehcom.de/qmail/smtpauth.html to fix CRAM-MD5 SMTP AUTH in vchkpw. [871493] - Have vchkpw.c use get_remote_ip() to convert IPv6 to IPv4 (fixed problem with ::ffff: in relay file). [876019] - Fix bug in vpalias where .qmailadmin-limits was incorrectly thought to be alias for user 'dmin-limits'. - Sort by alias in valias_select_all (needed for QmailAdmin). - Add new valias_remove() command to remove a single line from valias table. (not implemented for cdb backend yet) - Fix incorrect buffer use in PQexec() calls. - Convert '.' to ':' when building filename in valias_select() in vpalias.c. - Remove length check for 'alias' parameter in vpalias.c's valias_select_all() and valias_select_all_next() since it's a return value buffer. - Remove duplicate code in valias_select_all_next() in vpalias.c. - Fix configure.in to update cdb/conf-cc and cdb/conf-ld. [877166] - Add /usr/local/mysql/include/mysql to search list for incdir, and /usr/local/mysql/lib/mysql for libdir. [877168] - Remove cdb/compile, cdb/load, cdb/conf-cc and cdb/conf-ld as they are automatically generated during configure/make. - Add missing $(DESTDIR) to some @vpopmaildir@ paths in Makefile. [879103] Bill Shupp - Add -o option to vmoduser to set V_OVERRIDE flag. [875505] - Contributed README.vlimits [855693] - Updated README.quotas Casey Zacek - Create maildirsize file in vsetuserquota(). [869457] Anders Brander - Allow optional length for random passwords in vadduser and vadddomain. [848228] 5.4.0-rc1 - released 1-Jan-04 Michael Bowe - Code fixes and documentation work for LDAP module. Incl updated README.ldap, vldap.c, vldap.h, ldap/slapd.conf, ldap/vpopmail.ldif. [863881] [811000] [864643] - Rewrote the README.mysql based on my web based guide. - Documentation tweaks for README.pgsql, README.roamingusers. Tom Collins - Remove unused var (cp), change random/srandom to rand/srand in vpopmail.c to remove compiler warnings. - Fix Makefile to use correct owner/group/permissions for install-strip. - Fix configure to indicate that --enable-auth-logging is default. 5.4.0-pre2 - released 21-Dec-03 *** Note that the configure option for setting the authentication *** module has changed. Instead of --enable-mysql, use *** --enable-auth-module=mysql. Casey Zacek - Keep vlimits_setflags() in vlimits.c when mysql-limits is enabled. [858109] - Create maildirsize file when adding new user. [858994] Tom Collins - open_smtp_relay(): fix address conversion of '::ffff:127.0.0.1' ip format, move code to function and replace calls to getenv("TCPREMOTEIP"). [858586] - When optimizing adddomain, rebuild users/cdb after each addition instead of postponing. [859707, temporary fix] - Move maildir_to_email() from vdelivermail.c into vpopmail.c, replace dupe code that tries to do the same thing. [859098] - Fix domain quota checks to work with hashed directories. [859098] - Fix bug when calling format_maildirquota() with NOQUOTA. - Document use of NOQUOTA in vadduser. [862315] - Fix Makefile so `make install` works from checked out CVS. [863862] Michael Bowe - Revise configure script so choice of auth module is now "OR" rather than "AND". Auth module selection now uses the format : --enable-auth-module=cdb|mysql|pgsql|ldap|sybase|oracle|activedir Rather than : --enable-mysql --enable-pgsql --enable-ldap etc If the old style is used, then the configure script will output and error and will advise the user of the updated syntax. [855691] - Removed the code that created a vpopmail.config.sh file each time the configure script is run. This file is never used, and a more accurate result can be achieved by using ./config.status --recheck [860271] - Update the vldap/qmailUser.schema so that it contains the required definition for 'clearPassword' [810999] - Modify vpopbull, so that within each domain, the users are processed alphabetically. The idea behind this is to give the operator some idea of "how far through" the mailout we are. 5.4.0-pre1 - released 10-Dec-03 Michael Bowe - Updated README.xxxauthbackend files to include indication of which auth systems are of production quality (cdb, mysql), which ones are believed to be generally functional (ldap, pgsql) and which ones are not recommended (oracle, sybase, activedir) [832302] - Review the assorted text files included in the source dir. Remove out-of-date content / files as appropriate. Updated some minor typos in the documentation [793659] - Contributed the README.roamingusers file that provides some explanation of how the vpopmail roaming users system works. - Revised the configure.in script to try and improve logic, formatting, and helpstrings. Also added tests for many new functions/libraries as per suggestions from autoscan tool. [828680] - Contributed README.ipaliasdomains file that provices some explanation of the how the vpopmail IP Alias Domains system works - Modified vdeldomain() so that it emits a warning rather than aborting should any of the steps in the delete process fail. The idea is to allow a partially installed domain to be cleanly and easily removed from the vpopmail system [821972] Tom Collins - Update more files involved in the build process. - Remove unused variable (fs) from vset_limits() in vlimits.c. [846509] - Change permissions on vpopmail.mysql to 0640. [848605] - vuserinfo: indicate whether limit came from domain limits. - Correctly apply domain limits to user accounts. - Fix problem in maildirquota.c where off_t was assumed to be long. Created wrapper function to do conversion. [797011] - Fix double-printing of email address with vpopbull -V. - vpopbull: Fix incorrect link building when file starts with '/'. - vpopbull: Send errors to STDERR. 5.3.30 - 20-Nov-03 Michael Bowe - Fixed logic error in update_rules(), to prevent "update_rules failed" error being generated on the first attempt for a roaming user to POP auth [833926] - Remove "id" column in PostgeSQL's vpopmail table. This column appears to serve no purpose, and causes errors when you try to insert your first domain [822181] - Added installation instructions for PostgreSQL to the README.pgsql file [824088] - Made the default ~vpopmail/etc/vpopmail.mysql file more verbose/descriptive - Cleared two bugs in the vauth_getall() funcion of vpgsql.c These bugs were in particular causing qmailadmin not to be able to display a list of users for a domain [837139] - Modified ifdefs throughout suite to clear compile failures with some of the auth backends if you configured with --enable-auth-logging=n [842393] Tom Collins - Install a vlimits.default file if none exists (fixes "can't read domain limits" errors). [828428,828658] - Allow for comments in vlimits.default and .qmailadmin-limits. - Ignore K/KB/M/MB modifiers on vmoddomlimits -Q. [821892] - Update help for vmoddomlimits to indicate that -Q is MB. Justin Heesemann - Add -d option to vmoddomlimits to work with vlimits.default. - Fix bitwise AND when setting pw_gid. - Fix bug when setting NO_DIALUP. [833926] Bill Shupp - Set uid/gid when creating maildirsize in vuserinfo. [832588,832592] Dmitry Vodennikov - Save/restore current working directory before/after calling vdelfiles() in vdeldomain(). [835724] Rolf Eike Beer - Fix some prototypes and typecasts in maildirquota.c to allow for compilation with cc on HP-UX 11.00. [840001] - Add vchangepw program to allow any user to change their password (modified from vpasswd). [840001] 5.3.29 - 20-Oct-03 Michael Bowe - Fix formatting error in tcp.smtp.tmp.pid filename (was being created as tcp.smtptmp.pid). Tom Collins - Remove acconfig.h; update configure.in to work without it. - Update 'missing' script with version from automake 1.6. - Send errors to stderr instead of stdout (vpopmail, vchkpw). - Add support for port 587 (submission) to vchkpw. - Increase size of VchkpwLogName in vchkpw.c to eliminate a buffer overflow. - Improve seeding for rand() and random() in vpopmail.c - Add -r (random password) option to vpasswd. - Better detection of connection type in vchkpw.c. [818943] - Remove extraneous calls to mysql_store_result(). [809472] - Minor cleanup of make_user_dir() in vpopmail.c. - Don't prompt for password in `vadduser -e ...`. [822308] - Set quota to default when adding new users. [821995] - vpgsql.c vauth_getpw(): Put in_domain on the stack. [822175] - Fix vget_limits calls. [824067, 824070] - Update example for --enable-tcpserver-file in configure. [824077] - Fix loop checking on Delivered-To header. [826231] Justin Heeseman - Set pw_flags field based on pw_gid and domain limits. [795688] - Use pw_flags instead of pw_gid to check permissions. - Allow K/KB/M/MB modifiers on vmoddomlimits -Q. [821892] 5.3.28 - released 3-Oct-03 Michael Bowe - Remove vget_real_domain() declaration from vpopmail.h. [800738] - Fix compile errors with vpgsql.c. [801528] - Add code to configure.in to search for pg_config. [801528] - Re-add vget_real_domain() to vpopmail.h and vpopmail.c [800738] Oden Eriksson - Fix wrapped line in contrib/qmail-maildir++.patch. Tom Collins - Update vmoddomlimits to use format_maildirquota(). - Fix compile errors with LDAP module. [802277] - Include vlimits.h in Active Directory and Sybase auth modules. - Update vpopbull to skip alias domains. [790778] - Look for MySQL in /usr/local/mysql/{include,lib} during configure. - Added pw_flags to vqpasswd struct, still need to update code. - Return error if link fails at end of deliver_mail(). - Fix vdeldomain() to delete things in the correct order. [805703] - Update Makefile.am to create bin/doc/etc/include/lib with correct owner/permissions if not already present. - Send errors to stderr instead of stdout (vmysql, vcdb, vpgsql). - Set umask before opening vpasswd.cdb. - Start adding CVS ID tags to each file. - Replace vgen_pass() with vrandom_pass() which doesn't leak memory. [793662, 803950] - Fix broken dupe-alias checking code in valias. [807935] - Update Makefile.am to write all libs to etc/lib_deps. [796524] - Exit non-zero for non-existent alias with `valias -s `. - Properly append /Maildir/ to catchall in vdelivermail.c. [816336] Kazuho Oku - Fix qmail_inject_open() in vdelivermail to work with addresses that start with a hyphen (-). [805907] Anders Brander - Fix mkpasswd3() to use 8-char MD5 salt (instead of 5-char). [804266] - Allow for swapped parameters to vaddaliasdomain. [812150] 5.3.27 - released 4-Sep-03 Michael Bowe - Now that MySQL prefs are stored in a separate file, set permissions on libvpopmail.a to 644 to allow non-root users to compile apps like courier-imap. [795773] - Include [RBLSMTPD=""] in tcp.smtp updates under MySQL and PostgreSQL for consistency with cdb. [795793] Tom Collins - Fix Makefile.am to use short options for better cross-platform compatability. - Update privileges on vpopmail.mysql during install. - Added 'make fix-priv' to update ownership of ~vpopmail/domains. - Move creation of inc_deps and lib_deps to Makefile.am from configure.in. - Fix vgetent() in vpopmail.c. [799466] - Move date_header() from vdelivermail.c to vpopmail.c for shared use with vpopbull.c. - Print "Date: " header in messages sent with vpopbull. [790776] - Make sure files created by vpopbull are owned by vpopmail.vchkpw and have 0600 permissions. [800030] - In valias, don't allow user to create duplicate alias. [796527] - Update quota parsing code and centralize to format_maildirquota() in vpopmail.c. [775757] - Update vsetuserquota.c to use vsetuserquota() in vpopmail.c. - Update vmoduser.c to use format_maildirquota() in vpopmail.c. - Fix -r option in vadddomain. [800212] Jorge Valdes (patch from 10-Apr-2003) - Allow vpopbull to run without -f option if -n is used. This allows `vpopbull -n -V` to display a list of users. [798034] 5.3.26 - released 26-Aug-03 Michael Bowe - Recoding work with the main focus of : * Ensuring strings are null terminated * Checking the return value of important function calls * Eliminating buffer overflow opportunities * Adding comprehensive comments to source files Files that have been reviewed so far : clearopensmtp.c, vaddaliasdomain.c, vadddomain.c, vadduser.c, valias.c, vconvert.c, vdeldomain.c, vdeloldusers.c, vdeluser.c, vdominfo.c, vipmap.c, vkill.c, vlimits.c, vmkpasswd.c, vmoddomlimits.c, vmoduser.c, vpasswd.c, vpopbull.c, vpopmail.c, vsetuserquota.c, vuserinfo.c Files that still require a review : vactivedir.c, vcdb.c, vchkpw.c, vdelivermail.c, vldap.c, vmysql.c, vpalias.c, vpgsql.c, vqmaillocal.c, vsybase.c 5.3.25 - released 26-Aug-03 *** WARNING: MySQL settings are now stored in *** *** ~vpopmail/etc/vpopmail.mysql instead of vmysql.h! *** *** Read README.mysql for details. *** Tom Collins - Fix code in vdelivermail.c that builds Delivered-To header on catchall emails. (strips "domain-" from "domain-user@domain") [785604] - Convert vpgsql.c from DOS to Unix format (strip \r). [785680] - Modified Makefile.am to allow installs to /usr/local instead of /home/vpopmail (uses install, doesn't chmod/chown). [787551] - Polished vpopmail-5.2-vmysql.patch ported by Oden. [791405] - If configured to use MySQL, Makefile.am creates a sample vpopmail.mysql if one doesn't exist and makes it read/write for vpopmail.vchkpw only. - Added tracker item numbers to ChangeLog for all closed trackers. - Updated INSTALL and FAQ with links to SourceForge. Oden Eriksson - Ported vpopmail-5.2-vmysql.patch to 5.3.24. [778502, 791405] - Added sparse documentation how to use it. Justin Heesemann - Fix vdominfo to show correct domain for alias domains when displaying all domains. [785241] - Add vmoddomlimits program to modify domain limits. Works for both vlimits and .qmailadmin-limits methods. - Add V_OVERRIDE user flag for users who aren't affected by domain limits (.qmailadmin-limits or vlimits). - Update authentication modules to apply domain limits to users. (Currently disabled pending solution to SF BUG 795688.) Evren Yurtesen - Add cleartext support to vconvert (when converting MySQL to cdb). [785690] Michael Bowe - More cleanup in vget_assign() calls. [785735] - Allow vget_assign() to return real domain when passed alias. [785682] - Fix error messages in vmysql.c. [792959] 5.3.24 - released 6-Aug-03 Tom Collins - Removed all references to timezone to be POSIX compliant. Now uses gmtime() with +0000 for date header. [777401] - Fixed bug in my updated vget_assign that caused segfaults in many cases (including vadddomain and vdeldomain). [777980] Michael Bowe - Update vget_assign calls with NULL directory pointer to use 0 for buffer size. [774525] - Add missing backslashes (\) to vpgsql.h (see 5.3.21 vmysql.h). [777923] - Check for NULL return when calling vauth_getpw() in vldap.c. [781882] Charles Boening - Update configure.in to work for pgsql compiles. [777851] - Add --enable-pgsql-logging configure option. [777851] - Add vauth_crypt() to vpgsql.c. [777851] Yann St. Arnaud - Remove #ifdef FOOB from vchkpw.c to re-enable ENABLE_LEARN_PASSWORDS feature. [783824] Jens Jahr - Support for clear text passwords when using LDAP. [783908] Oden Eriksson - Remove unnecessary errno declaration in cdb/cdb_seek.c. [784024] Evren Yurtesen - Added contrib/sendmail2vpopmail.pl for converting from sendmail aliases and virtusertable entries to vpopmail domains. 5.3.23 - released 25-Jul-03 Tom Collins - Removed timezone declaration to correct compile problem on FreeBSD. [777401] 5.3.22 - released 24-Jul-03 Moshe Jacobson - Fix maildir_to_email() to work with hashed domain directories. [773315] Matt Berardi - Add 2 second timeout on MySQL connections. Jens Jahr - Check for failure when calling auth module. - Fix vadddomain/vdeldomain when the auth module call fails. - Fix vsetuserquota to include status messages. Tom Collins - Add Date header to over quota warning message. [773318] - Fix possible buffer overflows when setting envbuf[1-4] in vchkpw.c. (bug spotted by Michael Bowe) [774528] - Remove error messages from vmysql.c that could interfere with POP or SMTP AUTH client sessions. - Switched from using --enable-default-domain to storing default domain in ~vpopmail/etc/defaultdomain. This should provide flexibility when compiling packages for distribution. [775751] 5.3.21 - released 17-Jul-03 Ole Gjerde - Check return code from vdeliver_mail in valias code and exit appropriately on errors. Previously, mail could be lost. Cory Wright (and others) - Fix missing "\" in multi-line #define in vmysql.h. Maurice Snellen - When logging POP3 logins, now includes system accounts. Emris - Ignore comments when processing .qmail files. Moshe Jacobson - Allow colons in cleartext passwords (vqpasswd() in vpopmail.c). Jonas Thomsen - Ignore final '.' in users/assign when running 'vconvert -c -m'. Michael Bowe - Remove debug printfs from vdelivermail on overquota bounces. [773312] Jeff Hedlund - Ignore comments when processing .qmail files. - Process .qmail file when delivering to local (Maildir) catchall. - vdelivermail now properly sets $EXT@$HOST and sets Deliver-To header on local deliveries. Tom Collins - Fix usage formatting on vconvert. - Support for MB/KB quota formats in vmoduser. 5.3.20 4/01/03 Tom Collins - If there isn't a limits entry for the domain in MySQL, it uses potentially random settings (nothing initializes the limits structure). I've updated a few files so that vget_limits in mysql.c initializes the limits structure to defaults before attempting to load from the database. 3/26/03 Ken Jones - add -D flag to vmoduser to change the directory 3/25/03 James Raftery - Change -e flag behaviour for vadddomain. -e contains an @: forward as normal -e without an @: treat as name of user into whose Maildir to deliver e.g.: -e postmaster@forward.com fridge# cat forward.com/.qmail-default | /usr/local/vpopmail/bin/vdelivermail '' postmaster@forward.com -e postmaster fridge# cat maildir.org/.qmail-default (all on one line) | /usr/local/vpopmail/bin/vdelivermail '' /usr/local/vpopmail/domains/maildr.org/postmaster 3/24/03 Tom Collins - Update vmoduser.c to write quotas out in the proper format. Automatically convert xxM and xxK formats to # of bytes. - Update vgetent in vpopmail.c to properly read old vpasswd files without a cleartext password field. 3/18/03 "Ken Jones" kbo at inter7 dot com - add --enable-rebuild-tcpserver-file option, default yes turning it off will stop tcprules from being run - add display during configure if ldap is selected - add --enable-active-directory option - create new vauth_crypt() function to use instead of crypt directly this is needed since active directory is so brain dead - remove pw_comp() function and use new vauth_crypt function. 5.3.19 3/5/03 "Bill Shupp" hostmaster at shupp dot org - Updated DOMAIN QUOTAS section in README.quotas - added --enable-domainquotas configure option. Default is off. - added newline to the end of vpopmail.config.sh so that it's usable 3/2/03 "Anders Brander anders at brander dot dk" - Do not report "failure to open limits file" to syslog 2/26/03 "Brian Kolaci" bk at kola dot com - bugfix - increase the SQL buffer size to 2K rather than 600 bytes in vmysql.c - updates to maildirquota.c so that it can now be compiled into libvpopmail without clashing with courier declarations. 5.3.18 2/20/03 "Bill Shupp" hostmaster at shupp dot org - Added DOMAIN QUOTAS section to README.quotas - Fixed vget_limits() problem with loading from .qmailadmin-limits 2/20/03 "Brian Kolaci" bk at kola dot com - added non-system domain quotas to vdelivermail with these 2 functions: - int readdomainquota(const char *dir, long *sizep, int *cntp); - int readuserquota(const char* dir, long *sizep, int *cntp); 5.3.17 2/20/03 "Andrew Kohlsmith" akohlsmith-vpopmail at benshaw dot com - Updates to the PostgreSQL module 2/20/03 "Bill Shupp" hostmaster at shupp dot org - vpopbull now terminates if '-f [email_file]' is omitted - vpopbull now checks that email_file is not empty - vpopbull now reports domains given on the command line that do not exist, but does not exit 2/17/03 "Bill Shupp" hostmaster at shupp dot org - Fixed vset_lastauth bug in vcdb.c that didn't check the return of vauth_getpw. This caused vadduser -s to coredump. 2/10/03 "Ken Jones" kbo at inter7 dot com - New oracle module 5.3.16 1/27/03 "Brian Kolaci" bk at kola dot com - Performance improvement to vopen_smtp_relay() - now tcprules is only run if a new IP is added to the relay table. This applies to sql authentication modules, as cdb already had this feature. 5.3.15 1/25/03 "Bill Shupp" hostmaster at shupp dot org - Added ifdefs to vdeloldusers so it will compile with --enable-auth-logging=n 1/23/03 "Brian Kolaci" bk at kola dot com - Updated vlimits patch 5.3.14 1/13/03 "Michael Bowe" mbowe at pipeline dot com dot au - fix for --enable-mysql-logging being too verbose 5.3.13 1/13/03 "Bill Shupp" hostmaster at shupp dot org - major changes to vdeloldusers - Works with any module that supports auth-logging (mysql, cdb) - lots of cleanup.. removed all mysql specific code - deprecated -r switch, replaced it with -V (verbose) - users are NOT deleted by default.. a new -D argument is required to actually delete users - brought back the -d option to specify only one domain 5.3.12 12/7/02 "Bill Shupp" hostmaster at shupp dot org - Minor changes to vlimits.c so that it will compile, but more effort is needed to implement Brian's new structure 12/6/02 "Jens Jahr" Jens dot Jahr at novasoft dot de - Various LDAP fixes 11/20/02 "Brian Kolaci" bk at kola com - Updated vlimits structure 10/31/02 "Bill Shupp" hostmaster at shupp dot org - Changed valias_line to be type "text" instead of "blob" 10/25/02 Justin Heesemann jh at ionium dot org - Minor fix for users-big-dir 10/24/02 "Bill Shupp" hostmaster at shupp dot org - fix for vipmap so that usage() is displayed if no arguments are given - TCPLOCALIP is in IPv6 format from couriertcpd. Convert to IPv4 in host_in_locals() so that ip-alias works with courier-imap 5.3.11 10/23/02 "Bill Shupp" hostmaster at shupp dot org - Forgot to change defualtquota type in limits structure 10/23/02 "Pablo Murillo" pm at rednet dot com dot ar - Fix for Delivered-To header getting mangled if you used a different DOMAINS_DIR. 5.3.10 10/23/02 "Bill Shupp" hostmaster at shupp dot org - Added limits table layout to vmysql.h - Changed valias_line to be type "blob" to compensate for large mailing list commands. Increased FILE_LINE_SIZE to 1024 in vcalias for the same reason. vcalias now escapes FileLine input. Thanks to Brad Dameron for pointing this out. - Added disable_smtp support to the new vlimits functions - Fixed configure.in so that --enable-mysql-limits is now reported after running configure - Moved format_maildirquota() to the vpopmail library. Updated vlimits.c to use format_maildirquota() for default_quota. - format_maildirquota() now uses 1024 and and 1048576 when converting KB and MB instead of 1000 and 1000000, respectively. 10/23/02 "Anders Brander" anders at brander dot dk - vdelivermail: Check for | *before* /Maildir/ in .qmail processing - vdelivermail: Add missing case for error code 100 5.3.9 10/21/02 "Bill Shupp" hostmaster at shupp dot org - Add error checking to vpopbull so that if copy_email fails, report it on the command line. - Update admin guide to reflect new limits functions 10/21/02 "Edoardo Serra" vpopml at connecting dot to dot it - automatically create maildir in vpopbull if it doesn't exist 10/18/02 "Bill Shupp" hostmaster at shupp dot org - Added wildcard support (i.e listname-default) to vdelivermail's process_valias function. Should allow ezmlm lists to be run from the valias table. 10/17/02 "Brian Kolaci" bk at kola dot com - Added 3 new api functions to administer .qmailadmin-limits: int vget_limits( char *domain, struct vlimits *limits ) int vset_limits( char *domain, struct vlimits *limits ) int vdel_limits( char *domain ) 10/16/02 "Bill Shupp" hostmaster at shupp dot org - Fixed typo in vcalias.c 09/11/02 Dave Boodman dave at boodman dot com - vdelivermail missing case for exit code 99 when exec'ing users .qmail programs. Needed for processing of autorepsond result codes of 99 09/05/02 "Steve Fulton" steve at esoteric dot ca - vdelivermail now handles error return codes 100 and 99 when processing users .qmail files. Support for autoresponder exiting with 99. 5.3.8 07/16/02 "Bill Shupp" hostmaster at shupp dot org - one last patch for the vgetent problem - comment out lseek definition for bsd users - Replaced old qmail-pop3d-maildirquota patch with qmail-maildir++.patch. This one adds Maildir++ support not only to qmail-pop3d, but also to qmail-local. Updated documentation to reflect this. This one is closer to Sam's original code, too. 07/10/02 "Boris Manojlovic" steki at verat dot net - CLEAR_PASS ifdefs in vpopmail.c 5.3.7 06/21/02 "Bill Shupp" hostmaster at shupp dot org - add --enable-make-seekable option (default y) so that people can turn off the seek patch if they want - relplace MIN with vmin(int x, int y) in seek.c for better portability (thanks to Ken Jones) - Change exit codes to 1 instead of 0 for NO_POP and NO_SMTP restrictions. Thanks to Michael Bowe for pointing this out. 06/20/02 "Maurice Snellen" maurice at hypercube dot demon dot nl - replace inappropriate strcmp test when for checking LocalPort in vchkpw.c 06/12/02 "Paul Kremer" pkremer at dullboy dot gms dot lu - set ldap protocol version before each ldap_simple_bind_s call. Default version is 3, but you can change it in vldap.h. 06/04/02 "Justin Heesemann" jh at ionium dot org --enable-users-big-dir option. On by default, this allows you to turn off using big dirs for users (and allow 1 char account names) 05/17/02 "Rui Barreiros" rui at websolut dot net - fix aliased domain problems 12/13/01 "Marcus Williams" marcus at quintic.co.uk - seek patch. Original code by University of Maryland Computer Science Department. 5.3.6 05/18/02 "Bill Shupp" hostmaster at shupp dot org - New APOP code for vchkpw. Relies on clear passwords to work. - APOP arguments removed from vadduser, vpasswd, and vadddomain since the new APOP code doesn't need them. (still need to remove old APOP code, update API) - Added CRAM-MD5 support for SMTP-AUTH only. Requires clear passwords and the smtp-auth patch (for qmail-smtpd) from: http://members.elysium.pl/brush/qmail-smtpd-auth/ - Authentication type is now logged upon successful authentications - Removed logging of *correct* passwords - Fixed vgetent() problem that should clear up the clear/crypted password problems in the cdb module. - Added NO_SMTP gid flag and support for it in vchkpw, vmoduser, and vuserinfo - Fixed lots of bugs in vpopbull. The old -v switch is now -V (verbose) and now -v is the version argument (for compatibility) - qcalc() fix for incorrect quota percentages with large quotas - vdelivermail now checks the EXITCODE of a forked process - updated TODO 5.3.5 04/16/02 - tab character replaced by 4 spaces in open-smtp file broke roamin-users feature - vchkpw syntax error when checking if roaming-users should be called based on the incoming portnumber. 04/03/02 Tim at timtasi dot com - much better parse_email function [774404] 5.3.4 04/02/02 - Doh! syntax error in vmysql.c, fixed 04/01/02 Matt Wierdl Dept of Math. Sciences University of Memphis - If we can not get a lock file on updating a file return an error - vget_assign: strncpy into in_domain malloc'ed memory instead of into incoming domain variable. 03/28/02 - vmysql.c: remove malloc in vauth_pw and use static local var 03/27/02 - code review and indent updating of vpopmail.c - more cleanup of parse_email function. it is still nasty looking 03/25/02 Tim tim at timtsai dot com - parse_email not terminating the user with a null in the right spot 03/20/02 - clean up indentation in vchkpw.c - enable-logging=v was not logging successes with passwords 03/18/02 Andrey Chichmeli az at primorsky dot ru - vpopmail.c: use MAX_PW_GECOS to check pw_gecos string 03/15/02 - domains must be at least 3 characters long: a.b 03/13/02 - new version "Joe Ingersoll" jingersoll at geektech dot com - vconvert.c -e -m needed pw_passwd+1 instead of pw_name+1 5.3.3 03/12/02 - relay control: read in tcp.smtp before the open smtp lines that way the tcp.smtp file will take precedence 02/24/02 Antonio Nati" tonix at interazioni dot it - syntax error in vcdb.c git_t should be gid_t 02/23/02 - blank password fields would cause cdb module to not return all users. - --enable-ldap=y was not setting the lib_dep file correctly 02/22/02 Nelson admin at typhoon dot jp - more changes to postgresql modules. Now vadddomain, vadduser vdeldomain and vdeluser work. - new README.pgsql Tyler gtyler at onestop dot net - addition to FAQ file for runnin vadddomain or vdeldomain as non root user (vpopmail in our case). 02/20/02 Nelson admin at typhoon dot jp - vmysql.c duplicate vauth_open_read in vshow_ip_map removed - port vmysql.c to vpgsql.c We now have a beta upgraded PostgreSQL file! 02/19/02 - update README.mysql to be current, it was saying to use --enable-sqlincdir and --enable-sqllibdir. It should say --enable-incdir and --enable-libdir - restrict access to vauth_getpw function to only root or the user who owns the domain. 5.3.2 02/19/02 - add checks and set globals depending on what port the connection is coming in on. - set the syslog message string based on what port the connection is coming in on. - For smtp authentication connections no need to setuid, setgid or change directory. 02/18/02 - change vchkpw.c message when people run on the command line. 02/17/02 "Maxim Krikuha" - update vdelivermail.c to support .no-user.msg file in either the domains directory or under the vpopmail home domains directory. 5.3.1 02/13/02 - code review of virtual and system users authentication with vchkpw.c 02/12/02 "Brad Dameron" - typo in vcalias.c file fixed "Bill Shupp" - update vchkpw.c if thelocal port is 25 or 465 then do not open a relay and use vchkpw-smtp or vchkpw-smtps in the logs 02/11/02 - mysql section was ignoring --enable-libdir and --enable-incdir if /usr/local/mysql exists 02/09/02 - remove redundant permission settings in Makefile.am for make install on the bin and lib directories 02/05/02 - vpopmail.h increase MAX_PW_QUOTA to 20 to support Maildir++ - vconvert.c parse assign file instead of walking the vpopmail/domains directory to find all domains 02/04/02 - change permisisons on vpopmail/bin to only allow root and vpopmail users to access it. This combined with the permissions on the lib directory for mysql sites secure the compiled in password from user detection. - remove root setting on lib directory. Allow root and vpopmail access to the libraries. 5.2.1 05/18/02 "Bill Shupp" - Back ported these fixes from 5.3.6 for an interim stable release: - vgetent() fix - vpopbull fixes - qcalc() fix for quota percentages - EXITCODE checking for vdelivermail 5.2 02/01/02 "Michael Bowe" - increase the mysql pw_shell (quota) field from 12 to 20 chars. - vmysql_escape was not applying the terminating NULL char and hence could contain additional strings from prior calls. - look for quotawarn message in both the virtual domain directory for the domain and if that fails look in vpopmail dir - look for user over quota message file in both the virtual domain directory and if that fails look in the vpopmail dir "Donal Diamond" - typo on putenv in vchkpw.c for HOME - name field displayed twice in vuserinfo 01/31/02 - 5.2 stable release - update vgetent, wasn't parsing vpasswd files correctly. Used in vcdb.c vauth_getall() function. Michael Bowe - update vdelivermail to populate TheDomainDir from vget_assign fixes problem with quota warn messages Donal Diamond - vdelivermail.c if bounce address is an email address and it is local, just delivery it without needing to re-inject 5.1.11 01/30/02 - put back in get_real_domain in vdelivermail.c for backwards compatibility for all alias domains 01/29/02 - line 497 in maildirquota.c cast const char * as char * for warning: assignment discards qualifiers from pointer 01/28/02 - created vaddaliasdomain function in vpopmail.c - added valid character check to vaddaliasdomain() function - updated vaddaliasdomain.c to call new vaddaliasdomain() function 5.1.10 01/26/02 - finally got the alias domains straightened out. Changed the format of the assign file. It now contains: +aliasdomain-:real_domain:uid:gid:path_to_real_domain:-:: So a real domain would look like +test.com-:test.com:89:89:/home/vpopmail/domains/test.com:-:: and an alias domain would look like +ken.org-:test.com:89:89:/home/vpopmail/domains/test.com:-:: - del_domain_assign and add_domain_assign now take both of the domain entires for the above line. - vget_assign now will over write the incoming domain name with the real domain name. So from the example above, if you call strcpy( domain, "ken.com"); vget_assign(domain, dir, uid, gid); The domain variable will contain "test.com". - the end result is that email can be delivered to aliased domains and users can authenticate as aliased domain users. - removed the need for vget_real_domain() function Casey Zacek - got the mysql alias code "a changin'" 01/25/02 - no need to create symbolic link for aliased domains - modify vauth_getpw in vmysql.c to get real domain name for aliased domains 01/24/02 Casey Zacek - vmysql.c had a typo (missing comma) in vcreate_dir_control(). Added identifiers to all the vmysql error messages. 5.1.9 01/24/02 Boris Manojlovic - for MD5 passwords in vpopmail.c mkpasswd3() routine use more than 2 random chars in salt - vldap.c support MD5 passwords 01/23/02 Boris Manojlovic - New ldap code and ldap directory with ldap files Eric Peters - "domains" directory is now configurable in configure script. He wanted to be able to change the name of that directory when he placed users email's under an /etc/passwd users home directory. - break out of infinite sleep in maildirquota.c when trying to safely open a file (file locking) - missed a TheUserExit typo in vdelivermail.c, fixed 01/22/02 - add support for MD5 encryption of passwords with new --enable-md5-passwords=y configure option. The default is yes 01/19/02 - vdelivermail.c: code review - vdelivermail.c: standardize code indentation - vdelivermail.c: Add TheDomainDir TheDomainUid TheDomainGid set them at initialization time with vget_assign - Use TheDomainDir for formatting file name for quota messages works with hashed domains - --enable-file-sync=n is now default. Not really needed - vdelivermail.c: check_forward_deliver does a chdir so that any .qmail file Maildir lines will support relative paths - vdelivermail.c: Support any full or relative path for Maildir deliveries - vdelivermail.c: if moving (link/unlink) a file from the tmp dir to the new dir (Maildir) fails, delete the failed file - vdelivermail.c: found that duplicates of an email delivered to a user on the same invocation of vdelivermail will fail (Maildir processing) because the file name will be the same 01/18/02 - if .qmail file contained a &email_address line then free in qmail_inject vfork function would free wrong address Vladimir Kabanov - add support for ./Maildir/ inside users .qmail file in vdelivermail.c deliver_mail() function 01/17/02 Albert Hopkins - typo in vpopbull.c needs to look at /var/qmail/users/assign Richard A. Secor - vlog support version 0.22 - new vlog readme Bill Shupp - new README.quotas - new FAQ entry for pop3d - include pop3d maildirquota patch in contrib dir 01/16/02 - Add Richard Secor's vlog support version 2.0 to contrib dir - vuserinfo, if user never logged in display account creation time - one more try with setting Delivered-To header for email that is delivered to the catch all account. In that one particular case we set the Delivered-To header to be the user@domain of the incoming email address. 5.1.7 01/14/02 - configure now checks if person didn't read the configure options and put in the path to the directory that contains programs instead of the full path to the actual program. This is for qmail-newu, qmail-newmrh, qmail-inject, tcprules - get rid of long jump clobbered warning message - get rid of not exiting with a return thingy warning messages 01/13/02 - no need to create the ~vpopmail/users directory since it is no longer supported recommended for use. 01/11/02 - vgetent - remove the check for number of fields, this should allow clearpassword and non clearpasswd files to be read - redo vmake_maildir to take domain and user dir to create - update vchkpw to autocreate users maildir if it is missing - update vdelivermail to autocreate users maildir if it is missing - add new is_username_valid(char *user) function - add new is_domain_valid(char *domain) function - updated everything to use new validation characters Chris - chris got us going on checking all valid chars in an email address - update mysql module to always use " character instead of ' character for placing around strings 5.1.6 01/09/02 - vset_lastauthtime was a bad idea, removed - when a user is created, set thier last auth time to the current time, and their IP to 0.0.0.0 01/08/02 - change default of --enable-clear-passwd to be no two reasons, 1) will break current installs 2) people should make an effort to store clear passwords - vpopbull using wrong directory path to assign file. 01/05/02 - add usage for -r to vdeloldusers Jason Kerr - update vmysql.c module to escape gecos, pass and clear pass fields before inserting into the database. - in vchkpw, if invalid email characters are passed as user@domain then syslog an error and exit - in vcdb module, don't allow ":" character in gecos field or in clear text password field. They are both kind of a hack. The fix just strips the ":" character out of the field. 5.1.5 01/05/02 - change --enable-hardquota to --enable-defaultquota - add vvalidchar(char *) function to check if character is a valid email character set new VA_INVALID_EMAIL_CHAR verror global on invalid character The valid set of characters is: a to z A to Z 0 to 0 . - and _ - update vdelivermail to use vvalidchar when getting user/domain - update parse_email to return error code if invalid character - update valias command to use Alias buffer instead of User buffer - update vpalias.c valias_insert to check for "." in .qmail file name - add -r option to vdeloldusers to just report old users, not delete - if mysql enabled and lastauth table not yet created then vdeldomain would not delete valias entries for the domain, fixed - lastauth entry not created when user is created - add vset_lastauth_time() function - updated vcdb.c vmysql.c vldap.c to support vset_lastauth_time() - lastauth was not seting the ownership of the lastauth file to the owner of the domain for the cdb and ldap modules, fixed - update vconvert to be able to convert from cdb or /etc/passwd to the compiled in module, cdb/sql/ldap or what ever was compiled into vpopmail. 01/02/02 - change caddr_t to (char *) in maildirquota.c - vpopbull gets domain directories from assign file now - vdeloldusers requires -e option to run 12/29/01 "Jason Kerr" suggestions - vadduser not set the last authentication time - vuserinfo report "never logged in" instead of unix time 0 Wed Dec 31 18:00:00 1969 - add new vget_lastauthip() to return IP of client's last connection added it to the vcdb.c and vmysql.c modules - vdeloldusers() don't delete postmaster account - remove unused -d domain option from vdeloldusers - --enable-clear-passwd=y is now the default 12/27/01 "Yuri A. Kabaenkov" - add -r option to vadddomain and vadduser to generate a random password. - add new vpopmail API function to generate a random password char *vgen_pass(int len). returns a pointer to malloc'ed memory filled with a random password of size = len. - small typo in maildirquota.c fixed - update maildirquota.c to use snprintf() instead of sprintf 5.1.3 and 5.1.4 12/26/01 - vpopmail.c signal_process() does not kill itself - added vkill program to kill any running process that contains the string passed on the command line. killall won't do that. example: vkill qmail- will kill all qmail processes including any tcpservers running qmail, but not tcpservers running other things. - vdeldomain now checks if the directory is a symbolic link and then only removes the link "Bill Shupp" - Fixed typo that prevented accounting of quota warning messages - Fixes for format_maildirquota() and how it's called. - Messages < 1K are no longer delivered after user has exceeded their quota. There's no need for this since we have proper warning messages now. "Richard A. Secor" - change the timestamp in vlog to a UNIX Timestamp. 12/24/01 "Bill Shupp" - vaddaliasdomain, get dir from assign file instead of assuming it's under ~vpopmail/domains. 12/20/01 "Bill Shupp" - moved quota conversion code into format_maildirquota() - warning messages are now accounted for in quota - warnings are still delivered even if the user is over quota - fixed unformatted quota bug in vmoduser -Q Donal Diamond - if the mysql server is down, deffer valias deliveries - new configure default --enable-auth-logging=y - wrong MAX_PW fields checked in a few functions - MAX_ALIAS_LINE redefined in vpalias.c 12/19/01 - set max field sizes in vpopmail.h - update mysql to use fixed field sizes - error checks for field size limits in all functions - vpopmail.h header changed to not say util.h 12/18/01 "Nicholas L. Nigay" - Fix for "qmaildir" path being hardcoded in configure.in - Fix for incorrect file size in quota warning message file name 5.1.2 12/18/01 - update MAX_BUFF in vpopmail.c to support maximum sized domain names. - change #ifdef in vchkpw to #ifdef HAS_SHADOW instead of #ifdef HAVE_SHADOW_H 12/17/01 - added report for VA_BAD_CHAR to verror - fixed error check for bad character in gecos field in vadduser API. - add check for length of domain name 12/15/01 Hendry D Lee and Mike Rogers - if clear passwd is empty and learn passwords is on then set the password 5.1.1 12/10/01 Bill Shupp - Added quota warning messages - added -Q option to vuserinfo to display current quota usage 12/04/01 - switch from old quota system to Mr. Sam's maildirquota system. See README.quotas for more information. 5.1.0 - update version 12/03/01 5.0.1 12/03/01 Bill Shupp - usernotfound() fix for non vpopmail user domains - catchalls would bounce. Yavuz Aydin pointed this out. - vegetent() fix (cdb module) vmoduser would corrupt the vpasswd file when running on an entire domain. - vmoduser wouldn't set the passwd field when running on entire domain - re-added .over-quota.msg support to vdelivermail 11/24/01 - kbo@inter7.com changed the vchkpw error message about fd 3 when people try to run it on the command line. Try it. 5.0 10/23/01 - valias -s domain with mysql would core dump. tracked it down to vget_real_domain calling vget_assign returning NULL but not checking. - Bill Shupp update vconvert usage() message 10/22/01 - update vconvert to work correct from cdb to mysql - open relay template file name was wacky, fixed. - unlink of empty template file was bad, fixed. 10/17/01 - Arthur Mills login_system_user() in vchkpw.c should use vchkpw_exit(X) where X is not 0 for invalid logins. Fixed. 10/11/01 - add #ifdef around open_smtp_relay in vchkpw.c because some compilers are stupid. - vchkpw.c for shadow /etc/passwd systems was using TheName instead of TheUser. This would not break anything but it is changed to be consistant. - solaris compilers get -R$libdir 10/04/01 - Vladimir Kabanov vdelivermail.c had incorrect Delivered-To: header for users in sub directories fixed. 10/01/01 - Found by: Pontus Hanserkers vcdb.c vsetuserquota incompatible with clear passwords. vcdb.c vauth_setquota() now calls vauth_getpw() then vauth_setpw() to do the underlying changes of the users information, quota. - Bill Shupp updates to vuserinfo.c and vmoduser.c for qmailadmin administrator privilages pw_gid bitwise flag QA_ADMIN 09/26/01 - change MYSQL_PORT to MYSQL_VPORT. Mysql include file already has MYSQL_PORT 09/25/01 - add #ifdef for POP_FETCH lib - delete tcprules temp file in case tcprules has an error - system users were not able to pop auth relay, fixed - add new QA_ADMIN flag for qmailadmin 09/18/01 - add sys/varargs.h check in configure.in update vpopmail.c to have #ifdef around sys/varargs.h which is needed for solaris 8 machines 09/17/01 Steve Wolfe - with --enable-password=y vchkpw.c:397: undefined reference to 'log' looks like the line should actually use vlog(), not log(). Marcus Williams - vdelivermail.c lseek calls had a few with SEEK_SET in the wrong order. 5.0pre6 09/15/01 Jan Pavlík - Hi, i think there is 5 or 6 real_connects but you set MYSQL_PORT for 2 only... 09/12/01 - update vdelivermail to use qmail's DTLINE environment variable to set the DeliveredTo address when vdelivermail delivers email to a catchall account. - Jan Pavlík add #define MYSQL_PORT 0 to vmysql.h in case folks want to hard code the port number. The default of 0 lets mysql read my.cnf files to set the port number. - configure now says that --enable-passwd=n is the default. It was the default already, now it just says it. 5.0pre5 09/07/01 - vmysql.c now checks for database fields being NULL and properly handles it. No crash on NULL fields - update the parse_email() function to also automatically check for alias domains. This function is used in the vchkpw auth program. So now, users can authenticate against a domain or any of it's aliases. It uses the vget_real_domain() function to change the domain from an alias to the real one. 5.0pre4 09/06/01 - if mysql server is down email delivery is deffered instead of bounced. - auto creation of maildir on email delivery in vdelivermail now works. Wasn't added in when the vdelivermail was completely re-written. - Einar Bordewich when adding a new user, if the directory already exists do not delete it and add it again. This was a feature but turns out it can delete mailing lists. 5.0pre3 09/06/01 Pascal Lauly - reported bug with cdb module, adding a user with the name of "vpasswd" trods on the vpasswd file fixed in vcdb.c 5.0pre2 09/05/01 - vadduser -n option now sets the password to blank so it can be used with --enable-learn-password=y - add --enable-learn-passwords configure option. 5.0pre1 09/04/01 - first 5.0 release canidate 4.10.36 09/04/01 - include vchkpw "learn password" feature. 08/30/01 - configure creates a vpopmail.config file with the command line needed to re-run configure with all the selected options 08/29/01 - vcdb module, update vauth_getall to support clear text passwords and blank fields 4.10.35 08/20/01 - security permission change on lib directory and library - vauth_user now will set blank passwords first time. - blank passwords are set in vchkpw too 4.10.34 08/16/01 - vol@inter7.com new vldap.c module 4.10.33 08/08/01 - David Wartell fix qmail-ext to process -ext like qmail. - David Wartell add mysql logging. 4.10.32 08/05/01 - added -e "encrypted passwd" to vadduser. - remove APOP from vadduser 08/04/01 - JM Roth configure --help for --enable-sqwebmail-pass did not make sense. updated it. 08/02/01 - "Richard T. Wareing" vmysql getall function returning incorrect gecos field 4.10.30 07/30/01 - finally update vconvert for removal of large/small site api's in the vmysql.c module. Now it will run. 07/19/01 - vcdb.c needed address to memset - tested smtp authentication - Works! - vcdb module return a null string instead of 0 for clear_passwd 07/12/01 - updated vchkpw.c to use instead of 4.10.29 07/12/01 - filter out supervise on signal kill 07/11/01 - vpopmail.c: decrement dir control was using "master_domain" instead of dom_"uid". fixed - vpopmail.c: check for domain existance before doing anything else in api vadddomain() - vmoduser.c -q Quota was not updating quota 07/07/01 - vmysql and vcdb modules, set the pw_clear_passwd field to NULL in vauth_getpw calls. Just so we know the vpw->pw_clear_passwd field doesn't contain a garbage pointer - removed the vdelivermail message about delivering the email to a different user. 07/06/01 - vadddomain had "vaddomain" in the help text 4.10.28 07/06/01 - vdelivermail checks the DTLINE to see if mail is looping - qmail_inject reading from fd 0 doesn't allow for setting a delivered to line. So back to the old way of writing it. - getall mysql select was wrong, was fixed, crept back into the source. fixed 07/03/01 - if the users directory exists, delete it and keep going 4.10.27 07/03/01 - "David Wartell" Solaris and Linux have different results with unlink()'ing a directory. Linux returns and error and Solaris doesn't. David's code checks handles this and correctly works with both solaris and linux (presumably with other OSen). - "Chris Bunnell" reverse the check in vdelivermail for user over quota. messages of less than 1000 bytes were not updating the .current_size file. 07/01/01 - "Robin S. Socha" OpenBSD 2.8 wanted #include in vdelivermail.c, now that vdelivermail is looking at signals. - updated all the vchkpw exit codes to be non-zero in case of any errors. It only returns 0 if successful authentication takes place. 4.10.26 06/29/01 - in vdelivermail figured out how to share the standard in file descriptor with qmail-inject and any programs that get exec'd. That way programs can rewind thier input and we save read/writing the whole message through memory. 4.10.25 06/29/01 - "Alex Hathaway" configure option for solaris 2.8 for finding the id command. 06/28/01 - vdelivermail used a small buffer of 100 to handle .qmail file deliveries in a users directory. This is not large enough 06/27/01 - noticed there is no end function for getall, added vauth_end_getall(), helpful for mysql aborted connections. - stupid vmysql.c vauth_getall wasn't filling in the clear password field and the ifdef had the wrong word 06/26/01 - "chris" - After much debugging work Chris found in vadddomain it lower cases the directory. This breaks directories that have upper cases in them, like /RAID - update to configure script to set shared object library path - updated all vmysql.c mysql_result calls to call mysql_error on an error. 4.10.24 06/25/01 - Programs which did not call vclose(), vdominfo, vaddaliasdomain, - vadddomain was using the old domain directory structure (no hashing) to check for a domains existence. So it was not successfully finding existing domains. It now calls vget_assign to check if the domain exists in the assign file - configure now checks for the location of qmail-inject, qmail-newu and qmail-newmrh for distributions (prolly Debian) which put them in different locations. - Daniel Savard fixes to vcdb.c in vread_dir_control to start index loop at 0 instead of 1, i=0. 4.10.23 06/23/01 - update configure to check for location of qmail-newu Debian decided to move it into /usr/sbin. By the way, Debian's policies on open source software are keeping qmail and any program that uses qmail, off zdnet/appwatch software download site. - thanks to Patrick Earl for clearly pointing out the differences in Debian. - vauth_getall in mysql module had wrong number of columns for the many domains option - vuserinfo was not displaying all the fields - vcdb module bug which caused a new line to be in the path to a domain. caused assign file to be corrupted and a wierd file named "?" to be created in /home/vpopmail/domains All fixed 4.10.22 06/21/01 - Daniel Savard change to vpopmail.c vgetent function for CLEAR_PASS - Rick Stanley fix for Delviered-To: /path/to/maildir. Now it correctly states the accounts *real* email address. 06/18/01 - "Tim Hasson" README.ldap documentation and testing - OptimizeNewDomain will now compile users/assign file. - signal_process will signal any process which contains the process name 4.10.21 06/16/01 - remove use of fscanf in vcdb.c module so vpopmail/cdb can be compiled with dietlibc - removed the filter option in configure and the README.filter file from the distribution. The same functionality can now be done with maildrop. 4.10.20 06/13/01 - end of configure script uses IP_ALIAS instead of IPALIAS - vshow_ip_map in vmysql.c would fail if the ip_alias_map table was not created first. - updated the copy write notice for year 2001 in all files - "Marcus Williams" temporary version of open_command for vdelivermail - Antonio Dias compilers complain if vdelivermail.c doesn't end with an exit() 4.10.19 06/13/01 - added vchkpw_exit() function to vchkpw to do vclose() and closelog(). - added --enable-file-sync=y (default) or no no will stop vdelivermail from calling fsync/fdatasync when it delivers mail. - Antonio Dias vset_lastauth in vcdb.c wasn't returning a value when auth logging is enabled. - clean up vmysql.h and vmysql.c - clean up command line processing skeleton code in vdelivermail - add a vdl_exit() to call vclose in vdelivermail 06/12/01 - more ifdefs in vmysql.c and vmysql.h to clean up sql queries - no more need for xyz_size functions in vmysql.c - changed --enable-large-site=y to --enable-many-domains=n and --enable-large-site=n becomes --enable-many-domains=y Hopefully, this will be less confusing in the future. - finally take the big plunge and change all sprintf's to snprintf's. Any OS's that don't have snprintf should install it. 4.10.18 06/11/01 - yet another fix to vget_assign for cdb module. It was doing a strncpy from a NULL pointer, that's bad. - error in vaddaliasdomain created the incorrect directory in /var/qmail/users/assign, fixed. - Ryan Duda - put in vclose before exits in vchkpw.c and vdelivermail.c - vchkpw wasn't getting the pw_uid and pw_gid - Antonio Dias - another switch in vcdb.c from strncpy to strncat - vpw instead of pw in vcdb.c vset_lastauth() 06/10/01 - Antonio Dias fix for file locking ifdefs in file_lock.c fix for vcdb.c dc_filename to use strncat not strncpy - error in vchkpw.c calling vset_lastauth with the wrong first parameter - found one more %ul instead of %lu in vpopmail.c - more type casting of pid_t and off_t to unsigned long to make freebsd happy - configure now checks for fdatasync - vdelivermail.c has ifdef for fdatasync. If the function is not avaialble it uses fsync instead. 4.10.17 06/08/01 - Stupid configure.in file. Was using $vpopmaildir variable before setting it. Fixed! Still working forward to the 5.0 production release. - AddDomainOptimize = 1 now does not compile the assign file this vastly increases the speed of bulk domain adds - configure now sets FILE_LOCKING = 1 instead of y - file_lock.c used FILE_LOCK instead of FILE_LOCKING - Marcus Williams" vdelivermail code review for rename logic, did not need to do an unlink if we did a rename. 4.10.16 06/07/01 - Marcus Williams" support for coda file system in vdelivermail in case the link() function fails and we have to call rename() - code review of vchkpw and syslog calls, check if we are logging anything before making calls to syslog. - Antonio Dias fixes to cdb module for dir control processing change unsigned long to long unsigned everywhere update mysql and postgress modules to use %lu instead of %ld for the long unsigned variable - update open_bid_dir and vread_dir_control to include the uid and gid fields - removed unused read_dir_control and write_dir_control declarations in vauth.h. - vget_assign now correctly handles looking up domains that do not exist in the assign file - add a global flag OptimizeAddDomain to turn off compiling cdb files and HUP'ing qmail-send - fixed a memory leak in mysql vauth_getpw function. If the user was not found the mysql result was not released. 06/05/01 - Marcus Williams" optimize vdelivermail Maildir code and sync the file - Fix vadduser user for users with no domain 4.10.15 06/04/01 - --enable-passwd=n is now the default. It is slightly more restrictive which sounds better for people who are trying this for the first time. - vdelivermail now properly uses the Maildir/tmp directory to write emails to. Then it links it to new and unlinks the tmp file. - more error checking in vdelivermail write calls. checks for user over quota write failure and returns that error so the email should be bounced back. - updated vset_lastauth to not require a vauth_getpw first. this should speed up vadduser. also with mysql replication there can be a race condition with adding the user to the master server and it has not shown up on the slave. - added a --enable-file-locking option. Default is yes, which is backwardly compatible. Some NFS file locking implementations are just plain broken out of the box. --enable-file-locking=n will avoid that. 4.10.14 06/03/01 - with mysql replication, if we can not connect to the read server then try connecting to the udpate server 06/03/01 - modified the vdominfo and vuserinfo programs so that if the user specifies to display some of the information, the it does not print out a title for each line of information. The idea is that if any program wants to get the directory of a user, they can do, ./vuserinfo -d user@domain and it will print out the directory followed by a newline. This should be easier for programs to parse. 4.10.12 06/03/01 - added a new vdominfo program to display information about one domain or all domains. You can use this to find out the directory where the domain is stored. This should help out since the domain directories are hashed. It also displays the number of users in the domain. - updated vadddomain to support domain directory hashing for all users and not just the vpopmail domain users. - added new configure option --enable-qmail-ext. This was the default in old installations. Now there is an option to turn it off. --enable-qmail-ext=y (default) will deliver mail for joe-ext@domain.com to joe@domain.com --enable-qmail-ext=n will NOT deliver mail for joe-ext@domain.com to joe@domain.com. It will only deliver it to joe-ext@domain.com - added display of ip-alias-domains and qmail-ext to the configure print out at the end. - updated the vmysql module to use a separate read connection for the vauth_getall function. It needs a separate connection or else any vpopmail call that is done during a getall loop will fail. - the --enable-mysql-replication=y and --enable-mysql-replication=n now work correctly. Any C programmers might want to take a look at the vmysql.c file to see how #ifdef MYSQL_REPLICATION and the use of redefining symbol names for variables and functions work to simplify the code. 4.10.11 06/03/01 - update vldap.c to not look at ld_errno field and instead use the ldap_add_s return code. - update configure.in for --enable-ldap=y to add -lresolv to the link libraries. 06/01/01 - finish voracle.pc port - fix the location of id for solaris machines 4.10.10 05/29/01 - vchkpw printf format error for uid/gid - configure wasn't printing out the correct auth_libs line - Sean Truman vmysql module modified to have a read and update connection. This can be used in mysql replicated systems. 4.10.9 05/25/01 - update configure script to accept --enable-sqlincdir= and --enable-sqllibdir= for the oracle module. - vsetuserquota now forces "noquota" to be in upper case. vsetuserquota user@domain noquota becomes vsetuserquota user@domain NOQUOTA - vpopmail.c clean up for solaris, pid_t and islower int types - oracle version working. 4.10.8 05/24/01 "Sean C Truman" - vchkpw was exiting on successful authentication when logging = 1 or 4. - update mysql module to use unsigned int instead of timestamp type. Then we store the unix system time. - a bunch of clean up of mysql authlog table stuff the time stamp in the authlog table is now a time_t variable, or what ever is closest. In mysql it is a "bigint" type. - more POP_AUTH_OPEN_RELAY to remove the requirement for tcprules. If they don't want pop auth, they are not required to have tcprules nor any of the vpopmail tcprule dependent code - fixed some return code stuff 4.10.7 05/22/01 - "Sean C Truman" add bigdir features to vadddomain so domain directories can be hashed. Tested with cdb and mysql modules - master_domain dir control is updated on creation and deletion of domains. - change to configure script, if --enable-roaming-users=y is not selected, configure no longer checks if there is a valid tcprules program on the system, since it is not needed by vpopmail. 4.10.6 05/21/01 - Start updating voracle.pc to bring it current. Add in last auth, clear pass and valias features. - create vget_lastauth function in cdb module to return the last access time of the user. - create vget_lastauth function in mysql module - change name of vlogauth() function to vset_lastauth(); updated vmysql.c and vcdb.c to use new name - update vcdb vset_lastauth to put the remote IP into the lastauth file. - update vuserinfo to display last auth time if it is configured - update vchkpw.c to have ifdef for ENABLE_PASSWD - update configure script to report if system passwords are on/off - The valias_insert functions no longer check if user@domain is in vpopmail and replace with Maildir path - removed the unneeded safestring.c files and functions instead use the standard string.h functions - complete re-write of vdelivermail.c 4.10.5 05/20/01 - complete re-write of vchkpw.c removed need for vchkpw.h file - vpopmail lowerit(char *string) now limits the string length as well as lowering it. Length is limited to 156 05/19/01 Chris and Seo David - the following needs to be in the configure files *-*-solaris*) idcommand="/usr/xpgr4/bin/id -u" instead of /usr/xpgr4/id -u - solaris reports problems with uid's and gid's declared as int's. They need to be declared as uid_t and gid_t Justin Heesemann - New code for cdb_to_sql function in vconvert. Very slick! 4.10.4 05/16/01 - in vauth_setpw function for cdb, mysql and sybase, change the check for VPOPMAILUID and root to check for uid = the uid in users/assign file for the domain and root. This will allow users who have thier domain stored under thier uid to be able to modify thier own users. Matt Simerson discovered the problem. - added loop checking in vdelivermail - set the permissions correctly on the new mail files in vdelivermail. 4.10.3 05/16/01 - remove the need for a temp file for alias delivery - vdelivermail no longer writes to the Maildir/tmp directory and rename it to Maildir/new. Instead it writes directly to Maildir/new. This saves a system call to rename the file. - vdelivermail no longer stats the "to be created" Maildir/new file. This saves a stat system call - added new vpalias.c module for the vpopmail library that has the .qmail file based valias api functions. it is conditionally compiled in if mysql and valias are not used - non api commands completed for processing of .qmail files. - configure script only allows --enable-valias=y if you have --enable-mysql=y 4.10.2 05/16/01 gilh@mudbuginfo.com - xinetd style line for pop/vpopmail in INSTALL file kbo@inter7.com - remove unused --enable-admin-email configure option - updated vmysql.c create table routines to use separate sql command buffer so the calling function doesn't need to reformat it's sql - update all of the alias commands in the mysql module - updated vdelivermail to use the alias commands and support &emailaddress, emailaddress and directory deliveries. Sending the email into a program isn't completed yet. 4.10.1 05/14/01 - vmysql.c vauth_setquota didn't finish the mysql command - added second mysql connection for vauth_getall - vauth_getall now uses store result instead of use result so that updates to the table can continue while other sql programs are accessing the table. - change all mysql use_result to mysql_store_result 05/10/01 - vdeldomain will now delete all entries in the lastauth table for that domain if auth logging is enabled. - the authlog table creation function had remoteip as a column name instead of remote_ip, fixed - vdeluser will now delete the users entry in the authlog table if it auth logging was enabled. 05/09/01 - vadduser with mysql option and auth-logging option will now add a entry to the authlog table when ever a user is added, with a remote IP set to 0.0.0.0. - new vdeloldusers program to clear out any users which have not authenticated in X amount of time. 05/02/01 - added check for max size of username - vdelivermail scopy sizeof(prefix) instead of sizeof(bounce) - vdelivermail won't make directories for unknown users filippo@mobilia.it & kbo@inter7.com - added check if mysql is down, email is deferred instead of bounced or deleted. - found two consecutive returns in vpopmail.c - removed redundant one - updated vldap.c vwrite_dir_control to have uid_t and gid_t 05/01/01 - kbo@inter7.com new version number for struct vqpasswd to be compatible with qmailadmin-0.50 - created convert directory with new vcalias program that loads a domains .qmail files into the valias mysql table - added --enable-valias option to configure added VALIAS define to config.h added VALIAS #ifdef code to vauth.h added skeleton VALIAS #ifdef code to vcdb.c added working VALIAS #ifdef code to vmysql.c 4.9.11 05/01/01 - Greg Nelsen Discovered why vpasswd keeps getting corrupted on his machine. vadduser() in vpopmail.c was not checking the return error code on make_user_dir() function. Hence it would crash. 04/30/01 - kbo@inter7.com removed vauth_vpasswd api (deprecitated), replaced functionality of vpasswd call with vauth_setpw() added --enable-clear-pass=y option to configure added support for clear passwd's to mysql module added support for clear passwd's to vcdb module. modified vuserinfo to display clear passwords if selected. updated vmoduser to allow setting encrypted password or cleartext password -C "clear text" 04/25/01 - Nathan fixed file descriptor leak in vget_assign() - kbo@Inter7.com change mysql "unique index" to "primary key" - added vqpasswd structure to replace "struct passwd" this is needed to support clear text passwords and is a good stepping stone to adding support for other needed fields in the future. 4.9.10 04/03/01 - Upgrade development release to production release 4.9.9-3 Mar 22 - vmoduser now will display an entire domain with a new option -D domainname Mar 19 - configure now reports default domain Mar 16 - remove #ifdefs for HARD_QUOTA in vdelivermail so that quota support is controled by the pw_shell (quota) field. - cleaned up error printf's for vdeldomain, vadddomain and vadduser Bill Shupp - added --enable-logging=v option 4.9.9 Mar 15 - found correct path to /usr/xpg4/bin/id for solaris, updated the configure script - add error print out to vipmap if ip-aliases were not configured - remove unused tmpstr variable from vchkpw.c - --enable-log-name was not being used in vchkpw.c - fixed - vchkpw was not opening syslog before the first two possible calls to log an error then exit. fixed - r_mkdir was not using the incoming uid/gid and instead setting it to the hard coded VPOPMAILUID/VPOPMAILGID - fixed - problem with new safe_rename function, had the #ifdef reversed - fixed problem with vpopmail.c vgetent() function. It was not removing the trailing "\n" from the pw_shell field. Mar 14 - support for solaris not having the gnu id program - configure.in script was creating tcp.smtp file with wrong syntax Mar 13 - finally idea for putenv is to use global variables instead of calling malloc. Slightly less processing time needed. - add AUTOMAKE_OPTIONS = foreign no-dependencies to Makefile.am to be more portable Mar 9 - add new vcdir program in the contrib directory. It will convert old .dir_control files into the new mysql table dir_control - added new informational printouts to the configure script. this might help folks see what got configured. - new --enable-coda option and new coda link/rename code Thanks to "Andrea Cerrito" - added new options to vconvert -v to print out the vpopmail version -d to enable debug print outs -S to set sqwebmail passwords for old domains which don't have them Mar 8 - remove un-needed fsync calls in vdelivermail - add check in make_user_dir for if user doesn't exist yet. - replace the link() functions in vdelivermail with a safe_link This might make vpopmail work on CODA file systems. Thanks to Jan Harkes of CODA for the code snippet. - cleaned up the configure.in script and it's use of vpopmail.dir, vpopmail.uid and vpopmail.gid files - configure automatically creates the ~vpopmail/etc directory if it doesn't exist - added checks for vpopmail user and vpopmail group, cleaned up check for vpopmail home directory - added information message to make install-strip to let folks know they don't have to wait around while the chown/chgrp runs, they can stop it if they want. it's knot really needed. - fixed vchkpw() putenv values in vchkpw.c Found by "Boian Bonev" Mar 7 - make vauthlog a function for each module, only mysql module has code. This is so sqwebmail and courier-imap can have thier authentication logged. - cleaned up code in make_user_dir() in vpopmail.c also creates sqwebmail password file if enabled and updates the authentication information - updated vchkpw to use the new make_user_dir code - updated vdelivermail to use the new make_user_dir code Mar 6 - vmoduser wasn't working for entire domains. Simple fix. Mar 5 - add -u NO_DIALUP code to vmoduser "Abdul Rehman Gani" - updated all code to use uid_t and gid_t instead of int. - vset_default_domain was over writing things at the wrong time in the mysql module Feb 28 - Added configure check to see if it's being run as root. It needs root access to write to the !vpopmail/etc directory. - fix compile time warning with ip-alias-domains=y - fix vipmap -p for cdb module. it wasn't printing anything. Feb 24 - for mysql, allow ' character in gecos field - vconvert -c -s wasn't setting the uid field correctly Feb 23 - Don't allow zero length or null user names in vdeluser. This would cause an entire domain to be deleted - added logging of pop authentication with mysql module - vdeldomain now prints out correct error message when it can not to delete a domain. - fixed vadddomain -e user@domain option 4.9.8-1 Feb 19 - qmail-newmrh instead of qmail-newrh in execl call "Oden Eriksson" Feb 16 - nice vacation, sqwebmail-pass fix 4.9.8 Jan 10 - audit vchkpw default domain, ip aliases and parsed domain code minor fix Jan 9 - bug in the ldap module caused qmailadmin to not list all accounts Jan 8 - add virtual IP and bigdir functions to ldap module - add -e "encrypted password" option to vmoduser Jan 4 - move IP aliase code to vpopmail library - make vset_default_domain read VPOPMAIL_DOMAIN environment varilable redo the logic Jan 3 - upgrade to next version number - remove .qmail forwarding loop in users Maildir .qmail file - remove string length check for mysql ip alias mapping - add VPOPMAIL_DOMAIN environment variable check in vset_default_domain this is handy for SetVar 4.9.7 "The quest for distributed data synchronization via transaction oriented data storage, e.i: RDBMS" or "No more vpopmail vpasswd, .dir-control file locking" Jan 3 - removed unneeded alarm call in vdelivermail Dec 22 - option setting in vpasswd for apop was reversed. Oliver Chiu Dec 18 - added vdirrestore shell script to contrib directory. "Sailin Nelson" Dec 14 - add quota flag to vmoduser for setting the quota - patch files for cistron 1.6.4 radius server added to contrib directory. enables cistron radius to use vpopmail api for authentication transactions (Nice work) "Abdul Rehman Gani" - changed the order the cdb files update vpasswd so as to use the rename(2) function "it will be atomically replaced" - remove the need to have file locking on the .dir-control file with cdb module. - modified the update_file utility function to use the automic rename(2) unix function. - modify the open_smtp relay file i/o to use the automic rename(2) for updating the file - update the configure script to automatically search for the mysql library and include directory in the two standard locations. also check if it's not been found and force the user to set them as configuration line options - configure script now creates an ~vpopmail/etc/inc_deps and ~vpopmail/etc/lib_deps files that contain the needed -I and -L -l options for other programs that use the vpopmail code - null terminator addition code fix for parse email. "Abdul Rehman Gani" - modify the mysql create table syntax for the relay table to use unique index instead of primary key. Since the update sql requires updates against a unique key - create mysql functions for dir control i/o using replace sql for synchronizing access to the dir control state information per domain. - add -lz to default mysql libraries needed - fix default domain and ip alias domains working with each other NOTE: qmailadmin-0.40 configure/makefile scripts were updated to use the inc_deps and lib_deps files to automatically figure out which include directories, lib directories and libraries for vpopmail's setup Dec 13 - added new vipmap command line program to add, delete and print out the list of IP's and their associated domain name mappings - removed DNS/tcpserver code for ip alias domains and instead use new vpopmail api functions: vget_ip_map, vadd_ip_map, vshow_ip_map and vdel_ip_map - added new ip map code to vcdb.c module - added new ip map code to vmysql.c module - added ifdef's inside each include file to exclude multiple inclusions (The above line is my nomination for the trippiest ChangeLog wording) - added contrib directory to the distribution. First entry is, vpassgen a script that will rebuild a vpasswd file from the directory structure of an existing domain ;] Then all you have to do is deal with customers calling and complaining about passwords. "Sailin Nelson" - modularized the big_dir i/o api functions. - moved file based big_dir i/o functions to the cdb module. - added mysql big_dir i/o functions. Dec 12 - cdb module now allows the uid/gid owner of a domain to set a password or update the password structure. Brian Kolaci wrote the code. Thanks to Matt Simmerson for sending it in and using it on his boxen. - update how vchkpw calls vclose to cleanly close mysql connections on pop authentication. This removes those horrible "aborted connection" messages in the mysql error log. Dec 11 - log user, host, ip and password for users who are denied pop access yet attempt to connect via pop. "Chris Bunnell" Dec 10 - update the vmoduser usage comments to include the V_USER0 through V_USER3 flags. Update the GidFlag bit flag setting in the option processing to correctly set the flags. "Abdul Rehman Gani" Dec 9 - vmysql module didn't unmangle ip address from courier-imap users Dec 6 - added -d option to vadddomain for setting the directory on the command line. Dec 5 fixed apop usage in vmysql.c Nov 30 - free memory in vcdb.c under error condition "James" Nov 27 - vsqwebmail_pass was writing over TmpBuf1 in vadduser so that the chdir back to the callers directory was not working. Martin Köster Nov 20 - add a res1=NULL in vmysql.c vauth_getall to make it more robust. Garrett Marone Nov 15 - vchkpw forces all pop names to lower case 4.9.6 Nov 13 - upgrade version to 4.9.6 4.9.5 Nov 1 - udated vmysql.c voracle(pc/c) vsybase.c and vldap.c to correctly set the sqwebmail password Oct 31 - logic error in vget_assign with memory freeing - Happy Holloween! - commenting code in vpopmail.c, removing static strings for calloc'd memory. - --enable-logging=y and password would fail, then no string was formatted so blank entry to syslog, fixed. Oct 30 - moved the SQWEBMAIL_PASS define into configure program. - found error in vcdb.c module. it was not setting the sqwebmail password when called by vauth_setpw api - memory and FILE * leak in vchkpw.c fixed Brian Kolaci - NoMakeIndex and ClearFlags option command line flags were set to the opposite of what thier defaults should be Daniel Augusto Fernandes Oct 25 - added error checking to vauth_getall in all auth modules - moved the open_smtp_relay code into the vpopmail library so courier-imap can do roaming users. removed the opensmtp files Oct 24 - vget_assign had a strncmp != 0 and should have been == 0 Oct 23 - lower the case in vdelivermail for user and domain after the values are filled in from the environment variables. submitted by RP Oct 19 - vcdb.c - set fsv NULL when vauth_getall has no more users - vaddaliasdomains was not setting the path to the domain correctly, due to the switch to multi uid/gid, fixed. Oct 17 - update configure.in to use ps -aux instead of ps -ef for openbsd platforms - add vcloses to all programs. This should remove mysql warning messages about aborted connections if mysql is setup to report aborted connections. - add -i uid -g gid to vadddomain - update confingure.in to set USE_SQL for oracle and sybase. - update usage printouts in vadddomain, vadduser, vdeluser, vdeldomain, vuserinfo, vsetuserquota, vaddaliasdomain, vpasswd, vaddaliasdomain - updated vuserinfo to print out gid flag values and what they mean - update vuserinfo to print out default domain name when no user is found and you are searching the default domain, for example: ./vuserinfo user Oct 16 - remove check for .overquota-msg in users dir, only use domain based .overquota-msg files - new quota checking code. checks all emails in all directories under a users directory. uses a status file to minimize disk i/o Oct 12 - make the uid APOP field be a bit flag - update mysql, sybase, oracle and ldap modules to support non vpopmail uid/gid domains. - vclose in voracle.c was declared int vclose() should have been declared void vclose(), fixed Oct 7 - add new USE_CDB define to configure scripts - update vmkpasswd.c to use the USE_CDB define, so non cdb authentication modules don't complain during make. - have tcprules build the temp file in the tcp.smtp directory - have mysql module return error on no connection - Update INSTALL to note that a home directory is required for installation - slen return 0 if passed NULL parameter - if default domain is configured, not all /etc/passwd accounts work, fixed - update vmoduser to use getopt add -n option to not re-build vpasswd.cdb file Oct 6 - vadduser: fix command line parsing, fix core dumps on incomplete command line options, add check for ctrl-D break out of vgetpassword function. - updated vauth_getpw in cdb module to return error if program does not have permission to get a write lock - updated vuserinfo to have new output syntax, plus will output all fields for a user if no options except email address is given. - removed redundant chdir() in vadduser in vpopmail.c - integrated Krzysztof Dabrowski changes to the source code for setting up domains under /etc/passwd users other than vpopmail. - New check in vadduser function in vpopmail library to not allow email addresses with one letter in the user name. For example, a user named 0 will conflict with the bigdir algorythm that creates a directory named 0 to store the 100-199 users. 4.9.4 Sep 22 - modify safestring.c sstrncmp to return correct value if comparing a subset of two longer strings - vchkpw will autocreate a user directory if thier path value in the authentication structure is empty. Sep 21 - autocreation of directories would cause vdelivermail to core dump if pop account does not exist Sep 20 - updates to FAQ file 4.9.3 Sep 18 - fix up vclose is_open login in vmysql.c vsybase.c voracle.c - vdelivermail will auto create a users directory if thier directory value in thier authentication structure is blank. This can be used by sql based systems, or ldap systems. Users can be created and inserted into the database, and if their path value is left blank, vpopmail will use the bigdir directory layout algorythm to create a directory and update the authentication database. So, users can be created by just adding them to the database and leaving thier directory path blank. Sep 16 - remove perror print outs from file_lock.c - add -p file option to vconvert to convert a file of usercrypted_password entries into a domain. Sep 14 - vmoduser now lets a whole domain be set Sep 12 - update the ldap code to support setting/getting the uid, gid gecos and shell (mail quota) fields. Sep 11 - replace locking code in vpopmail.c and vcdb.c with new file locking code from Eric Peters 4.9.2 Sep 6 - add version switch to all v* programs, either with -v option or in the default usage statement - vadddomain prints out usage statement if no domain is specified Sep 5 - set tcp.smtp.tmp file in the dir with open-smtp. fixes some "ack child crashed" messages Aug 25 - set global close flag for mysql module fixes sqwebmail/mysql bug 4.9.1 Aug 24 - add --enable-logging=p to log failed passwords. New default does not log the password. - Add new locking code patch from Eric Peters Aug 21 - add sstrcmp and sstrncmp functions to safestring.c - replace all strlen, strcpy, strcmp and strncmp with functions in safestring.c 4.9 Aug 14 - lots of new ldap code 4.8.9 Aug 9 - changed getuid to geteuid so setuid programs work. 4.8.8 Jul 27 - added vuserinfo program to display fields from the password information. Aug 2 - input checking bug in safestring.c scopy fixed Aug 4 - memory allocation error in vchkpw log_pass_fail routine would cause an -ERR aack, child crashed if the password was too long. fixed. Aug 7 - add vmkpasswd program to the Makefile Aug 8 - In the vadddomain program, check the status code of the vauth_getpw call before calling vsqwebmail_pass 4.8.7 Jul 27 - Update the auth modules to do a getuid to check if the uid = vpopmail or root, for changing the passwd files in any way, vpasswd or vmoduser. - changed vmoduser and vpasswd programs to print error return - fix case sensitivity in aliased domains 4.8.6 - have the configure script look for /usr/bin/tcprules as Jul 07 well as looking for it in /usr/local/bin/tcprules Jul 24 - removed unneeded fsync call in vdelivermail - removed unneeded alarm and sig alarm handler in vdelivermail - added vdelivermail filter code from Matthias Henze as a new configure --enable-deliver-filter option 4.8.5 Jul 07 - some code and configure clean up - added vclose call to ldap module 4.8.4 Jul 03 - force lower case incoming user@domain in vdelivermail.c - add vclose function call to close the connection to the database. This is needed in courier-imap so the database connection isn't kept open. - added sybase module - Set vpopmail uid/gid for tcp.smtp.cdb and open-smtp files when called by clearopensmtp program. Jun 30 - removed drop index call in mysql, oracle. they are no longer needed. 4.8.3 Jun 29 - oracle module added - memory leak in vauth_getpw in mysql module fixed - added primary keys to the vpopmail tables for both large and small site layouts. Also restrict domain size to varchar 223 - changed the default to turn off HARDQUOTA 4.8.2 Jun 28 - rewrote the configure.in and Makefile.am for new method of handling authentication module source code and libraries. mysqlclient objects are no longer archived into the vpopmail library. - added beinging of an ldap module. If currently only supports the vauth_getpw call. Which is enough for vchkpw and vdelivermail to work, as well as sqwebmail and courier-imap. 4.8.1 Jun 28 - added primary key to mysql relay table to make mysql replace work. No more duplicate IP's - allow usernames with trailing "-", ie: joe-@test.com - reviewed and changed all the permission setting code. removed some unused calls. Moved all the definitions for permissions to the vpopmail.h file. 4.8 Jun 27 - use getpid() to create a unique file name for tcprules in opensmtp.c roaming users option. - vchkpw syslog entry changes. No more var args, now more static buffer size, checking of all syslog message text for '%' character Jun 22 - Added authlib directory to the subdirs in Makefile.am so that make distclean will clean out the .o's in that dir. 4.7 Jun 22 - remove the automatic creation of vpasswd.cdb files to remove two "stat" function calls for email email and pop access. The vpasswd.cdb file is still (re)created when any function modifies the vpasswd file. Note: If you edit the vpasswd file by hand, you will need to run the vmkpasswd program - added a vmkpasswd program to create a vpasswd.cdb file from a vpasswd file for a domain. Jun 13 - added debug and backdoor ifdefs to vchkpw.c Jun 12 - fixed (hopefully for all time) the dir to users Maildir for cdb and mysql. - fixed the vconvert from cdb to mysql for user directories Jun 10 - Check for : character in gecos field and return error if found. vpasswd files are parsed using the : character. If spurious : characters are in any of the fields, we have a problem parsing the lines. Jun 07 - Ondøej Surý - fixed possible memory problem with handling the HOST environment variable in vdelivermail.c 4.6 Jun 07 - set RBLSMTPD environment variable for roaming users Jun 05 - automatically create user directories if they are in the password database under two cases. 1) when mail is delivered by vdelivermail and 2) when the user pop authenticates Jun 02 - Correctly names email files with Maildir++ names. Speficically it includes the size of the file in the name ...,S=nnnn where nnnn is the file size - Uses Maildir++ file names to calculate the size of the email file instead of stat'ing each file. Jun 01 - added "delete" as an option to vdelivermail to erase incoming emails for non matching accounts. 4.5 may 31 - fixed default domain code in vpopmail.c and vchkpw.c - stray mkstemp/mktemp files were being left behind, fixed - fixed extra directory formatting in vauth_adduser_size 4.4 may 26 - fixed use of the ATCHARS "@%/" for parsing user@domain may 25 - fixed configure to get the correct ps arguments for BSDI may 24 - opt fixed some things in the configure.in and Makefile.in so that mysql configures nicer 4.3 May 23 - extend the gid bit flags to include 4 user defined flags - updated vmoduser to set/reset new flags 4.2 May 22 - fix the command line processing in vaddaliasdomain - fix configure to always compile in the cdb library even for mysql. new vpopmail api call uses cdb functions - optimize rebuilding of tcp.smtp.cdb for --enable-roaming-users=y checks to see if the IP is already in the file. - aliasing of one domain to another with vaddalias domain works for both cdb and mysql and delivery and pop auth. everything. 4.1 May 21 - have vchkpw wait for tcprules to complete if using roaming-users=y so we don't get zomebie processes. - fixed vsetuserquota to support an entire domain ./vsetuserquota test.com 5 would set the entire domain quota to 5 bytes ./vsetuserquota test.com NOQUOTA would set the entire domain to not have a quota - cleaned up the buffer reading code from file descriptor 3 - documented some more code in vchkpw.c May 19 - memory leak in vcdb.c vauth_getpw fixed - memory allocation bug in vcdb.c vauth_getpw fixed for default domain stuff 3.4.11-2 Apr 04 - create ~vpopmail/etc dir on make install - move assumed tcp.smtp file to ~vpopmail/etc - move open-smtp relay file (for cdb auth) to ~vpopmail/etc dir This along with the tcp.smtp file move allows tcpserver to run the pop deamon as vpopmail/vchkpw instead of root - .qmail-default files are now created with "bounce-no-mailbox" as the default setup. I think this is safer than letting unsuspecting domains fill up thier postmaster mailbox - removed support for "defaultdomain" file ni ~vpopmail/domains Now it is only supported by --enable-default-domain - added vadddotqmail function for setting up single or multi line .qmail- files Mar 30 - fix the Delivered line to not have the virt domain before the user Mar 29 - use the replace function of mysql in vmysql.c vopen_smtp_relay function for storing the relay IP's - vpopmail's config.h is also copied to ~vpopmail/include/vpopmail_config.h - removed all error printf's from vpopmail libary and replaced them with VA_error codes - Updated FAQ with how to get vpopmail working with IMP and courier imap (thanks) - all functions that change dir return to the orignal directory before returning. Mar 28 - add new error return codes and char *verror(int) function - vadduser API now correctly returns to the cwd Mar 16 - change getpasswd to vgetpasswd HPUX compatiblity 3.4.11-1 Mar 14 - fix file permissions on .vpasswd.lock and .dir-control Jan 24 - change to INSTALL file for running pop3d server as vpopmail/vchkpw - added additional bounce checking Jan 20 - Bounds checking for buffer overflow Jan 19 - Fixed --enable-default-domain error in vpopmail.c Jan 15 - modified error logging of bad passwords to print out clear text password. This could be a risky thing. but based on system administrators real life experience, it helps them do thier job if they can see what the user is typing. Hence we show this information. Jan 14 - in vchkpw, made user and host global variables for logging. example: vchkpw: No user found [jojo@bab] from 127.0.0.1 - Found some code logic flow errors and fixed. - standardized error and login log output messages in vchkpw. - vauth_getpw no longer modifies the incoming host parameter value. instead it mallocs a local variable. Jan 13 - changed mysql query to use_result instead of store_result which was causing a buffer overflow in the temp IP for relay - added IP to No user found line - started work on mallocing buffers instead of declaring them big enough to not be over run Jan 3 - tcprules was being called with "tcprules file.cdb file.cdb" when it should be called with "tcprules file.cdb file.tmp" So it is now modified to call it with "tcprules file.cdb file.XXXXXX" where the 6 X's are replaced by mktemp(3) Jan 3 - updated the mysql modules to store the temporary IP relay file in the database instead of in /etc/open-smtp. No more file locking needed this way. dec 31 - set default gecos field to user name in vadduser program dec 30 - put error check on lock function, exit with errors dec 28 - added -s flag to vadduser command to speed up indexing. with -s the vpasswd.cdb is not updated, and will update on next mail delivery or pop3 access. dec 27 - added cdb subdirectory and removed the need for ucspi-tcp package dec 20 - modified bigdir.c and bigdir.h to make the max depth and max users per level to be #defines dec 18 - found typo in large table sql definition for mysql. was using char and not varchar dec 17 - added .no-user.msg for setting bounce message for no user dec 14 - missing closedir() in vconvert dec 13 - added directory walking code to vpopbull. the list of domains does not need to be specified. If not specified then all domains will receive the email. dec 13 - optimized initial mysql connection to use mysql_real_connect. dec 10 - added run time support for setting default domain. Create a file in ~vpopmail/defaultdomain holding the default domain name. This is over ridden by the compile time DEFAULT_DOMAIN option. - Added new parameter to vadddomain api call to make a domain the default. Pass 1 if you want it to be default, pass 0 if no. - Added new -d flag to vadddomain command line program to set a domain to be the default. - updated error logging in vchkpw to say vchkpw instead of main. Also added user name to error log if not found. - fixed a few bugs that caused core dumping if the pw_data struct was NULL - fixed a bug in local user lookups under freebsd 3.3. - added "no dialup" flag to vmoduser - added support for setting gecos field in all functions. - vmoduser added -c "comment" field, clear flags is now -x - vmysql.c module did not set the default quota on new user creation. fixed - added vconvert from mysql to vpasswd.cdb files. needs to be compiled with --enable-mysql=y to work. - added vmoduser program to restrict access to different email features no webmail, no pop, no imap, no password change, bounce email - fixed bug in mysql module for vauth_setpw only effects in vconvert program 3.4.10 - added --enable-default-domain in configure script to allow setting the default domain name. users from the default domain don't need to specify thier domain name in pop (or in any other app that uses vpopmail libraries, like the upcoming releases of qmailadmin,sqwebmail,courier-imap) - modified and tested the code to support default domain. - added sortit parameter to vauth_getall. No effect for vpasswd/cdb since users are already sorted alphabetically. With mysql causes an order by pw_user to sort the results alphabetically by pw_name - renamed delfiles to vdelfiles for other apps that might use this function - created libvpopmail.a file for other applications which need vpopmail functions - included support for including libmysqlclient.a files in libvpopmail - included support for including cdb object files in libvpopmail - included ucspi package in distribution. removed --enable-ucspi-dir - vadduser checks for valid username characters and format. If invalid it returns -2 and prints a message. - vadddomain checks for valid domain name characters and format. If invalid it returns -2 and prints a message. - vadduser now adds users alphabetically in vcdb module - cleaned up file permissions inside util.c - user over quota now bounces email back to sender with new subject line and from postmaster@ - vconvert program allows conversion between default sql, cdb, and large sql - message to qmail log removed unused blah:blah:blah stuff - bounce message changed to look more like qmail - if a user is over quota, messages of 1K or less are still delivered. This allows system admin programs to send an over quota message to a user. - added default support for small user/lots of domains. New configure option --enable-large-site=y optimizes mysql for small number of domains with large number of users per domain - updated API and command line programs to use utility functions: vadddomain, vdeldomain, vadduser, vdeluser, vpasswd, vsetuserquota - //.qmail file can have multiple email addresses to forward to. - added support for mysql. See README.mysql - adduser function checks if the user exists first - updated INSTALL and FAQ files - vadddomain, vdeldomain, vadduser, vdeluser, vpasswd, vmkcdb now display correct usage printout when given -h option. - vaddomain removes duplicate entries in /var/qmail/users/assign file - fixed hupping qmail-send for some solaris platforms due to "broken pipe" error. - Support for user-subname. For example: mail to user-subname is delivered to user. Before this user-subname was considered to be a full email name and would be bounced. - switched all strcpy, strcat, strncpy and strncat functions to safe versions of scopy and scat, see safestring.c for details - removed use of pophome variables in vdelivermail.c and vchkpw.c since it is a #define generated during configure - made all vpasswd file names and cdb names #defined in util.h Makes it easier if you need to move the files to.. say.. err. perhaps.. an NFS mounted subdirectory. *cough* - efficency change. switched to using the TCPLOCALHOST environment varible for IP_ALIAS setting. --enable-ip-alias-domains=y. It removes a dns reverse lookup by getting the value of the environment variable set by tcpserver. - If a hard quota is defined (default) then vpasswd file contains the actual hard quota instead of the words "NOQUOTA" when a user is added. - modified vsetuserquota to set the quota for all users in a domain. vsetuserquota domain quota-in-bytes or vsetuserquota user@domain quota-in-bytes. Also excepts K and M for kilo and mega bytes. ie. vsetuserquota domain 1M - added .qmail support within a users dir at the same level as the Maildir. The reason is to be able to turn on and off email forwarding for a pop user. And to place the .qmail file inside the users directory instead of at the base directory for the domain with a .qmail-user file. Sqwebmail will be modified to add a "turn on forwarding to this address" button in the options page. - added vpopbull program to distribute an email to all users in a virtual domain. it can deliver to all domains or a single domain. - removed fgetpwent requirements - uses morercpthosts for sites with over 50 virtual domains full admin features, creates/deletes morercpthosts and morercpthosts.cdb during addition and deletion of virtualdomains. - automated support for cdb versions of vpasswd user files - updated error log report to include domain name when user not found during pop authentication. - if ip_alias_domains is enabled, then check the virtual users first, otherwise check /etc/passwd users first - changed popen call to fork/execl in vchkpw for running qmail-newu. popen isn't good, since it's dependent on the default shell, and not all versions of shells support popen in the same way. - changed code in opensmtp.c program when it envokes tcprules. It returns an error instead of exiting with an error. Caused "Child Crashed". - make install or make install-strip sets the user and group permisions on all the installed directories. - SHELL=NOLOGIN is passed in vchkpw environemnt to qmail-pop3d. - vadddomain now checks qmail/locals file and removes the domain name if it is there. Sanity check. - Added "/" character to the "@" and "%" characters to use in pop names. Perhaps this could also be used in vsqwebmail. 3.4.9 - switched from using vsyslog to vsprintf and syslog. Digital Unix doesn't have vsyslog. - added UID/GID vpopmail user home dir defines in config.h - updated all code to not call getpwname for the vpopmail user. All references to homedir, uid, gid changed to use config.h values This should increase performance, especially on systems with large /etc/passwd files. - fixed bug in setting --enable-vpopgroup - new code for user directory splits for larger sites - removed {} brackets around configure options for configure --help - added -q quota_in_bytes option to vadddomain to set the postmaster quota - added -q quota_in_bytes option to vadduser program to set the quota - files gets locked by library routine when any modifications are being done. Prevents multiple programs from stepping on each other. - new program, vsetuserquota, to set an individual users email quota in a virtual domain. - Changed NOLOGIN string in vpasswd file to NOQUOTA. Will retain backward compatiblity with NOLOGIN. Updated vpasswd.c to support this change. - #ifdef FGETPWENT changed to #ifndef FGETPWENT in vchkpw.c and vdelivermail.c - vadduser checks if a user is in /etc/passwd before adding to ~vpopmail/users - syntax error on buffer declaration when --enable-apop=n fixed 3.4.8 - per user quota's currently have to edit vpasswd file by hand. Change the last field in the vpasswd file from the default of "NOLOGIN" to the number of bytes of the quota. If it is set to NOLOGIN it will have the quota set in configure - disable hard quota code --enable-hard-quota=0 or --enable-hard-quota=n will turn off quota checking code. - better logging with three --enable-logging options --enable-logging=y means log success and failure auth and fatal errors --enable-logging=n means log nothing and the default is: --enable-logging=e means only failure auth and fatal errors - vpasswd reports error if trying to change password for non existant user. - new program "vaddaliasdomain" to alias a new domain to a current domain. 3.4.7 - changed package name to vpopmail - fixed configure error on solaris for -lnsl and -lsocket libraries - fixed --enable-passwd=n option syntax errors - removed no-user-check configure option - tweaked chown chgrp install - tweaked --enable-passwd=n code 3.4.6 - for sites that use ip's per virtual domain. vchkpw doesn't require the user to pop in with user%virtualdomain. it performs an IP reverse lookup and uses the returned hostname as the virtualdomain. This hostname must match the virtualdomain name created with vadddomain. New enable option --enable-ip-alias-domains - code cleanup - opensmtp now uses the value of --enable-tcp-server-file to envoke tcprules with the correct file if it has been changed during configure - added --enable-tcprules-prog in the configure script to allow placing the tcprules program in a location other than /usr/local/bin/tcprules - added --enable-relay-clear-minutes to over ride the default (60) number of minutes before a roaming users IP will be cleared from the relay files. - changed vadddomain to update rcpthosts and virtualdomains instead of just adding the new domain to the end of the file. Duplicates are removed and only one entry with the domain will end up in the file. - changed vadduser to use the same update code as vadddomain - the open-smtp files are now placed in the same directory as the tcp.smtp file. If the tcp.smtp file location is set with the --enable-tcpserver-file configure argument, the open-smtp files are put there too. The default is in /etc - sets the files in ~vpopmail/bin to have correct uid and gid - added --enable-admin-email to override the default admin email address. The default is set to postmaster@hostname, what ever hostname returns. - added --enable-no-user-check to not check for the vpopmail and vchkpw user and group. This was needed to run the rpm that is being developed. 3.4.5 - force usernames and domains to be lower case in vadddomain and vadduser - replaced md5 code with GPL'd source instead of the RSA code - fixed inclusion of fgetpwent module in binaries on systems that already have fgetpwent in the system libraries. - removed "_" character from list of allowable "@" replacements. Now only "@" and "%" are allowed for delimiting user and domain This allows email addresses to have "_" in the user name, like: joe_blow@one.com - added check for null user, host or prefix to vdelivermail to exit with error instead of core dumping. 3.4.4 - fixed bsd need for fgetpwent in Makefile and source - Added FAQ file - if qmail-send is not running, vadduser and vadddomain will not attempt to sig hup qmail-send - if control/virtualdomains or control/rcpthosts files don't exist vadddomain would set the permissions wrong. They are now set correctly to be read/write user, read group, read other. - added the ability to bounce mail if a pop user or .qmail file doesn't exist. - fixed redhat 5.2 /etc/passwd authentication with no shadow. It was a configure defines setup - fixed Makefile problems for solaris platform (might fix BSD too) - fixed file permissions on the distribution files. - added default mode on users/assign file to read/write owner, read group read other. - added -a switch for vpasswd to set APOP for that user. - added file locking with fcntl for the open relay after pop authentication. heavily popped sites were getting errors when two pop authenications tried to rebuild the /etc/tcp.smtp.cdb file at the same time. - added a configuration option --enable-tcpserver-file to set the default /etc/tcp.smtp file to something different. - added -a switch to command line argument for vadddomain to use APOP for the postmaster account for that domain. - added -a switch to on the command line for vadduser to use APOP for that user. 3.4.3 - added vpasswd command to change the password for any user or user@domain. - moved users vpasswd file into ~vpopmail/users instead of in ~vpopmail. - configure support. - auto detects shadow password. - installs into ~vpopmail/bin ~vpopmail/users ~vpopmail/domains. - C version of vaddomain, vdeldomain, vadduser, vdeluser. - vaddomain renamed to vadddomain. - hard quota default set to 50meg per user. 3.4.2: - By default any mail that doesn't match a pop account gets delivered to postmaster. In this new version the default account can be at a remote location. The change is in the .qmail-default file. - User quota hard limit (set to 10 meg). When hard limit is reached, all email is bounced back to sender. - Force 0644 file permisions on /etc/tcp.smtp.cdb Opens smtp relay for 1 hour after pop authentication. This works in conjunction with the tcpserver -x /etc/tcp.smtp.cdb feature. - User mail quota hard limit. 3.4.1 - Fixed case insensitivity problem