FIX-MIME-CHARSET(1)

NAME
fix-mime-charset - fix incorrect charset specifications in MIME messages

SYNOPSIS
fix-mime-charset [-BfLm?V] [-c charset] [-I charset,...] [-l language] [-O charset,...] [--break-signature] [--charset=charset] [--force-override] [--ignore-charsets=charset,...] [--lang=language] [--mailbox] [--only-charsets=charset,...] [--show-langs] [--help] [--usage] [--version] [file...]

DESCRIPTION
In non-English mailing lists (particularly in Russian) there is a big problem with messages, where charset parameter of Content-Type header is set incorrectly. Sometimes software is buggy, sometimes people cannot set up their software properly, sometimes web-based email clients do not implement charsets. While reading such a mail, one should manually switch encoding in MUA back and forth. Incorrectly encoded or plain 8-bit Subject field is another big problem. Such fields often get corrupted while passing e-mail gateways.

This program can be used to solve these problems while used as mail filter (in MTA, procmail(1) or similar program). It tries to detect correct charset automatically (currently only Russian language KOI8-R, Windows-1251 and UTF-8 charsets are detected) and fixes Content-Type and Subject headers of the message or message subpart. fix-mime-charset interprets multipart messages correctly and processes text/plain subparts only. Attachments, other headers and body of the message are not touched. fix-mime-charset correctly interprets quoted-printable and base64 transfer-encodings. Program is written to be very fast and use minimal amount of memory.

When no files are given in command line, the program reads input from stdin. When several files are given, they are concatenated in the order of appearance.

OPTIONS

-B, --break-signature
    Enable fixing charset information in multipart/signed messages. Modication of Content-Type field in this case will result in broken signature. You may enable this option if you prefer readable text to verifyable signatures. In any case fix-mime-charset will not modify the message if everything is correct.

    By default, multipart/signed messages are leaved untouched.

-c, --charset=charset
    Charset to be used when it cannot be determined automatically. By default, in this case Content-Type field is leaved untouched. If Content-Type field is absent, charset given in this option is used (us-ascii by default). This behavior may be overriden by -f switch.

-f, --force-override
    Always override charset of Content-Type field. By default, Content-Type field is leaved untouched if charset cannot be determined automatically. When this option is used, charset given by -c option overrides Content-Type field.

-I, --ignore-charsets=charset,...
    Ignore messages with given charsets. us-ascii charset is assumed when charset is not set in Content-Type field. Charsets in list may be separated by space, comma, colon or semicolon. This option can be repeated several times and lists are joined in this case.

-l, --lang=language
    Set language for autodetection. language is two-letter ISO 639:1989 language code. fix-mime-charset -L gives list of all available languages and language codes.

    Default language is "ru" (Russian).

-L, --show-langs
    Gives list of all available languages and language codes.

-m, --mailbox
    Process input as Unix mailbox ("From " lines are used as message delimiters). Without this option, input is considered to be an individual message and messages should be passed to the filter one-by-one.

-O, --only-charsets=charset,...
    Process messages with given charsets only. us-ascii charset is assumed when charset is not set in Content-Type field. Charsets in list may be separated by space, comma, colon or semicolon. This option can be repeated several times and lists are joined in this case.

-?, --help
    Print help message and exit.

--usage
    Give a short usage message and exit.

-V, --version
    Print version information and exit.

USAGE WITH PROCMAIL
Some people asked me for examples of using fix-mime-charset with procmail(1). It is very easy - simply insert the following rule into .procmailrc:

  :0 f
  | fix-mime-charset

Filtering rule is non-delivering in terms of procmail(1) and filtered mail will be transferred to following rules.

It is equally easy to filter limited subset of messages:

  :0
  * <your filter here>
    {
    :0 f
    | fix-mime-charset

    <delivering rules here>
    }

AUTHOR
Dmitry E. Melamud <balu@migdal.ru>

COPYRIGHT
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

SEE ALSO
procmail(1)