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/05/02 - update vpopmail.h #define MAX_PW_QUOTA 20 02/01/02 "Michael Bowe" - increase the mysql pw_shell (quota) field from 12 to 16 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