MailFront

SMTP Front Ends

Plugin: patterns


This module provides an ability for rejecting messages based on simple patterns in their content.

Configuration

$PATTERNS
If set, the named file is loaded and parsed (see below), and pattern matching is enabled.
$PATTERNS_LINEMAX
Line buffer size (defaults to 256)
$PATTERNS_RESP
Response message to give when a pattern is matched (defaults to "This message contains prohibited content")

Sender Action

None

Recipient Action

None

Data Action

Each line of the data sent from the client is loaded into a line buffer (with a maximum size as above) and then scanned against the patterns listed in the configuration file. If any pattern matches, the message is rejected.

Patterns File Format

The patterns file contains a list of standard glob-style patterns. Each line of the file starts with a control character, which is not part of the pattern itself:

#
Comment line, ignored.
=
Sets the response text given when a message is rejected. All following patterns use this response until the next response line. Including this in the patterns file overrides the value of $PATTERNS_RESP.
:
The pattern will be applied only in the header.
\
The pattern will be applied only after a blank line.
Anything else
A normal pattern, applied to any non-blank line.

The following patterns list is a much simplified version of Russell Nelson's qmail-smtpd virus scan patch. In particular, it doesn't actually do any kind of checking if the blank line really marked a MIME boundary or not.

=We don't accept email with executable content (#5.3.4)
\TVqQAAMAA*
\TVpQAAIAA*
\TVpAALQAc*
\TVpyAXkAX*
\TVrmAU4AA*
\TVrhARwAk*
\TVoFAQUAA*
\TVoAAAQAA*
\TVoIARMAA*
\TVouARsAA*
\TVrQAT8AA*
\TVoAAAEAAA*