Mac OS X leopardにmutt + fetchmail + procmail + msmtp + Gmailの環境を作る

emacs使いがmew等を使っているのがうらやましく,前からvimでメールも読み書きできたらいいなと思ってました.
なんかないかと探してて見つけたのがmuttです.vim上じゃなくターミナルだけど操作はlessを模していますし,editorをvimに設定すればvimでメールが書けます.

私はGmailを常用しているのでGmailのpopサーバからメールを受信して,Gmailsmtpサーバへrelayすることをこの記事の目的としています.

Gmailのpopサーバから受信するためには,tls(ssl)が使えるfetchmailを使用し,複数のアカウントを持っているのでメールの振り分けにはprocmailを使いました.muttはメールの送信には外部プログラムを使用するのでなんらかのMTAが必要です.sendmailpostfixやqmailなどがありますが設定が簡単なmsmtpを使いました.

fetchmailのインストールと設定

leopardなら+sslでビルドされたものが最初から入っています(ver6.3.8).

設定は$HOME/.fetchmailrcでおこないます.重要なのは,Gmailのpopサーバが正しいものかチェックすることです.次のコマンドでpopサーバの証明書を入手します.

% openssl s_client -connect smtp.gmail.com:995 -showcerts

"-----BEGIN CERTIFICATE-----"から"-----END CERTIFICATE-----"までの部分をコピーしエディタにはり付け,$HOME/.certs/gmail.pemとして保存します.

また,この証明書が正しいものかどうかを調べるためローカルの保証された証明書も必要です.Macでは/usr/share/curl/curl-ca-bundle.crtから"equifax"の部分を抽出し,$HOME/.cert/equifax.pemとして保存します.そしてc_rehashコマンドを用います(この辺りはよくわかってなく参考サイトの通りです><)

% c_rehash $HOME/.certs/
% openssl s_client -connect pop.gmail.com:995 -CApath .certs/

"+OK Gpop ready for requests〜"と応答があればSSLで通信が可能です.
以下にfetchmailの設定例を載せます.

# 共通の設定
defaults
protocol pop3
keep
no mimedecode
mda "/usr/bin/procmail -d %T"

# アカウントごとの設定
poll "pop.gmail.com"
user "foo@gmail.com"
password "****"
ssl
sslcertck
sslcertpath /Users/foobar/.certs/
is foobar here

poll "pop.gmail.com"
user "bar@gmail.com"
password "****"
ssl
sslcertck
sslcertpath /Users/foobar/.certs/
is bar here

パスワードを書いてるのでファイルパーミッションを600にし他から見られないようにします.

% chmod 600 .fetchmailrc

procmailのインストールと設定

leopardなら最初から導入済みです:)
$HOME/.procmailrcに設定を記述します.procmailは黒魔術(':0'でレシピの開始を表すなんて普通思いつかないや:p)すぎるので私自身全くわかってません.ググればいろいろなレシピがみれます.
以下に私が設定したものを載せます.
メールの量は多くないのでほとんど同じディレクトリにいれてます.メーリングリストのみ振り分けてます.

PATH=$HOME/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Maildir/
DEFAULT=$MAILDIR
LOGFILE=$MAILDIR/from-log

# foo mailing list
:0
* ^Subject:.*foo
list/foo/

# bar mailing list
:0
* ^X-ML-Name: bar
list/bar/

# foobar mailing list
:0
* ^Subject:.*foobar
list/foobar/

msmtpのインストールと設定

Macportsを使えばすんなり入ってくれます.

sudo port install msmtp

popサーバと同様認証を行う必要があります.SSL Degital Certificate Technical Support - thawteから証明書を取得できます.
解凍してthawte-roots/Thawte Server Roots/ThawtePremiumServerCA_b64.txtをコピーして$HOME/.certs/ThawtePremiumServerCA.crtに保存します.msmtpの設定は$HOME/.msmtpに記述します.
以下に私の設定ファイルを示します.

account default
host smtp.gmail.com
port 587
user foo@gmail.com
password ****
from foo@gmail.com
tls on
tls_starttls on
tls_trust_file  /Users/foo/.certs/ThawtePremiumServerCA.crt
auth on
logfile ~/.msmtp.log

またfetchmailと同様にファイルパーミッションを600に変更します.

muttのインストールと設定

これが一番手こずりました.
何を血迷ったのかソースからインストールしようと思い,1時間ほど試行錯誤を繰り返してもできず.結局Macportsなら一発で入りました.野良ビルドせずMacportsを使った方が幸せになれそうです.

sudo port install mutt

variantsに何も付けなくてもちゃんと日本語環境を作ってくれます.
muttの設定ファイルは$HOME/.muttrcがデフォルトですが.mutt/というディレクトリを作りその中にmuttrcを作ってそれを設定ファイルとした方が良いらしいです.メールアドレスの別名を保存するaliasファイルなど別名のファイルを呼び出したりすることができるからだそうです.
muttrcの設定項目は大量にあるのでマニュアルやLinux Japanで掲載されていた記事を参照してお好みの物を設定するといいと思います.
Macで使う上で必須なのは文字コードの設定で,

set charset="utf-8"	
set send_charset="utf-8"

の2つを設定するとutf8で読み書きでき,文字化けせずにすみます.
以下に私のmuttrcを載せます.

# 名前, アドレス
set realname="foo bar"
set from="foo@gmail.com"

# メールエディタ指定
set editor="vim %s"

# ヘッダの編集を可能にする
set edit_headers=yes

# 転送時のSubjectの形式を設定する
set forw_format="Fwd: %s"

# シグネチャ
set signature=~/.mutt/.signature

# メールボックス
set spoolfile="$HOME/Maildir/"
set folder="$HOME/Maildir/" #'+'が$folderのエイリアス
set mbox="+inbox" # '>'が$mboxのエイリアス
set record="+sent" # '<'が$recordのエイリアス
set postponed="+postponed" 
set mbox_type=Maildir

# インデックスとページャ画面の設定
set pager_index_lines=10
set tilde=yes

# 送信用プログラム
set sendmail="/opt/local/bin/msmtp"

# muttを抜けるときにメッセージを表示させない
set nomove

# 日本語表示/送信(utf8)
set charset="utf-8"
set send_charset="utf-8"

# 未読のOldフラグを無しにする
set mark_old=no

# Shift-gでfetchmailを呼び出す
macro index G !fetchmail\n

# カラーシンタックス
# pager
color header yellow black ^(From|Subject)
color quoted cyan black
color signature red black
color attachment blue black
color body magenta black "(ftp|http)://[^ ]+" # point out URLs
color body magenta black [-a-z_0-9.]+@[-a-z_0-9.]+  # e-mail addresses
color search black yellow  # how to hilite search patterns in the pager

# index screen
color index white black .*
color tree cyan black   # the thread tree in the index menu
color indicator black brightcyan

muttの起動と終了

ターミナルで'mutt'とタイプすればmuttが起動します.そこで'G'をタイプするとfetchmailを呼び出しpopサーバからメールを取ってきます.操作方法はlessと一緒なのでどうすればいいのか直感的にわかると思います.
'j/k'で移動し,''でメールを読みます.'m'でメールを作成したり,'o'でメールのソートができます.終了は'q'をタイプします.
これでmuttで快適なメール環境が作れました.
素敵です.

参考文献

ほとんど参考文献からコピペさせていただきました.
- Using Mutt with Gmail この記事はこのサイトをそのまま写しただけです>

  • The Mutt E-Mail Client muttマニュアルの日本語訳です.macroやhookが備わっているのでいろいろできそうです.