Mew


僕は普段メールの読み書きに Mew を使っています。 Mew は Emacs Lisp で実装された、Emacs 上で動作する MUA です。 カスタマイズ性が非常に高いことと、RFC を厳格に守ることが特徴です。 UNIX 系技術者向きの MUA と言えるでしょう。

ここでは Mew の使い方を紹介します。

1. ソースの取得

一元配布元は

ftp://ftp.mew.org/pub/Mew/release/

です。現時点 (2003 年 9 月 2 日現在) では Mew 4.x が beta バージョンとして開発中ですが、 ここでは、release バージョンである Mew 3.3 を導入します。 上記 URL から

mew-3.3.tar.gz

を取得します。

2. コンパイル

Mew は基本的に Emacs Lisp で実装されていますが、一部、外部コマンドとして実装されている機能もあります。 このため、コンパイルが必要です。また、用意されている Emacs Lisp もバイトコンパイルした方が速いので、やはり、コンパイルの必要があります。

以下は、私の環境での作業手順です。自分の環境に合わせて、適宜、 読み替えてください。

まず、取得したソースを展開し、Makefile を編集します。

  % zcat mew-3.3.tar.gz |tar xvf -
  % cd mew-3.3
  % vi Makefile

私の場合は、Makefile のうち、以下の 3 箇所を変更します。

  1. prefix の定義

    実際にインストールされるパスを prefix で定義します。 デフォルトでは /usr/local/ 配下に展開されますが、私は /usr/local/mew-{バージョン} というディレクトリ配下にまとめることによって、 新しいバージョンがリリースされた際の切り替えをやりやすくしています。

    変更前

      prefix=/usr/local
      infodir=$(prefix)/info
    

    変更後

      prefix=/usr/local/mew-3.3
      infodir=$(prefix)/info
    

    こうしておいて、後で /usr/local/mew-3.3 に対する symbolic link として /usr/local/mew を作成します。そうすれば、各種設定ファイルは /usr/local/mew 配下を参照するように記述し、Mew のバージョンを変更したい場合は、 この symblic link を張り直せば良いというわけです。

  2. EMACS の定義

    私は XEmacs を使用しているので EMACS の定義を "emacs" から "xemacs" に変更します。Emacs 上で Mew を使う人は "emacs" のままで構いません。 ここで指定したコマンドを使って、Emacs Lisp がバイトコンパイルされます。

    変更前

      ##
      ## Compile engines
      ##
      
      EMACS = emacs
      #EMACS = xemacs
      #EMACS = mule
    

    変更後

      ##
      ## Compile engines
      ##
      
      #EMACS = emacs
      EMACS = xemacs
      #EMACS = mule
    

  3. elispdir の定義

    これは個人の好み。.emacs の load-path をどうするかによります。 私は以下のように書き換えています。

    変更前

      ##
      ## A directory where mew*.el[c] will be installed.
      ##
    
      elispdir = $(prefix)/share/emacs/site-lisp/mew
      #elispdir  = $(prefix)/lib/$(EMACS)/site-lisp
      #elispdir = $(prefix)/lib/emacs
    

    変更後

      ##
      ## A directory where mew*.el[c] will be installed.
      ##
    
      #elispdir = $(prefix)/share/emacs/site-lisp/mew
      elispdir  = $(prefix)/lib/$(EMACS)/site-lisp
      #elispdir = $(prefix)/lib/emacs
    

Makefile を編集したらコンパイルして、root になってインストールします。

  % make
  % make jinfo
  % su
  # make install
  # make install-jinfo

インストールが完了したら、以下の symbolic link を作っておきます。

  # ln -s /usr/local/mew-3.3 /usr/local/mew

3. XEmacs の設定

Mew をロードするための必要最低限の設定を ~/.xemacs/init.el に記述し (~/.emacs に XEmacs の設定を記述する場合はそちらで構いません)、 Mew に関する細かい設定は ~/.mew.el に記述します。

~/.xemacs/init.el には以下の記述を追加します。

  ;; load-path の追加
  (setq load-path (cons "/usr/local/mew/lib/xemacs/site-lisp" load-path))

  ;; info path の追加
  (setq Info-directory-list (cons "/usr/local/mew/info" Info-directory-list))

  ;; Mew のロード
  (autoload 'mew "mew" nil t)
  (autoload 'mew-read "mew" nil t)
  (autoload 'mew-send "mew" nil t)

先程 Mew をインストールしたパスを load-path に追加します。 また、Mew の日本語 info を参照できるよう Info-directory-list (XEmacs の場合) に /usr/local/mew/info を追加しておきます。

~/.xemacs/init.el を編集したら、バイトコンパイルしておきましょう。

4. Mew の設定

Mew に関する細かい設定は ~/.mew.el に記述します。 こちらも ~/.xemacs/init.el 同様、Emacs Lisp で記述します。

必要最低限の基本設定を以下に紹介します。

  ;; アイコンパスの設定
  (setq mew-icon-directory "/usr/local/mew/lib/xemacs/etc/Mew")
  
  ;; exec-path の追加 (Mew 用)
  (setq exec-path (cons "/usr/local/mew/bin" exec-path))
  
  ; From: フィールドで C-cTAB で循環的に From: の値を変化できる。
  (setq mew-from-list '("Tetsuo NAKAGAWA <nakagawa@******.co.jp>"
  		      "Tetsuo NAKAGAWA <tet@*****.jp>"))
  
  ;; SMTP
  (setq mew-smtp-server "SMTP サーバ名")
  
  ;; POP
  (setq mew-pop-server "POP サーバ名")
  (setq mew-pop-port "pop3")
  (setq mew-pop-auth 'apop)
  
  ;; "" で囲まれた base64 エンコード文字列をデコードする
  (setq mew-decode-quoted t)
  
  ;; draft モード時には自動折り返し
  (setq mew-draft-mode-hook '(lambda ()
  		(setq fill-column 60)
  		(auto-fill-mode 1)
  		(define-key mew-draft-mode-map "\C-c\C-i" 'insert-signature-eref)))
  
  ;; パスワードをキャッシュする
  (setq mew-use-cached-passwd t)
  ;; パスワードをキャッシュする時間
  (setq mew-passwd-timer-unit 60)
  
  ;; thread の表示をツリーっぽく見せる
  (setq mew-use-fancy-thread t)
  (setq mew-fancy-thread-indent-strings [" ┣" " ┗" " ┃" "  "])

まず、XEmacs なのでアイコン表示が可能です。起動画面でもネコの写真が表示されます。 それらの画像のパスを mew-icon-directory で指定してやります。

Mew が呼び出す外部コマンド (incm, mewcat, mewdecode, mewencode, mewls) が exec-path からサーチできる必要があるので、exec-path に /usr/local/mew/bin を追加します。

mew-from-list は From フィールドに入る文字列をリストで指定します。 複数のメールアドレスを切り分ける場合、このように複数のアドレスを記述しておき、 メール作成時 (draft モード) に、From フィールドの所で C-c TAB を押すと、 循環的に From フィールドが変化します。

mew-smtp-server, mew-pop-server には、それぞれ SMTP サーバ、POP3 サーバの名前を入れます。 doted decimal 形式の IP アドレス文字列でも構いません。 mew-pop-auth はデフォルトで 'apop となりますが、POP3 サーバ側が APOP に対応していない場合は、 'pop と記述すれば POP3 で通信するようになります。

Mew は POP 認証用のパスワード文字列を設定ファイルに保持することができません (セキュリティを考慮してパスワードをファイルに書かない仕様になっています)。 このため、メールを取り込む度に POP パスワードを入力する必要がありますが、 mew-use-cached-passwd を t にしておけば、一度入力したパスワードを一定時間 Mew が記憶しておいてくれるので、便利です。 パスワードを記憶しておく時間は mew-passwd-timer-unit で分単位で指定します。

5. 使い方

基本的にキーボード入力で操作しますので、キーバインドを暗記しておかないと Mew を使うのはつらいでしょう。まずは XEmacs 上から

  M-x mew

と叩いて Mew を起動します。そうすると、猫の画像が表示され、 Mew が起動します。

起動画面のスクリーンショット

基本的な使い方は、付属する info が充実しているので、 そちらを参照してください。XEmacs 上で

  M-x info

すれば、参照できる info の一覧が表示されます。 Mew の日本語版 info をインストールし、Info-directory-list にパスを追加してあれば、 info の一覧の中に Mew-J があるはずなので、それを参照してください。

以下に、基本的なキーバインドを簡単に紹介しておきます。

  • Summary モード

    w新規メールを作成する。
    iPOP サーバからメールを取り込む。
    a今参照しているメールに対するリプライを作成する。
    A今参照しているメールを引用してリプライを作成する。
    p一つ前のメッセージに移動。
    n次のメッセージに移動。
    g別のフォルダに移動。
    o今参照しているメールを別のフォルダにリファイルする。
    moマークとして '*'が付けられているメール (複数) を別のフォルダにまとめてリファイルする。
    f今参照しているメールを転送。
    Fマークとして '@' が付けられているメール (複数) をまとめて転送。
    ttスレッド表示の切り替え。

  • draft モード

    C-c C-c作成中のメールを送信。
    C-c C-q作成中のメールを破棄。
    C-c C-aマルチパートメッセージを作る。

6. カスタマイズ - Summary モードで曜日と時刻を表示する

Mew 3.x のデフォルト状態での Summary モードの表示は以下のようになっており、 左から順に、メール番号 (ファイル名に直結)、日付、差出人、Subject、が表示されます。

  3199  08/26 dev@xmesoft.co [mew-dist 23987] Re: refile problem in virtual mode  
  3200  08/26 Koga Youichiro [mew-dist 23988] Re: refile problem in virtual mode  
  3201  08/26 Kazu Yamamoto  [mew-dist 23989] Re: refile problem in virtual mode  
  3202  08/26 Koga Youichiro [mew-dist 23990] Re: refile problem in virtual mode  
  3203  08/26 Kan Sasaki <sa [mew-dist 23991] Re: unmark                       
  3204  08/27 moto kawasaki  [mew-dist 23992] Q date, time in summary mode        
  3205  08/28 INOUE Hiroyuki [mew-dist 23993] Re: Q date, time in summary mode    
  3206  08/28 moto kawasaki  [mew-dist 23994] Re: Q date, time in summary mode    
  3207 M08/29 "Takashi P.KAT [mew-dist 23995] Message of mew-input-sort-key       

しかし、仕事で使っていると、Summary モードで日付だけではなく、 時刻や曜日も表示してくれた方が便利なことが多い。

Mew 3.x では mew-scan-form によって、Summary モードのフォーマットを指定します。 つまり ~/.mew.el にて mew-scan-form を自分で定義することによって、 Summary モードのフォーマットを自由にカスタマイズすることが可能です。

私は ~/.mew.el に以下の記述を追加することで、 時刻と曜日も表示しています。

  (defun mew-scan-form-youbi ()
    (let ((s (MEW-DATE)))
      (if (>= (length s) 3) (setq s (substring s 0 3)))
      (cond 
       ((string= s "Mon") "月")
       ((string= s "Tue") "火")
       ((string= s "Wed") "水")
       ((string= s "Thu") "木")
       ((string= s "Fri") "金")
       ((string= s "Sat") "土")
       ((string= s "Sun") "日")
       (t "??"))))
  
  (setq mew-scan-form
        '(type (5 date) "(" (2 youbi) ")[" (-4 time) "] " 
               (14 from) " " t (0 subj)))

これは [mew-dist 18319] で紹介されていた方法をそのまま使わせて貰っています。 ちなみに、Summary モードのフォーマットは Mew 3.x では mew-scan-form で指定しますが、 Mew 4.x は mew-summary-form で指定するように変更されていますので、注意してください。

~/.mew.el を変更したら、バイトコンパイルし、Mew を再起動します。 Summary モードの表示内容は .mew-cache に保存されているので、 mew-scan-form を変更した後は、Summary モードで 's' を叩き、 メッセージバッファの

  Range (update):

に対して 'all' を入力して、Summary バッファの表示を再作成します。

これで、以下のように、日付、曜日、時刻、差出人、Subject、 というフォーマットになります。

  3199  08/26(火)[22:35] dev@xmesoft.co [mew-dist 23987] Re: refile problem in vir
  3200  08/26(火)[23:08] Koga Youichiro [mew-dist 23988] Re: refile problem in vir
  3201  08/26(火)[23:08] Kazu Yamamoto  [mew-dist 23989] Re: refile problem in vir
  3202  08/26(火)[23:20] Koga Youichiro [mew-dist 23990] Re: refile problem in vir
  3203  08/26(火)[23:32] Kan Sasaki <sa [mew-dist 23991] Re: unmark               
  3204  08/27(水)[15:03] moto kawasaki  [mew-dist 23992] Q date, time in summary m
  3205  08/28(木)[07:52] INOUE Hiroyuki [mew-dist 23993] Re: Q date, time in summa
  3206  08/28(木)[10:12] moto kawasaki  [mew-dist 23994] Re: Q date, time in summa
  3207 M08/29(金)[16:49] "Takashi P.KAT [mew-dist 23995] Message of mew-input-sort

7. POP over SSH / SMTP over SSH

Mew では、POP サーバや SMTP サーバとの通信を ssh でトンネリングすることが出来ます。

~/.mew.el に以下の設定を追加するだけで OK です。

  (setq mew-pop-ssh-server "POP サーバ名")
  (setq mew-smtp-ssh-server "SMTP サーバ名")

これらが設定されていると、例えば Mew 起動後、初めて POP サーバからメールを取得する際に、 メッセージバッファに

  SSH password:

と表示され、ssh の passphrase を要求されますので、入力します。 この段階で、サーバとの間に ssh によるトンネルが生成されます。

続いて、メッセージバッファに

  APOP password:

と表示され、POP パスワードを要求されますので、これも入力します。 これで、ssh のトンネル経由で POP サーバとの通信が行われます。

SMTP の場合も同様です。

当然ですが、事前に POP サーバ、SMTP サーバに対して ssh でログインできるよう、 ssh の設定をしておく必要があります。


TetsuoSTREAMS > FreeBSD > Mew