reformimeはMIMEメッセージの整形に使われます。
通常、reformimeは標準入力から RFC 2045 形式のメッセージを読み込みます。(-mオプション指定時を除く)
何のオプションも指定されないと、reformimeはMIMEメッセージの構造を出力します。 出力には"MIME参照タグ"と呼ばれるものが1行に1つ含まれます。 例えば:
この例はメッセージに2つのMIMEセクションが含まれている場合です。 最初の行は必ず "1" で、これはメッセージ全体を示します。 この例ではmultipart/mixed復号MIMEコレクションです。 "1.1" はそれに含まれる最初のMIMEセクションで、例えば text/plainです。 "1.2" は2番目のMIMEセクションで、例えば application/octet-streamです。
もし入力されたメッセージがMIME形式でなかったり、 あるいは添付がない単一のセクションの場合には、reformime はメッセージ全体を示す "1" だけを出力します:
含まれる最初のMIMEセクション自体がmultipart/alternative形式の複合MIMEである場合の reformimeの出力例を示します:
いろんな複雑さのMIMEの構造を扱えます。
配送ステータス通知MIMEメッセージ (RFC 1894) を取り扱います。 reformimeは標準入力から入力されるメッセージをRFC 1894で定義された 配送ステータス通知MIMEメッセージであると想定します。 reformimeは配送ステータス通知MIMEメッセージを解析して、 標準出力にメールアドレスのリストと対応する配送ステータスを出力します。 reformimeの出力の各行は配送ステータス、空白、電子メールアドレスになります。 出力後、終了コード0で終了します。 もし入力メッセージが配送ステータス通知メッセージでなかった場合には、 何も出力せずに終了コード1で終了します。
-dオプションと同じですが Original-Recipient:ヘッダがもしある場合、そのアドレスを出力します。
MIMEセクションの内容を展開して標準出力に出力します。 -sオプションでセクションを指定します。 もし指定されたMIMEセクションがbase64 や quoted-printable でエンコードされていた場合、 reformimeはそれを自動的にデコードします。 この場合、標準出力をリダイレクトしてファイルに格納した方がいいでしょう。
各MIMEセクションの情報を出力します。 Content-Type:ヘッダの内容、エンコーディング方法、そしてキャラクタセットが出力されます。 さらにMIMEセクションがメッセージのどこから始まってどこで終わるか (そしてヘッダを除いた実際の中身はどこから始まるのか) のバイト位置も 表示されます。
MIMEダイジェスト (multipart/digest) を生成します。
RFC 2045形式に沿うよう、メッセージを整形します。
-rオプションと同じですが 8bitエンコードされたMIMEセクションを quoted-printableエンコードに直します。
-rオプションと同じですが、 quoted-printableエンコードされたMIMEセクションを 8bitエンコードに直します。
指定されたMIMEセクションについての情報のみ出力します。 sectionはMIME参照タグです。 -sオプションは、 -eオプションを使う場合には必ず使用しなければなりません。 また、-iオプションでも使用できます。
指定されたMIMEセクションの内容をファイルに取り出します。
指定されたMIMEセクションの内容をプログラムにパイプします。
-xオプションか-Xオプションは、指定されたMIMEセクションの内容を ファイルに取り出すか、外部プログラムへパイプ経由で取り出します。 取り出すMIMEセクションは-sオプションで指定します。 もし-sオプションが指定されない場合、各セクションの内容が一度に取り出されます。 quoted-printableとbase64のエンコーディングは自動的にデコードされます。
会話的な取り出し。reformimeは各セクションのMIMEタイプを表示します。 'y' か 'Y' を入力するとMIMEセクションが取り出されます。 次のプロンプトでファイル名を指定してください。reformime はデフォルトのファイル名を表示します。 デフォルトのファイル名はMIMEヘッダから得られます。 もし得られなかった場合は、 デフォルトのファイル名はattachment1.datになります。 (もし-sオプションが指定されない場合、 次のデフォルトのファイル名は attachment2.dat… 等になります。)
自動的な取り出し。reformime は1つないし複数のファイルを自動的に取り出し、 ファイルに格納されます。 ファイル名は指定されたPREFIXに、デフォルトのファイル名を付けたものになります。 "-x" と "PREFIX" の間には空白は置かないでください。例えば:
このコマンドで各MIMEセクションは files-attachment1.dat、 files-attachment2.dat…のようなファイル名で取り出されます。 reformimeはファイル名がMIMEヘッダに指定されている場合、 それをファイル名に付けようとします。 もし妙な文字がある場合には、アンダースコアに置換されます。
-Xオプションはreformimeの最後のオプションでなければなりません。reformimeはprogを起動し、 MIMEセクションの内容をプログラムにパイプを通して送り込みます。 reformimeは環境変数 CONTENT_TYPEにMIMEタイプを格納します。 環境変数FILENAMEには想定されたデフォルトのファイル名が格納されます。 もし-sオプションが指定されない場合、 各MIMEセクションごとにプログラムが起動されます。
注: | -sオプションが指定されない場合、 reformime はメッセージ中の各MIMEセクションを取り出します。 これには、添付ファイルの前に付けられる、text/plain形式のテキスト内容のMIMEセクションも含まれます。 |
The -rオプションは次の動作を行います:
もしMime-Version:、 Content-Type:、 Content-Transfer-Encoding:の各ヘッダがなかった場合、これを追加します。
もし Content-Transfer-Encoding:ヘッダに 8bitや rawが指定されているのにもかかわらず、 7ビットデータしか含まれていない場合には、reformime はContent-Transfer-Encoding ヘッダを 7bitに修正します。
-r7 オプションは上記のほか、 8ビットデータが格納されている8bitエンコードのセクションを quoted-printableにエンコードしなおします。
-r8オプションは上記のほか、quoted-printableエンコードのセクションを (状況によりますが) 8bitにエンコードしなおします。
reformail(1), sendmail(8), mailbot(1), maildrop(1), maildropfilter(5), egrep(1), grep(1), sendmail(8).