EMailFilter is a customizable e-mail content filter
written in Python. It consists of the following
Python modules and shell scripts:
- **EMAILFILTER.PY**: the core filter logic; it allows
you to add as many Python filtering modules as you
want, and will give each filtering module a chance
to examine each e-mail message and (possibly) add
'X-' headers to record its findings.
- **EMAILFILTERD.PY**: the preferred mode of operation
for EMailFilter; it wraps EMAILFILTER.PY in a daemon
that listens on a user-specific port (currently the
port number is 5590 + the user id) and processes each e-mail
message sent to it through that port.
- **EMAILFILTERC.PY**: a command-line client program that
takes its standard input, sends it through a socket
to the daemon on the appropriate port, receives the processed
data back, and writes it to standard output. This
is *not* the preferred method of talking to the daemon;
see the ``emailfilterc`` shell script below.
- **EMAILFILTERDEFS.PY**: common definitions for all
the above modules.
- **EMAILFILTERD**: a shell script to invoke the daemon.
- **EMAILFILTERC**: a shell script to invoke the client; it
can use ``emailfilterc.py`` above if necessary, but this
is slow because it requires a new instance of the Python
interpreter to be loaded for each e-mail message (the
message comes in on standard input and the processed
message is written to standard output). The preferred
method is to use either the CFilter program (available on
SourceForge, see http://cfilter.sourceforge.net) as
the client (this is done by invoking this script with
the ``-c`` option) or the "TCP/IP swiss army knife"
netcat program (this is done by invoking the script with
either the ``-n`` option, if netcat goes by the command
name ``nc``, or the ``-t`` option if it goes by the
command name ``netcat`` -- which name it will be depends
on which specific flavor of Unix/Linux you are running).
Most e-mail clients can be set up to invoke any
desired filter program, sending it messages on standard
input and receiving processed messages on standard output;
thus, to use EMailFilter, simply tell your e-mail client
to invoke ``emailfilterc -c`` as the filter program (you
can leave out the ``-c``, but as above, filtering will be
significantly slower).
Installation
------------
To install EMailFilter, you can simply run::
$ python setup.py install
at a shell prompt from the directory into which you
unzipped the source tarball (the same directory that this
README file is in). This will install EMailFilter, and then
run each of the post-install scripts in the scripts
directory.
EMailFilter requires the PLIB Python library package,
which is available from the Python Package Index under the
name ``plib``. However, the helper module used by EMailFilter's
setup script, ``SetupHelper``, can automatically detect if
you don't have PLIB installed, and if so, it will download
and install it for you before installing EMailFilter.