1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
maildrop - mail delivery agent with filtering abilities
Current development version is 0.75, stable version is 0.74.
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:
The STABLE version of maildrop:
maildrop-0.74.tar.gz - the source code tarball.
maildrop-0.74-1.src.rpm - the distribution source code in the RPM
format. To build a binary RPM run the command rpm --rebuild
maildrop-0.74-1.src.rpm.
maildrop-0.74-1.i386.rpm - pre-built binary RPM for Red Hat Linux.
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).
________________________________________________________
The DEVELOPMENT version of maildrop:
maildrop-0.75.tar.gz
maildrop-0.75-1.src.rpm
maildrop-0.75-1.i386.rpm
The RPMs are signed with my GnuPG key:
http://www.geocities.com/SiliconValley/Peaks/5799/GPGKEY.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.
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 (including development versions)
* V0.75 - new installation layout - will install into
/usr/local/lib/maildrop/minor fixes to configuration scripts.
Minor typos in userdb. Bug fix: exception statement will now trap
maildir quota errors. AIX fixes.
* V0.74- fix compilation errors for SuSE 6.0. Qmail bug fix. userdb
update.
* V0.73 - bug fix in getaddr()/hasaddr() functions, and reformail -r
option.
* V0.72 - reformime enhancement/update. Maildir support update.
* V0.71 - a maintenance release. Patches for AIX and AFS support.
Updates to documentation. Internal cleanup of the source code
directory layout, which will allow me to include maildrop as parts
of other projects. Fixed a bug in the reformime utility.
* V0.70 - option to enable soft enforcement of maildir quotas, see
README.maildirquota in the maildir subdirectory. Virtual account
support. Renamed makegdbm to makedat. Removed installation option
to gzip manual pages -- too messy. Let target platform
packagers/porters worry about it. to and cc commands that pipe the
message to an external process will now set the EXITCODE variable
to the exit code of the external process. External processes that
terminate with a non-zero exit code will NOT automatically cause
maildrop to terminate with the exit code of 75. The exit code will
be saved in the EXITCODE variable. If the delivery command was to,
maildrop simply terminates with the same exit code. If the
delivery command was cc, maildrop continues after initializing
EXITCODE.
* V0.65 - option to compile Berkeley DB library, instead of GDBM.
Added the import keyword. Some cleanup of HTML documentation.
* V0.64 - reformime fix - handle systems with broken pipe fseeks
semantics. rfc822 library sync. Standardized names of some legacy
.h files. Red Hat RPMs changed to install a tiny sh/bash/csh login
script (from maildroptips) to purge $HOME/.tmp. makegdbm can now
read from standard input. Some obscure fixes to rfc822 functions.
Moved reformime to rfc2045 subpackage - it belongs there, and can
be shared by other projects.
* V0.63 - maintenance. Minor enhancements and bug fixes to the
reformime utility. reformime can now convert 8-bit messages to or
from quoted-printable encoding. reformime can now also add missing
MIME headers to a message.
* 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.
|