procmail+formail による空白タイトルの変更方法
更新日:
[an error occurred while processing this directive]
作成日:2004/11/03
■空白タイトルの変更方法についてのメモ
procmail と formail を使って、携帯などから PC へ送信されたメールの題名(Subject:)を書き換えるフィルタの例です。Becky だと『(no subject)』として表示される箇所を任意(好きなもの)に変更できます
サーバが sendmail で procmail を使える設定であれば、そのままホームディレクトリに .procmailrc ファイルを設置します。
qmail の場合でしたら、まず、/home/ユーザ名/.qmail で procmail を使えるような記述を追加する必要があります。
| preline /usr/bin/procmail
|
(サーバのセットアップ先によっては /usr/local/bin/procmail と記述しなくてはいけなくてはいけませんね)
次に /home/ユーザ名/.procmailrc ファイルへ procmail のレシピを書き込みます。
LOGFILE=/home/ユーザ名/procmail.log
DEFAULT=/home/ユーザ名/Maildir/new
:0H fw
* !^Subject: *\/.*
| /usr/bin/formail -i "Subject: === This mail is without subject ==="
$DEFAULT
|
LOGFILE はエラー時の動作確認用です。無くてもよいです。
DEFAULT はホームディレクトリ以下、普段メール配送される場所を指定です。qmail とありましたので Maildir を想定してみました。
Subject: 〜の部分を適当に変えれば、Subject: に何も入っていない場合、任意の Subject に変更できると思います(一応、自分の環境でのテストでは動作しました)
ちなみに、日本語の文字に変換したい場合は nkf などで MIME 形式に変換(エンコード)した文字列を入れる必要があります。
変換するには nkf(ネットワーク漢字フィルタ)などを使います。たとえば、subject.txt というファイルに
と記述しておくと、nkf でコマンドを実行して変換出来ます。
$ nkf -M ./subject.txt
=?ISO-2022-JP?B?GyRCNnVHciROJT8lJCVIJWskRyQ5GyhC?=
|
=?ISO〜と出ている部分が変換されたものです。
あとは .procmailrc には以下のように書き換えて完了となります。
| /usr/bin/formail -i "Subject: =?ISO-2022-JP?B?GyRCNnVHciROJT8lJCVIJWskRyQ5GyhC?="
|
このあたりは以下の URL が参考になると思います。
メールにかけられた呪文「MIME〜前編」(@IT)
http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
以上簡単ですが参考になれば幸いです。もっと良い方法があるよ!とか、こうしたほうが良いんじゃない?とかいう意見もありましたら、お気軽にお寄せ下さい。送り先は zem@pocketstuido.jp(前佛)宛までどうぞ。