MHmh-eの使い方の個人的なまとめ



RMAIL(ESC x mail)から MH(mh-e) への移行

過去に RMAIL 形式で受けたメールを MH 形式に直すには、 RMAIL形式 -> unix mail形式 -> MH形式 というステップを踏む。

Mule 上で、ESC x unrmail RET と入力すると

Unrmail(rmail file): /a/ecc-fs00/export/home05/t60550/

とか出てくるので、使っていた RMAIL ファイルの名前を入力する。 (普通なら ~/RMAIL)

つぎに unix mail形式のファイルの名前を聞いてくるので たとえば ~/umail とでも入力する。

後は、kterm 上で

inc -file ~/umail

と打てば良い。

# unix mail は古いメールの MUA なので、ECC では使っている人はいないと思う。


mh-eを起動するには

  1. a. Mule 上で ESC x mh-rmail と打つ。 実際は、ESC x mh-r[TAB] と打てば補完してくれる。

  2. b. Mule 上で C-c r と打つ。

  3. c. X-Mule のツールバー File/Read mail を RMAIL から mh-e に やり直す。 ~/.emacs に次の一行を加えて xmule を立ちあげ直す。

    (substitute-key-definition 'rmail 'mh-rmail menu-bar-file-menu)


mh-eの使い方

MH はフォルダ(Folder)という仮想的なメールの受け皿を考えて、 その中にメールをしまっていくいう概念ですべてを処理します。

実際は Folder とは ~/Mail の下にある directory で、1 mail が 1 file に 対応するように格納されています。

mh-e を立ちあげると、自分宛のメールが届いていないか確かめ、存在すれば inbox という名の デフォルトのフォルダーに入れます。

その後例えば、[--]E :--%%-{+inbox} 24 msgs (1-24) (MH-Folder Show) な どとタイトルのつくバッファーができて、

     
   1  07/03 Atsushi Kurokawa   ComputownML STOP <<黒川@ComputownML管理
   3  11/13 Majordomo@plathom  Welcome to gainax-ml <<-- Welcome to the
   7  03/19 Hidetoshi Shimoka  mail.jp.freebsd.org trouble <<下川%東大
   8  03/20 eccstaff           'keizoku' accepted <<あなたが実行したkei
   9  03/29 owner-evangelion@  fml Command Status report (evangelion ML
  10  04/16 owner-evangelion@  Bad Syntax on subject in autoregistratio
  11  04/17 Nakamura Minoru    ADDRESS <<226 0980 ADDRESS t60550@hongo.
  12  04/22 To:t60481          Hellow <<はろー、大原君。 私のアドレスを
  13  05/01 'Nakamura Minoru'  Re: [Q]EVE-burst error- <<中村 実@東大電
  15  05/01 To:e951450@jks.is  From Nakamura Minoru <<中村 実だよ。 駒場
  16  05/01 e951450@jks.is.ts  Re: From Nakamura Minoru <<倉重@筑波大学
  17  05/01 e951450@jks.is.ts  Re: From Nakamura Minoru <<倉重@筑波大で
  18  05/07 Takuya Ohara       hello!! <<こんにちは、大原です。 返事が遅
  19  05/15 To:t60316          Nanpa2 Document <<中村 実です。 僕のディレ

と表示されるので、上下にカーソルを動かして見て下さい。


.mh_profile の設定

各ユーザーのホームディレクトリに存在する .mh_profile は ユーザーが MH をどのように使うのか設定するためにあります。

.mh_profile には次のような事を書きます。

     .mh_profile の内容

     ; コメントはこのように行の先頭にシャープを書いておく。
     Path: Mail
     ; これから来るメールを格納しておくディレクトリを指定。
     ; この場合 $HOME/Mail/ の下。
     Folder-protect: 700
     Msg-protect: 640
     ; メールを格納しておくディレクトリのパーミッションを指定。
     Aliasfile: aliases
     ; 文字コードの指定
     display-coding: ja_JP.jis7
     file-coding: ja_JP.jis7
     process-coding: ja_JP.jis7
     ; 書きかけのメールを格納しておくフォルダーを指定
     Draft-folder: drafts
     ; 直前に設定/仕様したシークエンスを別名で使えるようにする。 
     Rreviou-Sequencd: pseg
     ; シークエンスの前につけて、そのシークエンスに含まれないメールを
     ; 集めたシークエンスを現す
     Sequence-Negation: not
     ; 未読メールを集めたシークエンスを作る
     Unseen-Sequence: unseen
     pick: -sequence picked
     ali: -alias aliases


メールのフォルダごとに整理する

メールは通常 inbox フォルダに格納されますがある程度溜ったところで メールの内容・宛先などによって異なったフォルダを作り仕分けをすると すっきりします。


mhookによる到着したメールの自動処理

複数のメーリングリストにはいる時などたくさんのメールが来る場合、 到着するメールを仕分けしてフォルダーにしまうとうまくいきます。

  1. ~/.maildelivery に処理内容を書く。
    自分のホームディレクトリに .maildelivery というファイルを用意する。 このファイルには、自分宛のメールが届いた場そのメールをどうするかと いうことを1行1条件分岐になるようにかく。

    # from Mailing list
    x-sequence FreeBSD-users-jp | A "/usr/local/lib/mh/rcvstore +FreeBSD"
    subject [gainax-ml          | A "/usr/local/lib/mh/rcvstore +gainax"
    to "soudanin@komaba"        | A "/usr/local/lib/mh/rcvstore +soudanin"
    x-ml-name Mai               | A "/usr/local/lib/mh/rcvstore +mai"
    # all other Mails
    #default -                  | A "/usr/local/lib/mh/rcvstore +inbox"
    
    .maildelivery に書き込む処理内容は1行を単位とし 空白によって次の5つの部分に分かれる。

    <field><pattern><action><result><string>

    この5つの要素は前半の<field><pattern>と後半の<action> <result><string>に分かれている。

    新しいメールが届いた時、後述のslocalプログラムが、.maildeliveryを一行づ つ解釈していく。まず、各行の前半部分を使ってパターンマッチングを行ない、 マッチングに成功した場合は、後半部分を使い指定されたコマンドを実行。
    もし、このコマンドの実行(アクション)に成功した場合はメールに"配布済みフ ラグ"を設定する。1行の解釈が終ると次の行に移る。配布済みとみなされたメ ールも移行のマッチングの対象になるが<----------------->

  2. ~/.forward を設定する。
    .maildelivery を作っただけでは自動処理は始まりません。 メールを振り分けしてくれるプログラムに到着したメールを食わせる必要が あります。 そのためにはホームディレクトリに .forward ファイルを設定します。
    .forward
    "| /usr/local/lib/mh/slocal -user t60550"
    
    t60550の所は各人のアカウントを設定して下さい。

ドラフトフォルダーの活用

    .mh_profile 中に下の1行を追加することによって 通常は1つしか存在しない下書きメール(draft) が複数使えるようになります。

         Draft-folder: drafts
      
    上の例では +drafts フォルダをドラフト用のフォルダに指定したことになります。
    メールの下がきを一時的に中断して後で再開したい場合は、
        ESC-f drafts
       
    でドラフトフォルダに移動します。
    このフォルダに書きかけ状態の未送信メールが並んでいるので、 編集を再開したいドラフトにカーソルを合わせて、
        ESC-a
       
    を押すと編集可能となります。(単なる "." コマンドでは駄目)
    編集後 C-c C-c コマンドを使ってドラフトを送信すると、 送信を行ったメールはドラフトフォルダから自動的に削除されます。


ヘッダー部分を MIME エンコーディングしたメールを送信・受信

  1. .mh_profile の設定変更
    .mh_profile の中に次のコードを追加する。
    
    send: -hencode -alias aliases
    whom: -hencode -alias aliases
    inc:  -audit audit-file -form ~/Mail/scan.format
    scan: -form ~/Mail/scan.format
    
    
    send と whom の行に加えられた "-hencode" オプションは、 新規送信、返信用メールのヘッダー部分を MIME エンコーディング して送るように指示するためのものである。
    一方、inc と scan の行の "-form" は自分が受信したメールの ヘッダー部分の MIME をデコードして表示するための準備である。 実際には下のような記述のあるテキストファイルの保存されている パスを指定する。 (例では ~/Mail/ ディレクトリの下に scan.format というファイルを 設けるものとする。)

  2. scan のフォーマットファイル
    
    %4(msg)%<(cur)+%| %> \
    %<{replied}-%?{encrypted}E%| %>\
    %(void(year{date}))%02(modulo 100) %02(mon{date})/%02(mday{date}) \
    %<(mymbox{from})%<{to}To:%14(hdecode(friendly{to}))%>%>%<(zero)%17(hdecode(friendly{from}))%>  \
    %<{subject}%(void{subject})%(hdecode{subject})%|%<{body}%{body}%>%>