maildrop - mail delivery agent with filtering abilities
Current version is 0.62
Copyright 1998-1999, Double Precision Inc.
This program is distributed under the terms of the GNU General Public License.
See COPYING for additional information.
Where to find maildrop
Join the maildrop mailing list - http://maildropl.listbot.com.
I've started a list of "tips and tricks" for
writing mail filters with maildrop.
The HTML version of the maildrop README is located at
http://www.flounder.net/~mrsam/maildrop/. Although the following
files may also be found there, please check your favorite archive for any
local copies:
maildrop-0.62.tar.gz -
the source code tarball.
maildrop-0.62-1.src.rpm
- the distribution source code in the RPM format. To build a binary RPM
run the command rpm --rebuild maildrop-0.62-1.src.rpm.
maildrop-0.62-1.i386.rpm -
pre-built binary RPM for Red Hat 5.1 i386. Please note that the binary RPM's
configuration includes the --enable-restrict-trusted=0 flag: a
relaxed security level which allows all users to use the -d option to
maildrop. Maildrop's default, strict, security model may result
in sendmail temporarily deferring local mail (it will be eventually
delivered). See INSTALL for more
information. If your system does not require relaxed security, you may rebuild
the source RPM (after making the appropriate adjustment to the .spec
file).
Previous version of maildrop:
maildrop-0.60.tar.gz
maildrop-0.60-1.src.rpm
maildrop-0.60-1.i386.rpm
|
The RPMs are signed with my PGP key: http://www.geocities.com/SiliconValley/Peaks/5799/PGPKEY.txt.
maildrop includes documentation in HTML, as well as traditional man
pages. The HTML versions may also be found at http://www.flounder.net/~mrsam/maildrop/maildrop.html.
Introduction
maildrop is a replacement for your local mail delivery agent.
maildrop reads a mail message from standard input, then delivers the
message to your mailbox. maildrop knows how to deliver mail to
mbox-style mailboxes, and maildirs. "maildir" is a mailbox format used by the
Qmail MTA.
maildrop will optionally read instructions from a file, which describes
how to filter incoming mail. Instructions can be provided having mail
delivered to alternate mailboxes, or forwarded somewhere else. Unlike
procmail, maildrop uses a structured filtering language.
maildrop is written in C++, and is significantly larger than procmail
in compiled form. However, it uses resources much more efficiently. Unlike
procmail, maildrop will not read a 10 megabyte mail message into
memory. Large messages are saved in a temporary file, and are filtered from
the temporary file. Temporary files are saved in the user's home directory. If
the standard input to maildrop is a file, and not a pipe, a temporary
file will not be necessary.
maildrop checks the syntax of the mail delivery instructions the filter
file, before attempting to deliver a message. Unlike procmail, if the filter
file contains syntax errors, maildrop terminates without delivering the
message. The user can fix the typo without causing any mail to be lost.
maildrop uses the GNU autoconf configure script.
Installation
See INSTALL for installation information.
If you are using an RPM-based Linux distribution, you can install the binary
RPM (see above), or rebuild the source RPM.
Using maildrop with sendmail
Maildrop can be easily used as sendmail's local delivery agent, instead of
procmail. Here is the suggested entry for sendmail.cf, courtesy of Eric J.
Schwertfeger <ejs@bfd.com>:
Mlocal, P=/usr/local/bin/maildrop, F=lsAw5:/|@SPfhn, S=10/30, R=20/40,
T=DNS/RFC822/X-Unix,
A=maildrop -d $u
You may also consider including the D, F, and M flags as well.
Revision history
-
V0.62 - array out of bounds bug fix in rfc822.c. Some additional options to
configure to specify various directories. Option to configure to use
/usr/local/etc instead of /etc.
V0.61(prerelease) - rfc822 library sync. Added reformime standalone utility.
Added support for GDBM database files. Because GDBM support adds significant
amount of code to maildrop, GDBM support can be optionally disabled during
installation. Added the time function. Changed how maildrop automatically
converts results of floating point mathematical operation back into text -
should not affect any existing filters.
.
V0.60 - no changes to the main maildrop code from version 0.55c, except for
cosmetic changes to some shared modules in order to accomodate the new
reformime utility. The main maildrop code appears to be stable. Edited the
documentation, and changed the flags that the RPM is built with. NEW:
Experimental set of MIME functions, which are implemented as a separate
program for now. The reformime program can be used to decode the MIME
structure of a message, and extract different parts of it. At some point
later, this functionality will be added as native functions in the maildrop
filtering language. See reformime.html
for more information.
-
V0.55c - BUG FIX: maildrop would botch the situation where it had problems
creating or writing to a temporary file. Fixed error handling so this
condition correctly results in deferred mail. Added some sendmail-related
notes to INSTALL. Added additional punctuation characters recognized
by the escape() function. The chance that this would break existing scripts is
very remote, but possible, however the additional escaped punctuation would
allow the function to be used to hack-proof shell commands.
-
V0.55b - enhancement: an optional parameter to configure,
--enable-syslog, which will enable logging of fatal errors to syslog.
sendmail discards standard error, making diagnosis of maildrop problems
difficult. An optional switch to configure will have maildrop log all fatal
error to syslog. Fixed core dump if reformail is given an invalid
switch: '-f'.
-
V0.55a - fixed some miscellaneous glitches in the configuration script. Fixed
potential security problem on some platform with reformail incorrectly being
installed with setuid privileges. Only cosmetic changes to the main maildrop
program: made some error messages more descriptive; maildrop will now attempt
to create a process group upon startup and upon termination maildrop will send
a SIGHUP signal to its process group, hopefully terminating any child
processes. No bug fixes are known, or have been reported.
-
V0.55 - added HOSTNAME and FROM environment variables. Added
-f option. Added support for /etc/maildroprcs - see
maildrop(1). Fixed obscure bug that can trash a file descriptor.
-
V0.54b - Changed auto-configuration logic for enabling dotlocks. If the
configure script detects that the system mailbox directly does NOT have the
sticky bit set, dot-locks are disabled by default.
--enable-use-dotlock option to configure can override that. Added
--enable-keep-fromline option to preserve the original From_ line address of
messages. Note that the default value of this option may change maildrop's
behavior from previous versions. See INSTALL for additional information.
Documented some additional options to configure that were actually implemented
in a previous version. Fixed error in select() logic that may cause the
backtick command to fail in some situations.
-
V0.54a - miscellaneous fixes. Changed the hasaddr() function to look at
Resent-To: and Resent-Cc: headers. Default SHELL to
/bin/sh if the shell is not specified in /etc/passwd.
FreeBSD does not support lockf() on /dev/null -
lockf() will no longer cause a fatal error if it fails on a character
or a block special file. Fixed bug in configure script regarding failed
initialization of --enable-restrict-trusted flag.
-
V0.54 - edited the documentation. Added support for VPATH builds using
automake - suggested by Harlan Stenn <Harlan.Stenn@pfcs.com>.
Major rework of the configuration code. Changed all #define-s in
config.h to use the configure script.
-
V0.51c - Fixed the subtraction operator bug. Added sendmail documentation.
-
V0.51b - Fixed compilation error for BSD. Fixed spurious "invalid directory
permission" error if $HOME/.mailfilters does not exist in special
embedded mode - maildrop will simply indicate quiet acceptance.
-
V0.51 - ported to RedHat 5.1, added /etc/maildroprc global filter
file.
-
V0.50 - first public release.