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(前佛)宛までどうぞ。

      "ポケットスタジオ" Copyright ©2004 Pockets Studio. Some rights reserved.