MIMEFILTER(1)

NAME
mimefilter - filter a MIME message stripping unwanted MIME parts

SYNOPSIS
mimefilter [OPTIONS]

DESCRIPTION
The mimefilter script accept on STDIN a MIME conforming message, and outputs on STDOUT a MIME conforming message.

It strips every unwanted MIME part, warning by email the original author about this, and outputs a MIME compliant cleaned message, to be further processed by a mailing list software.

You may find it useful if you don't want certain attachments on your mailing lists, or if you want to allow just the text part from multipart/alternative messages, and so on. You can easily fine tune the list of allowed MIME types to suit your particular needs, using normal Perl regexps.

OPTIONS
The mimefilter script may take just an option, in either its short or long form:

-h, --help
    Causes the script to print this very manpage and then succesfully exit.

However, the mimefilter script won't bark at you if it discovers you supplied some other options as well, it'll just politely ignore them.

ARGUMENTS
The mimefilter script cheerfully takes an unlimited number of command line arguments and happily discards them all.

FILES
The mimefilter script will look for a system wide configuration file in /etc/mimefilter.rc, and for a local, per working directory, configuration file in ./mimefilter.rc. The latter may be used to override any or all of the parameters defined by the former, thus allowing easily per mailing list customization.

Several configuration parameters are provided, the most important being the list of admissible MIME types (where Perl regexps may be used), along with the list of never to be allowed ones (so that you may even specify, e.g., 'text/.*' in the admissible types list and 'text/html' in the never to be allowed one, to allow every text part but html ones).

See the default configuration file for examples of use and further documentation.

ENVIRONMENT
The mimefilter script will look for the following environment variables:

list
    The name of the mailing list this message is intended for. Used as the return address of the warning issued to the orginal author if the message is not already clean.

    The Smartlist mailing list software will automatically pass this variable to mimefilter.

listaddr
    The address of the mailing list this message is inteded for. Used in the X-Loop field of the warning issued to the original author if the message is not already clean.

    The Smartlist mailing list software will automatically pass this variable to mimefilter.

listreq
    The administrative (owner) address of the mailing list this message is inteded for. Used in the return address of the warning issued to the original author if the message is not already clean.

    The Smartlist mailing list software will automatically pass this variable to mimefilter.

maintainer
    The email address of the maintainer of the mailing list this message is inteded for. If it is defined, it is used to send the maintainer original carbon copies of messages that have been modified by this filter -- if filter_mime_cc_maintainer is affermative, of course.

    The Smartlist mailing list software will automatically pass this variable to mimefilter.

filter_mime_cc_maintainer
    A boolean flag: if affermative (i.e., if it matches the /y/i Perl regular expression), the mimefilter script will send carbon copies of every cleaned (modified) message to the maintainer of the mailing list the message is intended for.

    Users of the Smartlist mailing list software may conveniently set this variable in rc.custom.

filter_mime
    The mimefilter script itself will pay no attention to this variable, but if you have followed what the author suggests in the RECOMMENDED USE WITH THE SMARTLIST MAILING LIST SOFTWARE section, you will need to define it affermative in rc.custom to activate this script:

            filter_mime = yes

RETURN VALUE
The mimefilter script returns 0 on success and a positive integer on errors.

RECOMMENDED USE WITH THE SMARTLIST MAILING LIST SOFTWARE
Put the following lines in rc.local.s[012]0 (the right one just depends on your specific needs, look at rc.submit for more info):

    :0
    * filter_mime ?? y
    {
            # Pass the mail trough mimefilter
            :0 fw
            | mimefilter

            # Executed if mimefilter died
            :0 e
            {
                    :0 hfw
                    | formail -A "X-Diagnostic: MIME filtering failed"

                    HOST=continue_with_rc.request
            }

            # Trash empty messages (author's already been warned by mimefilter)
            :0 Bh
            * < 1
            /dev/null
    }

Also remember to uncomment the appropriate line in rc.custom, to activate rc.local.s[012]0, and don't forget to customize the list of admissibile and never to be allowed MIME types in the configuration file(s).

USING THIS SCRIPT WITH OTHER MAILING LIST SOFTWARE
The author believes no particular arrangements are necessary to use this script with mailing list software other than Smartlist, altough one should remember that mimefilter expects to find at least the list, listaddr, and listreq environment variables set.

SEE ALSO
The Smartlist mailing list software documentation, the mimefilter.rc(5) man page (yet to be written).

BUGS
Naaa... ;-)

UNRESTRICTIONS
This program is copylefted. Refer to the GNU General Public License for conditions of use.

AUTHOR
This program has been written and is actively maintained by Davide Giovanni Maria Salvetti, <salve@linux.it>.

HISTORY
This script was originally aimed for use with a bunch of Smartlist served maling lists the author administers. He believes it can be successfully used with other mailing list softwares as well.