Here are the things that I have left to complete (roughly in order of personal preference). The lines marked "RELEASE TARGET" are the point of development that I hope to reach before I make another release. Some of the other items after the last "RELEASE TARGET" may make it into a release if I feel like it. I want short and easy to define goals so I can keep the development periods shorter. - Add note to FAQ regarding PHP error code 255 meaning the daemon is not running properly (once it's been confirmed). - Add tests for: - authvmailmgr - execution of presetuid and postsetuid hooks in authvmailmgr - Add note to FAQ or HOWTO regarding the two interfaces - Fix checkvpw to set MAILDIR before executing postsetuid somehow - Convert existing TeXinfo documentation to SGML - Add a mailbox size daemon command - Expand the record format to include a "last modified" field, and to change the flag values from binary 0/1 to ASCII. - Add the necessary code for NDBM, MySQL, and PostgreSQL password tables. - Add more complete tests to verify correct operation of "vaddusers" command. - Add Courier IMAP support to the bulletin facility - Add support to the vpwtable template that allows writing a batch of users in a more efficient manner - start writing (locks the table for other writes, enter nosync mode) - append record (check for prior existance of record, add it) - stop writing (sync data and unlock the table) - Use the above to support a more efficient version of: - vpasswd2db - vrehash - Figure out how to make vdeliver write to both the output file and the queue simultaneously, to avoid needing to do rewinds. RELEASE TARGET 0.97 - Make the daemon commands stand-alone modules, using the revised daemon communication protocol. The daemon then just forks, reads in the command name, validates it, and hands off to an authentication module. - The authentication module checks for a custom authentication type based on the command name, does authentication, does setuid,chdir, and executes the actual command. RELEASE TARGET 1.00 - Set up the necessary structures to completely seperate the virtual domain information and the real user information, such that each user can have a list of virtual domains assigned to it. This structure will specify: - a domain prefix - a directory In this way, the virtualdomains will contain: domain.org:username-prefix And the domain listing with list prefix:subdirectory Each domain will have a completely independant user directory and password table. RELEASE TARGET 1.XX - Bug fixes and clean-ups, and documentation improvements RELEASE TARGET 2.00 - Investigate making all virtual users have a directory - add a "vadddomain" command that: - adds a new user to /etc/passwd - creates the new user directory - su's to that user and runs vsetup - fixes the user's home directory permissions - adds entries to control/virtualdomains - adds entries to control/rcpthosts - dynamic information per mailbox: - total number of emails and bytes received - number of emails and bytes currently - time of first and last messages - last access time via POP3 - text file named "data" - one line per datum, using "key=value" format - Write library routines, interfaced through vpwentry, that can get/set the dynamic data. - Modifiy the pop bulletin command to take the bulletin directory on the command line? - Continue to seperate the "misc" library directory into modules. - Add a daemon command to list all the configuration for a virtual domain. - document vchattr, vchforwards - limit the number of accounts created per virtual domain - look into interoperating with sqwebmail http://www.inter7.com/sqwebmail/ - look into interoperating with qmailadmin http://www.inter7.com/qmailadmin/ - add support for a streaming protocol, such that multiple commands could be issued per daemon session - in all the command-line programs: - if the environment variable VDOMAIN is set, read the virtual domain from that variable, prompt for a password, and do a server call - In vmailmgrd: ? add support for PAM for non-virtual users (this may be difficult, requiring a change in the authentication model) - documentation - write a "getting started" guide - miscelaneous - code clean-ups, including internal documentation