from 和ジオ

Fedora CORE (2) + emacs + Wanderlust で IMAPを読む

Linux 環境構築

Fedora CORE (2) + emacs + Wanderlust で IMAPを読む

Fedora CORE (2) + postfix + dovecot + fetchmail で メール処理用IMAPサーバを作る で、ローカルIMAPサーバを作ったので、メールボックスの同期を考えずに 思う存分いろいろなクライアントからメールを楽しむことができるようになりました。

Linux のメールクライアントとして、emacs + Mew を利用していましたが、 どうも IMAP フォルダの扱いが特殊で、ソート等ができないようです。 そこで、調べたところ Wanderlust という emacs lisp がありました。 メール/ニュース管理システムで、メールボックスIMAPフォルダもばっちり対応でした。

日本語(作者さんが日本人)も対応しているので、こちらを使って IMAP フォルダを読んでみます。

Wanderlustを使っているスクリーンショット

Wanderlust のインストール

Wanderlust は、Fedora CORE の標準パッケージとして用意されているので これをインストールします。

# yum install wl

ユーザホームの .emacs に Wanderlust の起動設定をします。

$ vi ‾/.emacs
;;Wanderlust
(load "mime-setup")
(autoload 'wl "wl" "Wanderlust" t)
(autoload 'wl-draft "wl" "Write draft with Wanderlust." t)

これで、emacs 起動後に、 ESC + x wl とするか、

emacs -f wl

とすると、Wanderlust が起動します。

IMAP フォルダの設定

Wanderlust に対して IMAPフォルダを設定します。 ‾/.wl と ‾/.folders 設定ファイルを作成します。

‾/.wl が Wanderlust 全体に関わる設定で、 ‾/.folders が購読する フォルダの設定です。

.wl で、メール送信に使う SMTP とデフォルトで使う IMAP サーバと、 いくつかのオプションを設定しました。 IMAP サーバを複数購読する 場合は、 ここで設定せずに ‾/.folders の方で設定すると良いです。

$ vi ‾/.wl
;; SMTP設定
(setq wl-smtp-posting-server "[SMTPサーバ名]")
(setq smtp-local-domain "[SMTPサーバ名]")

;; デフォルトIMAP設定
(setq elmo-imap4-default-server "[IMAPサーバ名]")
(setq elmo-imap4-default-user "[IMAPユーザ名]")
;; パスワードは暗号化しない
(setq elmo-imap4-default-authenticate-type 'clear)

;; 送信メール設定
(setq wl-from "[表示文字列] <[メールアドレス]>")
(setq wl-message-id-domain "[メールアドレスドメイン]")
;; Message-ID を from 名から作成する
(setq wl-message-id-use-wl-from t)
;; メッセージを送信する前に確認をする
(setq wl-interactive-send t)

;; 漢字 IMAPフォルダ名称を使う
(setq elmo-imap4-use-modified-utf7 t)

;; 最初にみにいくIMAPフォルダ名称
(setq wl-default-folder "%inbox")
;; ゴミ箱IMAPフォルダ名称
(setq wl-trash-folder "%Trash")
;; 送信済みIMAPフォルダ名称
(setq wl-fcc "%Sent")

;; 画面を普通のメーラみたいな 3ペインに
(setq wl-stay-folder-window t)
;; メールを書くときはフル画面にする
(setq wl-draft-reply-buffer-style 'full)
;; 送信済みIMAPフォルダは送信と同時に既読に
(setq wl-fcc-force-as-read t)
;; メール送信するときに自分を含めない
(setq wl-draft-always-delete-myself t)

IMAPフォルダを設定するときは、フォルダ名称に「%」を前置します。 フォルダ名称は Mozilla Thunderbird のデフォルトにあわせました。 次に、 ‾/.folders に購読する IMAPフォルダを設定します。

$ vi ‾/.folders
#
# Folder definition file
# This file is generated automatically by Wanderlust/2.10.1 (Watching The Wheels).
#
# If you edit this file by hand, be sure that comment lines
# will be washed out by wl-fldmgr.
#

%inbox  "Inbox"
%Sent   "送信済み"
%Trash  "ごみ箱"
%Junk   "迷惑メール"
[疑似フォルダ名称1] {
    %Amazon                 "Amazon"
    %Fedora                 "Fedora Mailinglist"
    %Justsystem             "Justsystem"
    %Sony                   "Playstation.com"
    %大事                   "大事"
    %その他                 "その他"
}

[疑似フォルダ名称2] {
    %EnglishPaper           "英字新聞"
    %mag2                   "まぐまぐ"
    %ASCII                  "ASCII24"
    %モスバーガ             "モスバーガ"
    %ハーゲンダッツ         "ハーゲンダッツ"
    %WindowCE               "Windows CE FAN"
}
+draft  "ドラフト"

# petname definition (access group, folder in access group)

「%」を前置したフォルダが IMAPフォルダの実体名称です。 フォルダの隣に "[名称]"をつけ分かりやすくすることができます。

このIMAPフォルダの記述は、‾/.wl で設定した、elmo-imap4-default-server を使って IMAPアクセスされます。フォルダ名称に : で続けて、

%[フォルダ名称]:[ユーザ名]/clear@ [サーバ名]

とすると、elmo-imap4-default-server の設定を使わずに、 [サーバ名]に[ユーザ名]でIMAPにアクセスすることができます。

また、[疑似フォルダ名称1] { [フォルダ]. } の記述を使うことにより、 Wanderlustの中だけのフォルダを使うことができ、各IMAPフォルダ等を まとめることができます。

「+」を前置したフォルダはローカルフォルダです。書きかけフォルダの +draft を設定しています。(ドラフトを IMAPフォルダに割り当てる ことはできないようです。最新バージョンで可能となりました。 Fedora CORE 2 のパッケージではできません。)

.floders で適当な下書きフォルダを IMAP に設定し、

%Drafts         "下書き"

.wl で次のようにすれば OK です。

(setq wl-draft-folder "%Drafts")

その他の設定

その他の便利設定です。内容はコメント中に。

$ vi ‾/.wl
;; サマリ表示で「宛先」を表示するフォルダの設定(送信フォルダ)
(setq wl-summary-showto-folder-regexp "Sent")

;; じゃまなので表示させないメールヘッダ
(setq wl-message-ignored-field-list
'(".*Received:" ".*Path:" ".*Id:" "^References:"
"^Replied:" "^Errors-To:"
"^Lines:" "^Sender:" ".*Host:" "^Xref:"
"^Content-Type:" "^Precedence:"
"^Status:" "^X-.*:"
"^Content-.*:" "^MIME-Version:"
"^Delivered-To:"
)
)

;; 逆に見たいメールヘッダ
(setq wl-message-visible-field-list
'("X-Mailer.*:"
"^X-Spam-Stat:"
)
)

;; メッセージ振り分けで使うヘッダを追加
(setq elmo-msgdb-extra-fields
    '("X-Spam-Stat"
    )
)
;; ヘッダを使ったメール振り分け
(setq wl-refile-rule-alist
    '(("X-Spam-Stat"
            ("Yes" . "%Junk")
        ))
)

;; 大きいメッセージを送信時に分割しない
(setq mime-edit-split-message nil)

;; 短い user-agent を使う
(setq wl-generate-mailer-string-function
    'wl-generate-user-agent-string-1)

;; 着信通知
(setq wl-biff-check-folder-list '("%inbox"))

;; サマリの表示形式。スレッド表示をデフォルト抑制する
(setq wl-summary-default-view 'sequence)

サマリの表示形式でスレッド表示しない変数を見つけるのが 大変でした。 (参考にさせて頂いたページ:ゴミ箱の中の技術メモ) (Wanderlust・デフォルト・スレッド・表示・したくない・抑止・抑制・行わない・させない)

Message-ID とか関係なしに返信返信で送る人が 結構多いのでスレッドツリーにしていると何がなにやら。 ということで、デフォルトOFFとしました。 (メーリングリストをみるには便利なのですが..)

あと、これらの設定を行った後、キャッシュで設定が残ってしまい 反映されないことがあるようなので、その際は

rm -Rf ‾/.elmo/

でいったん設定を飛ばすと良いようです。(変なものまで飛んだら ごめんなさい。最初はリネームくらいでやってみてください)

使ってみる

ということで、コンソール上でも IMAP が使えるようになりました。ありがたや。

Wanderlustを使っているスクリーンショット

WindowsCE (Telios HC-AJ1) から teraterm で Linux に接続している図です。 CE は画面の表示しか受け持たなくてすむので速度的にも非常に快適です。 Telios まだ使っている人いるのかな。。名機だと思います。PCを起動していない ときは、こちらでメールを見ています。

teliosでWanderlustを使っているスクリーンショット

Wanderlust は日本語ドキュメント も整備されていますし、非常に使いやすいです。

それでは、よいメールライフをお楽しみください。(おなじオチ)