Change Log ---------- Changes in 1.5.5 * Bugfix in io.c fixes segfault when using debugging * Addded check for SIGHUP in ringd to reload log file Changes in 1.5.4 * buglet: db4 now included in dist tar.gz file Changes in 1.5.3 * Hopefully fixes bug that in special occasions could crash pproxy when too many connections came in in a short time under hight load. * There are now new PDM modules for newer Berkeley DB libraries (db4 and bdb). See pdm/README for details. * Changes for new autoconf version * SGML documentation stuff updated to work with Debian tools * Bugfix: Quoting new lines in pcontrol.c * Bugfix: ringd: wrong integer type used * messages.xml now in deb file Changes in 1.5.2 * Fixed SSL includes in pdm files Changes in 1.5.1 * TLS: Ports 995 and 996 by default in ALLOWED_PORTS * TLS: New "prng" command to seed pseudo random number generator * TLS: Added SSL_MODE_AUTO_RETRY option * TLS: New configuration var "allowsslv2" (default off) * TLS: improved documentation for SSL/TLS Changes in 1.5.0 * TLS: changed uses of 'SSL' to 'TLS' where possible. * TLS: sslkeyfile option is not used any more. instead /.pem is used * TLS: uses different keys and certs now for each vserv * TLS: initialization is done as far as possible for each vserv when it is configured * TLS: support for STLS (see "starttls" config option to vserv command) Changes in 1.4.5 * Full paths for programs in init scripts * Bugfix: When using fallback username and password should now be given to the backend properly. Changes in 1.4.4 * new option --host for checked to bind to specific IP address * bugfix: pstatus now shows mailbox instead of username in mailbox field * documentation for read-only variables gid, uid, group, and user have been removed because they don't work any more since version 1.4.3. * dbdir config var was still in documentation. It has been removed long ago, because this is now configured in pdm modules. The documentation has been updated * ringd has now two options: --user and --group to set the ownership of the UNIX domain socket used for communicating with pproxy. init files have been updated accordingly * ringd is now included in rpm files Changes in 1.4.3 * Small fix in io.c, so that SSL sort-of-works again * pserv now listens to -l command line option and opens the right log file * pproxy must now be started as a normal user, it will use a running ringd daemon to bind to needed tcp ports, the -u and -g command line options for pproxy don't exist any more * new ringd daemon * db3 pdm module updated to use version 3.3 Changes in 1.4.2 * fixed bug in test program t_util_timedesc * allow '-' char in session IDs, because they can appear in hostnames * if too many (currently 5) bad commands are received in the auth phase the connections is dropped * fixed type of argument for accept in two places (size_t -> socklen_t) * server start message in log file for pproxy, pserv and pcheckd now includes version, rundir, user and group information where applicable * changes in the RedHat rpm build scripts. An 'rpm -ba' will not try to do a 'rm -fr /' any more. Changes in 1.4.1 * bug fix in xlog.c: A buffer was too small which resulted in segmentation faults if long lines were logged. This could probably not be used to hack the server because only ascii printable chars would be written into that buffer. * there was no default for some config vars. This is fixed now. * superfluous message "SOS 010b backend_unreachable" will not be printed any more * the session slot used for a new connection is now logged * new config var 'localip' for pserv to bind to a specific IP number * session ids can now be made unique clusterwide. There is a new config variable 'sidprefix', the session prefix, see the documentation for details. * the format of the shmem files has changed to accommodate a bigger session id. version is now 3. Changes in 1.4.0 * This is the same as 1.3b9 Changes in 1.3b9 * Logging changes for 'logeachmsg' * Log length of input for null_byte_in_input * checktimeout conf var works again. This is the timeout for the UDP mail check. Three tries will be used, each with this timeout. Changes in 1.3b8 * MASTER namespace is now called "USER", so it is not confused with master authentication * nice stuff removed from init scripts * libpdm_master.so supports the * wildcard now in peer, namespace or password fields. Only a single * is allowed, no fancy regexps or so. * when maxsession is reached in pserv a file /var/run/popular/pserv.maxsession will be created. pcheckd uses this file to signal the proxy that the maximum number of sessions is reached. pserv will remove the file if the number of sessions falls below maxsession-1 * new option -a (--active) for pstatus to only display active session slots * don't log erroneous LIST and NOOP commands in auth state, too many clients get this wrong * some log messages have changed to be cleaner etc. * the check for null bytes on input is now only done for data flowing from the client to the proxy or from the proxy to the server. This is because there are too many mail messages floating around with null bytes in them. * if /proc/loadavg is not found at configure time, load check will be disabled * new 'sessiontimeout' variable limits overall length of a pproxy or pserv session * config var readtimeout has been renamed to idletimeout. * new config var: authtimeout * time intervals can now be set easier with days, hours, minutes and seconds like the following examples: "6h", "15s", "3d12h", etc. Giving just the number of seconds is still allowed. This is used for the config variables checktimeout, sessiontimeout, idletimeout, authtimeout, and proxytimeout. * there is a new 'StateTime' printed by pstatus. This is the time since the last state change of this session * the running time of the pproxy and pserv is printed with pstatus in the title line Changes in 1.3b7 * pchecks loggs statistics on SIGHUP * 'Status: RO'-Header is now configurable at run time with 'statusheader' config variables * new Bool type for config variables * documentation of config variable types in main documentation * setting of config variables and other settings are now logged * some system calls have been made more reliable by wrapping tests for EINTR around them and restarting them if the come back with EINTR. this is necessary so that the process can be straced :-( * new --range parameter for pstatus * pserv going online and offline is now logged * several log messages had wrong log id: fixed * pcheckd can now fork and use several processes to better distribute the load * process priority settings didn't change much on real server systems, so we don't set it any more. * pserv uses mmap() to access mailboxes now. This is much faster than the old implementation * several pathologic cases for mail contents (like empty mails, mails without header etc.) have been checked and the server send reasonable things now. * 'make deb' creates several .deb files * retr-counter is only incremented once for each mail file Changes in 1.3b6 * fixed a few minor RFC compatibility issues. Mostly access to deleted mail is now forbidden everywhere as required by the RFC * added a chapter about standards compliance to the documentation * mail check is now retried three times and if pcheckd could not be reached, pproxy will pretend that the mailbox is empty * changes for Solaris support. Builds mostly successfully on sparc-sun-solaris2.8 * new test directory with test programs * pdm directories are no included in autoconf/automake stuff. Use --with-pdm to state what PDM modules to build * bug fixes * documentation updates Changes in 1.3b5 * Silly bug fixed: Some commands gave "-OK" as answer. That should be "+OK". * bug fix: local ip/port wasn't displayed in pstatus * pstatus: some small display changes * new option --rundir in pserv, pproxy, pcheckd replaces --statefile, --pidfile and --sockfile options * TOP x 0 doesn't return the whole mail anymore * bugfix: extra arguments on command line for some commands didn't generate an error * autoconf support for documentation * new man page popular-log.7 with log messages * new redhat spec file * improved documentation * defines for special behaviour in pserv.c: INCLUDE_STATUS_LINE and TOP_ZERO_SEND_ALL. These are for backward compatibility and will probably vanish soon * small bug fixes and code cleanups Changes in 1.3b4 * Unified signal handling * Use of readline is now default (use configure --diable-readline for disabling it) * new 'any' pdm module for testing * init files for RedHat and Debian * install server in sbin instead of bin * install-man target in doc Makefile * reorg of the files in /var/run/popular. they always contain the pid now. This makes it possible to run several servers or proxies at the same time. This is needed for (nearly) seamless upgrade of a running server * some files needed for the debian package. But doesn't work properly yet Changes in 1.3b3 * rewrite of some low level IO functions * PIPELINING support * new var 'logeachmsg'. If this var is set to '1', the state of each message in a mailbox is logged after the quit command. * if the maximum number of sessions (in pproxy or pserv) is reached, this will be logged * ptestpdm can check the protocol now * missing pdm load/unload functions implemented * funny chars in log files are escaped better now (like "\r\n\t\xfc" etc.) * log format has changed. There is a unique id consisting of four hex digits is logged now with every command. For 'legacy' messages this id is 0000. There is a list of all log messages that will be created automatically from comments in the C source. See README in doc dir. * the process priority of the child processes of pproxy and pserv is reduced * the TCP keepalive option is set on all sockets in pproxy and pserv * new buffering write operations. this leads to less packets in a POP3 dialog. * message length was wrong (added 12 bytes for 'Status: RO'-Header for new files instead of for old files) * bug fix: log reopen on SIGHUP works for pserv now * if the new log file can't be opened on SIGHUP the old file will be kept open * bugfix: top command works again * pcheckd has an option -e now, which allows to set a max value for the system load. If the load reaches that number, all mailboxes will be reported as empty. * the variable 'usernamecase' has been deleted. the PDM modules do case insensitive checking * pcontrol now supports line continuation with \ if reading from files Changes in 1.3b2 * the whole authentication stuff is new. All the functionality is now in shared libraries that will be loaded at runtime. This is much more flexible than before. See 'pdm' directory and documentation for details. * capa command now works for pserv * pcontrol help texts for pserv * pop dir can be changed now while pserv is running * more checks in pserv to catch install errors * more checks in pserv/pproxy to catch config errors * pcontrol is a bit more intelligent how they finds the socket to talk to the server. There is a new option --program (-p) which takes a program name (pserv, pproxy) as required argument and will connect to the corresponding socket in /var/run/popular. If neither --socket (-s) nor --program (-p) is given, pcontrol will look for a pproxy socket and if that is not found for a pserv socket. * pstatus uses the same algorithm as pcontrol to find the status file * pcontrol will complain if started as root or made setuid. this is a protection against user error * debug logging: default is now off, use the "/h debug" command in pcontrol to see how all this works, debug options are now documented in the main documentation also * pserv and pproxy have a 'maxlocalload' variable now. If the system load is equal or higher than this value no new connections are accepted. * fixed a 2001 bug: The mails are sorted based on the unix time stamp in the file name. Currently this needs 9 decimal digits. On September, 9th, 2001 this will "overflow" to 10 digits. The string comparison would return wrong results, so it is changed to a numeric comparison now. * fallback to pop3 works now Changes in 1.3b * pserv is now also configured and controlled with the pcontrol utility. Instead of the pserv.conf file there is now a pserv.rc file. Use pcontrol --socket=/var/run/popular/pserv.socket to connect to pserv instead of connecting to pproxy. (This will be easier in a future version.) The pcontrol help texts are currently only for pproxy. This might be confusing, sorry. * SSL/TLS support now works. This is still early alpha, but you can actually connect with s_client and 'hold a conversation' with pproxy. I haven't tried it with a real POP client yet. If anyone wants to help me test this, give me a shout. * To make SSL/TLS support possible there is a whole new bunch of low level IO operations that support normal sockets or SSL in a transparent way. I might have broken something on the way and I know of at least one bug still in there. All the new functions are in io.c. * There is now support for the CAPA command in pproxy. This is a somewhat complex issue. Read the chapter in the documentation before you use this. The server currently has no CAPA support, but will in the final version. * There is now a 'Setup' chapter in the documentation, that will help you set up POPular. There are several other small changes to the documentation. * There is the beginning of a check_setup script, that can be run to check your setup. It will check directory permissions etc. and report anything that looks out of the ordinary. * binder is not an external program any more but a part of pproxy. * A bug in the command line option parsing that let the process core dump if an unknown option was used is fixed in all programs. * Password is now passed properly to POP3 backend (bug found by Bruno Conte ) * Fix for missing socketbits.h resp. bits/socket.h include files on older RedHats. Changes in 1.2 * First public version.