This file contains a summary of changes made in various versions of procmail up to and including the latest snapshot. It is derived from the HISTORY file that is included in source distributions. The latest snapshot can be found at or The currently available snapshot was created on Wed Nov 21 16:41:10 2001 GMT and is 226331 bytes in size. The MD5 checksum/fingerprint/signature/digest value for the current snapshot is 307e2445cea8f5c7b9690785caa83b3a.

If you give the snapshot a try it would help development immensely if you could email me a short note describing your system and how well it's working.

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:
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:
Changes to formail:
Miscellaneous changes:
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:
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:
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:
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:
Changes to formail:
Updated the man pages, new subsection to procmailrc(5) summarising procmail regexp syntax
Expanded on the $#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()
1995/05/17: v3.11pre3
Changes to procmail:
Changes to formail:
Changes to autoconf:
New Makefile variable VISIBLE_BASE
Added support for a parallelising make
Changed manconf.c to cater for broken systems that have a 100 line limit for sed (instead of a 100 command limit)
Fixed some portability problems with the Makefiles for the OSF make
Worked around old shells not supporting negated classes
Extended the FAQ
Updated examples/advanced docs for meta-argument setup in a traditional v5.* sendmail setup
Fixed potential memory corruption bug for machines that have sizeof(off_t)>sizeof(off_t*) (has been around for ages)
The man pages were remade upon every make, fixed
1995/10/29: v3.11pre4
Changes to procmail:
Changes to formail:
Changes to autoconf:
Changed the Mprocmail example, use $g instead of $f
1997/04/28: v3.11pre7
Changes to procmail:
Changes to formail:
Worked around an nroff-coredumping problem with IRIX
Corrected the last(?) "make -n" glitch
Fixed library detection loop for some Solaris 2.[3-5] setups
Changes to procmail and lockfile: use the authenticate library for easier integration with custom authentication and mailbox locations
1999/03/02: v3.12
Changes to procmail:
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)
Changes to formail:
Changes to formail and lockfile:
Changes to autoconf:
Mailstat returns grand totals as well now
Update FAQ and docs to reflect default placing of procmail in /usr/bin instead of /usr/local/bin
1999/03/31: v3.13
Mailstat was too loose in its awk syntax
Changes to formail:
Changes to procmail:
Worked around a bug in the Dunix 4.0e compiler (pointer addition not commutative)
1999/11/22: v3.14
Changes to procmail:
Changes to formail:
Changes to mailstat:
Changes to autoconf:
Stopped using `implicit int' (for C9x)
Cache gethostname() and uname() output
Changed the form of tempfile names to make them `more' unique and deal with filename length limits more gracefully
Updated the FAQ and the list of mirrors in the README
Documented the exact behavior of lockfile's -! option
Documented the suggested usage of -r vs -rt
2000/08/25: v3.15
Changes to procmail:
Changes to formail:
Changes to autoconf:
Documented that $\var expansions are never split on whitespace
More manpage tweaks
Worked around linkers that don't support compile-time stripping (for MacOS X)
Removed ':' and '@' from list of characters that can appear in tempfile names
Called nice() when shouldn't have
Workaround SunOS 4.x compiler again
2001/06/28: v3.20
Changes to procmail:
Changes to autoconf:
Changes to lockfile:
Documented formail's treatment of >From_ lines as continuations of the From_ line and warned of problems caused by non-RFC822 field names like 'Old-From '
Clarified procmail's treatment of $@ and $#
Fixed a man page formatting problem
Use long, not off_t, with fseek()/ftell()
Increase our paranoia: start to use strlcat()
The default MAILDIR is now configurable separately from the default rcfile location
Include an RPM spec file in the examples directory for automated builds
Include and use mkinstalldirs
Called nice() when shouldn't have (this time for sure!)
2001/06/29: v3.21
Changes to procmail:
2001/09/10: v3.22
Changes to procmail:
Some fixes to the man pages
More paranoia: start to use strlcpy()
Generate safe temp and maildir filenames when the hostname contains / or : by mapping them to \ooo
2001/09/13: v3.23pre
Changes to procmail: