NAME
mimedefang - Sendmail MIME mail filter
SYNOPSIS
mimedefang prcap
mimedefang -p connection -m mx_socket_name -U user [options]
DESCRIPTION
mimedefang is a filter built around Sendmail 8.11’s milter API for mail
filters. It collects each incoming message and runs a filter on the
message. This is useful for deleting attachments which may be a
security risk on poorly-designed systems like Microsoft Windows.
mimedefang does not actually run the Perl filter; instead, it
communicates with mimedefang-multiplexor(8), which manages a pool of
persistent Perl processes. See the mimedefang-multiplexor man page for
additional information.
OPTIONS
If you invoke mimedefang with the single argument prcap, it prints
information about the version of Milter it is linked against and exits.
Otherwise, you should invoke mimedefang as shown in the second line of
the SYNOPSIS.
-U user
Runs mimedefang as user rather than root. The user argument
must match the argument to mimedefang-multiplexor’s -U option as
well.
-z spooldir
Set the spool directory to spooldir. If this option is omitted,
the spool directory defaults to /var/spool/MIMEDefang.
-p connection
The -p switch is required and specifies the milter connection
type. Typically, you should run mimedefang on the same computer
as sendmail. Therefore, you should use a UNIX-domain socket for
the connection type. The suggested value for the -p switch is
mimedefang.sock under the spool directory.
-m mx_socket_name
Specifies the socket for communicating with mimedefang-
multiplexor(8). The mx_socket_name specifies the path of the
UNIX-domain socket. See mimedefang-multiplexor(8) for details.
-b backlog
Sets the "backlog" argument to the listen(2) system call to
backlog. If this option is omitted, then the operating-system
default backlog is used.
-d The -d switch causes mimedefang not to delete the temporary
spool files it creates for incoming messages. This is for
debugging purposes only and should never be used on a production
mail server.
-r Causes mimedefang to perform a relay check before processing any
messages. It calls into a user-supplied Perl function called
filter_relay with the IP address and host name of the sending
relay. (See mimedefang-filter(5) for details.)
-H Causes mimedefang to perform a HELO check before processing any
messages. It calls into a user-supplied Perl function called
filter_helo with the IP address and host name of the sending
relay, and the HELO argument. (See mimedefang-filter(5) for
details.)
-s Causes mimedefang to perform a sender check before processing
the message body. It calls into a user-supplied Perl function
called filter_sender with the envelope address of the sender.
(See mimedefang-filter(5) for details.)
-t Causes mimedefang to perform recipient checks before processing
the message body. It calls into a user-supplied Perl function
called filter_recipient with the envelope address of each
recipient. (See mimedefang-filter(5) for details.)
-q Permits the multiplexor to queue new connections. See the
section QUEUEING REQUESTS in the mimedefang-multiplexor man
page. Note that this option and the -R option are mutually-
exclusive. If you supply -q, then -R is ignored.
-k Causes mimedefang not to delete working directories if a filter
fails. This lets you obtain the message which caused the filter
to fail and determine what went wrong. mimedefang logs the
directory containing the failed message using syslog.
-P fileName
Causes mimedefang to write its process-ID (after becoming a
daemon) to the specified file.
-R num Normally, mimedefang tempfails a new SMTP connection if there
are no free slaves. Supplying the -R num option makes
mimedefang tempfail new connections if there are fewer than num
free slaves, unless the connection is from the local host. This
allows you to favour connections from localhost so your
clientmqueue doesn’t build up. Note that supplying -R 0 is
subtly different from omitting the option; in this case,
mimedefang permits new connections from localhost to queue, but
not connections from other hosts (unless you also supply the -q
option.)
The purpose of the -R option is to reserve resources for
clientmqueue runs. Otherwise, on a very busy mail server,
clientmqueue runs can starve for a long time, leading to delays
for locally-generated or streamed mail. We recommend using a
small number for num; probably no more than 3 or 10% of the
total number of slaves (whichever is smaller.)
Note that this option and the -q option are mutually-exclusive.
If you supply -q, then -R is ignored.
-C Conserve file descriptors by opening and closing disk files more
often. (Disk files are never held open across Milter
callbacks.) While this shortens the length of time a file
descriptor is open, it also leaves more opportunities for the
open to fail. We do not recommend the use of this flag except
on very busy systems that exhibit failures due to a shortage of
file descriptors.
-T Causes mimedefang to log the run-time of the Perl filter using
syslog.
-x string
Add string as the content of the X-Scanned-By: header. If you
set string to the empty string (i.e. -x ""), then no X-Scanned-
By: header will be added.
-X Do not add an X-Scanned-By: header. Specifying -X is equivalent
to specifying -x "".
-D Do not fork into the background and become a daemon. Instead,
stay in the foreground. Useful mainly for debugging or if you
have a supervisory process managing mimedefang.
-M This option is obsolete; it is accepted for backward-
compatibility, but is ignored.
-N Normally, mimedefang sees all envelope recipients, even ones
that Sendmail knows to be invalid. If you don’t want Sendmail
to perform a milter callback for recipients it knows to be
invalid, invoke mimedefang with the -N flag. Please note that
this flag only works with Sendmail and Milter 8.14.0 and newer.
It has no effect if youre running an older version of Sendmail
or Milter.
-S facility
Specifies the syslog facility for log messages. The default is
mail. See openlog(3) for a list of valid facilities. You can
use either the short name ("mail") or long name ("LOG_MAIL") for
the facility name.
-a macro
Pass the value of the specified Sendmail macro through to the
Perl filter. You can repeat the -a option to write more macros
than the built-in defaults. Note that in addition to asking
mimedefang to pass the macro value to the filter, you must
configure Sendmail to pass the macro through to mimedefang using
the confMILTER_MACROS_ENVFROM definition in Sendmail’s m4
configuration file.
-c Strip "bare" carriage-returns (CR) characters from the message
body. A bare CR should never appear in an e-mail message.
Older versions of mimedefang used to strip them out
automatically, but now they are left in by default. The -c
option enables the older behavior.
-h Print usage information and exit.
OPERATION
When mimedefang starts, it connects to sendmail using the milter API.
(See the Sendmail 8.11 documentation.) For each incoming message,
mimedefang creates a temporary directory and saves information in the
directory. At various phases during the SMTP conversation, mimedefang
communicates with mimedefang-multiplexor to perform various operations.
mimedefang-multiplexor manages a pool of persistent Perl processes that
actually perform the mail scanning operations.
When a Perl process scans an e-mail, the temporary spool directory
contains certain files; details of the communication protocol between
mimedefang and the Perl script are in mimedefang-protocol(7).
WARNINGS
mimedefang does violence to the flow of e-mail. The Perl filter is
quite picky and assumes that MIME e-mail messages are well-formed.
While I have tried to make the script safe, I take no responsibility
for lost or mangled e-mail messages or any security holes this script
may introduce.
AUTHOR
mimedefang was written by David F. Skoll <dfs@roaringpenguin.com>. The
mimedefang home page is http://www.mimedefang.org/.
SEE ALSO
mimedefang.pl(8), mimedefang-filter(5), mimedefang-multiplexor(8),
mimedefang-protocol(7)