Only the last entry is complete, the others might have been condensed. 1990/12/07: v1.00 1990/12/12: v1.01 1991/02/04: v1.02 1991/02/13: v1.10 1991/02/21: v1.20 1991/02/22: v1.21 1991/03/01: v1.30 1991/03/15: v1.35 Started using RCS to manage the source 1991/06/04: v1.99 1991/06/10: v2.00 1991/06/11: v2.01 1991/06/12: v2.02 1991/06/20: v2.03 1991/07/04: v2.10 1991/07/12: v2.11 1991/10/02: v2.20 (never released) 1991/10/18: v2.30 Reached the doubtful milestone of having a source file (regexp.c) which provokes a compiler error on an old compiler (if using the optimiser) 1991/10/22: v2.31 1991/12/05: v2.40 1991/12/13: v2.50 1992/01/22: v2.60 1992/01/31: v2.61 1992/04/30: v2.70 1992/07/01: v2.71 Gave procmail, formail, lockfile and mailstat a more verbose command line help (called up by -h or -?) 1993/02/04: v2.80 Started using CVS to manage the source (god's gift to programmers) Changes to the installation scripts: - the autoconf script now performs a reliability test on kernel locking support - reached the doubtful milestone of consistently crashing the kernel on a Convex by running the locktst program 1993/02/19: v2.81 1993/06/02: v2.82 (never really released, was only available as prerelease 4) Worked my way around the !@#$%^&*() POSIX setgid() semantics (if your OS supports setrgid() or setregid()) 1993/07/01: v2.90 Condition lines in recipes can now be started with a leading `*', there is no longer a need to count condition lines, simply set the number to zero, and let procmail find out by itself 1993/07/02: v2.91 Reached the doubtful milestone to sometimes crash an Ultrix machine (due to the lockingtests, not procmail itself) 1994/06/14: v3.00 Changes to procmail: - Changed the semantics of the TRAP keyword. In order to make procmail accept the exitcode it returns, you now have to set EXITCODE="" - It was still occasionally trying to lock /dev/null, which is of course silly, fixed that - Taught it about `nesting recipes'; they allow parts of an rcfile to be grouped hierarchically - Fixed a discrepancy with /bin/sh backquote expansion in environment assignments (preserving all spaces) - Logs its pid and a timestamp when VERBOSE=on - Caused the regular TIMEOUT to break a `hanging' kernel lock - SIGUSR1 and SIGUSR2 can be used to turn on and off verbose logging - Worked around a bug in the `ANSI'-compiler of Domain/OS - Procmail and lockfile now inherit any ignore status of most regular signals (fixes a problem with some buggy shells) - Optionally reads in a global rcfile (/etc/procmailrc) before doing regular delivery (which includes the new keyword: DROPPRIVS) - Can pipe the mail to stdout on request - Moved the "Reiterating kernel lock" diagnostic into the "extended" (i.e. VERBOSE=on) section - Tightened the loop when skipping comments in rcfiles (for a slight speedup) - Added support for filesystems not capable of creating hardlinks - Tightened the security check on initial absolute rcfiles (they sometimes can't be world writable) - Weighted scoring on conditions - Ability to inline parse ${var-text} and ${var:-text} - Ability to inline parse ${var+text} and ${var:+text} - Skipping spaces after "!" and "$" on condition lines - Implicit delivery somehow got broken: fixed - Default umask is always 077 now for deliverymode - Extended ^FROM_DAEMON and ^FROM_MAILER macro regexps again - The -f option became less strict, everyone can use it now, except that unpriviliged users will get an additional >From_ they didn't bargain for (in order to make fakes identifiable) - The date on the From_ line can now be refreshed with -f- - Introduced new recipe flags: E and e (else and error) - Nested blocks clone procmail on a 'c' flag - Introduced the EXITCODE special variable - Implicit delivery mode is now entered if argv[0] doesn't start with the word `procmail' - Fixed the BSD support for kernel-locking only operation - Taught the regexp engine about \< and \> - Fixed bug present on some systems; caused the body to be munged when filtering headers only - Added -o option (makes procmail override the From_ lines, like it used to) - -p and -m together shrink the set of preset variables to the bare minimum - -p is not supported alongside -d anymore - /etc/procmailrcs/ is the place for optional privileged rcfiles in -m mailfilter mode - Switched the meanings of SIGUSR1 and SIGUSR2 - The 'a' flag didn't work correctly after filter recipes - Changed the permissions on the lockfile, writing zero in it - Check the permissions on the existing system mailbox, correct them if necessary - Clean up zombies more often Changes to formail: - Fixed a sender-determination-weight problem, it mixed up the weights when autoreplying and when regenerating the From_ line (and thus didn't always pick the optimal field) - Pays attention to the exitcode of the programs it started - Accepts simultaneous -X and -k options - Fixed a bug introduced in v2.82 in formail when using the -x and the -k options simultaneously - Rearranged the weights for "-rt" (made From: more important) - Parsed return-addresses starting with a \ incorrectly (causing it to coredump on occasion) - Supports the -s option withouth a program argument - Recognise extra UUCP >From_ lines - Introduced the -B option to split up BABYL rmail files - It regards and generates a FILENO variable (for easy numbering) - Moved the idcheck functionality into formail -D (due to popular demand), for eliminating duplicate mails - It terminates early now if it only needs the header - The -n option can now sustain itself by reaping children if it can't fork() immediately - It supports incomplete field specifications which match any field starting similarly - Introduced the -u and -U options - -a Message-ID: and -a Resent-Message-ID: to make it generate new ones - Keep the X-Loop: field when generating autoreplies - Lowered the negative weight for .UUCP reply addresses - Honour Content-Length: fields, also speeds up processing of lengthy messages - Clean up zombies more often - Handle bangpath reconstruction - Made -q the default, use -q- to disable Miscellaneous changes: - Detecting and dodging buggy zshs everywhere - Slightly adjusted autoconf for the new non-standard 386BSD and NeXTStep 3.1 environments - Extended the FAQ - Extended and fixed the procmailex man page - Updated the crontab script recommendation in the procmail man page - Fixed the "procmail"-mailer definition in the procmail man page - Created a new procmailsc man page - Fixed a bug in lockfile, the exitcode was not correct if you used -! with more than one file - Including now, some (old) architectures seem to insist on this - Revamped the library search code - Provided a faster (than most libraries) strstr() routine - Created the setid program (to be used by the SmartList installation) - Checking for fstat() in autoconf - Avoiding i/o-redirection on subshells - Provided for the ability to hotwire the lockingtests - Autoconf asks if you'd like to use the existing autoconf.h - Autoconf determines MAX_argc (for choplist) 1994/06/14: v3.01 No changes, version number bump to keep in sync with SmartList 1994/06/16: v3.02 Made formail quiet (by default) about Content-Length mismatches The version number in patchlevel.h for this version was incorrect and still displayed v3.01 (yes, silly, I know) 1994/06/30: v3.03 Limit the no. of retries on lockfiles if the recipient is over quota (procmail & lockfile) Removed some superfluous "procmail:" prefixes in the middle of an error message Utilise a syslog daemon (if present) to log some critical errors (mostly attempted security violations and errors which are fatal but can't occur (like an unwritable /dev/null)) Reconstruct and respect Content-Length: in procmail (if you need the >From lines, you'll have to take any existing Content-Lenght: field out of the header) Reformatted the source code to match the changed conventions Procmail always defaulting the umask to 077 for deliverymode broke some systems, reverting back to the old method of allowing group access on the system mailbox if necessary 1994/08/02: v3.04 Changes to procmail: - Support some non-BSD compatible syslog() implementations - Even if the Content-Length is zero, write it out (some programs can't deal with the empty field) - Drop the safety margin on Content-Length calculations, some programs can't deal with those - Truncate folders to their former length if delivery was not successful - Fine-tuned the ^FROM_MAILER and ^FROM_DAEMON macros again - The -v option lists the locking strategies employed - Will create the last member of the mail spool directory if found missing Forgot to define closelog() away if syslog support is missing Worked around the old syslog() interface Worked around a compiler bug old HP compilers (pointer-unsigned), caused the Content-Length: field to be mangled on some older HP/UX systems (not on every mail) Worked around compilation problems on SCO and old versions of IRIX Some fixes to the man pages Changes to formail: - Mistakenly turned X-Loop: fields into Old-X-Loop: when autoreplying - Allow wildcard -i when autoreplying - Renaming short fields to longer fields didn't always work - Renaming with a wildcard source/destination is possible now - -rk didn't behave correctly if a Content-Length: field was present Extended the sendmail directions in examples/advanced, it includes a direct example on how to make use of the -a feature Using EXIT_SUCCESS instead of EX_OK Both procmail and formail take the -Y option, for traditional Berkeley format mailboxes (ignoring Content-Length:) Some NCR machines didn't have WNOHANG defined 1994/08/04: v3.05 Formail v3.04 didn't remove the From_ line if given the -I 'From ' option, changed that back, allowing for -a 'From ' Procmail sometimes didn't reliably count the number of matches on a weighted recipe, fixed Some minor manpage adaptations 1994/08/30: v3.06 Groff -mandoc macros managed to display the man pages incorrectly, hacked my way around the .TH dependency to fix it Split up string constant FM_HELP, it exceeded some compiler limits Changes to procmail: - Fixed a bug which was present since v2.30: 'z' was always handled case sensitive (seems like not many people use that letter :-) in regular expression conditions - The ^^ anchor can now also be used to anchor the end of a regular expression - The -m flag will now unset ORGMAIL and will make procmail omit the check for a system mailbox - Allow easy reconfiguration of the default rcfile location - Extend the list of internals displayed with -v - The mail fed to the TRAP command contained some spurious nul characters, fixed Optionally allow the automatic installation of compressed man pages Formail v3.00 and later occasionally seemed to hang if used in a chain of pipes and fed with more text than it needed, fixed Updated the FAQ Updated the man pages (among others: vacation example changed) Sharpened the autoconf const check, AIX 3.2.3 managed to slip past it again Made sure that "make -n" with any make works as expected 1994/10/31: v3.10 Changes to procmail: - Minor corrections to the semantics of the 'a' and 'e' flags - Minor correction to the semantics of the -o option - Slight regular expression engine speedup - Regexp matching of environment variables is possible now - Due to popular demand: LOGABSTRACT=all logs *all* successful delivering-recipes executed - Enforce secure permissions on /etc/procmailrcs if used - Take sgid bit in the system mail spool dir into account even if it is world writable - The regexp engine can return matches now (new token "\/", new variable "MATCH") - New recipe flag 'r', raw mode, so procmail doesn't try to ensure the mail ends in an empty line - Success and failure of a filter recipe is well defined now - Procmail v3.06 prepended a bogus "." to explicit rcfile names searched relative to the home directory, fixed - Carved out two subroutines from main() to get it below the optimisation threshold - Eliminated duplicate error messages when procmailrcless delivery fails - Logging "Quota exceeded" messages when appropriate - Truncate notification suppressed when logfile not opened - Truncating didn't always work when delivering across NFS - The $_ special variable was wrong when wasn't set Changes to formail: - New option: -z (zap whitespace and empty fields) - Reading from stdin doesn't require the silly three EOFs anymore - -D with -r cache reply addresses now - Carved out one subroutine from main() to get it below the optimisation threshold - -R with -x didn't work reliably - -r with -i or -I sometimes had unexpected effects (in v3.06) - The nil-Return-Path-override was broken, fixed Updated the man pages, new subsection to procmailrc(5) summarising procmail regexp syntax Expanded on the sendmail.cf $#local example in the examples/advanced file again Revised detection of hard-link incapable filesystems during the installation Fixed bug in lockfile, the exitcode was not correct if you used -! (I hope this finally fixes this -! problem) Using execv() instead of execve()