これまでメールはGmailやGoogle Apps(最近はGoogle Apps for Workに変わったんでしたけ)を公私ともに使用しているため、ほとんどGmailのインターフェースで使用していたのですが、ローカルなメール環境に関しては結構模索を行っていました。Mozilla Thunderbirdなども使うことはあったのですが、結構重いのが欠点でした。
個人的には以下のような要件を満たす必要があります。
- 大量のメール(数百件/日)を処理できること。全て深く読むわけではないですが、ML内のメールを高速に走査できることが重要。
- 一般的なプレーンテキストのメールを処理し送信できる機能(詳細後述)
- MacとLinuxを中心に使っている関係上、これらのプラットフォームをサポートしていること。(Microsoft Outlookが絶対に候補に上がらないのはこの理由の他にも過去の苦い経験もあります。上記1番の使用に耐えうるものでもないですし……。
- OpenPGPをサポートすること
- 複数アカウントをサポートすること(個人・仕事)
基本的には3番目のポイントで選択がかなり狭まりました。それで考えたのは、どうせマルチプラットフォームでEmacsを毎日のように使っているんだからこれで内蔵のものを使っちゃおうということでした。
「こうして越前康介はGnusを手に入れた」
ということ(?)で、個人的にはGnusを使う利点としては以下のようなものでした。
- 上記の要項を全て満たした。
- テキスト編集はテキストエディタである関係上、非常に強力な機能を備えている。
- 隠し事が少ない分、細かい部分まで制御できる。(反対にいうとそれだけ操作性が粗い、ってことですが。)
- それなりにEmacs Lispをいじったことがあるのでそこそこの改良を加えることができる。
- Org-modeと連携できる!(リンク設定などが可能。)
今回の検討で考慮に入れなかったのは以下の通り:
- 検索能力……どうせGmail系なんだから、餅は餅屋に任せるやりかた。結局はある程度の自動タグのほかはフラットに時系列に行っているので数週間前のメールは検索に頼った方が速いので。反対にいうと一覧表示で見つからないほど古いメールは古すぎて役に立たないか、それ以降一度もタッチしないことがほとんどなので、その管理に労力は使ってません。一応残してはいますが。
- 通知機能……スマフォやスマートウォッチが知らせてくれるので使ってません。一応Gnus内でこれを設定することは可能のようですがあまり意味はなさそうなのでやってません。
- リッチテキスト編集機能……HTMLやリッチテキストを送ることはないので。自分をよく知っている人ならわかるかも知れませんが、このようなマークアップでのメールは基本的に送信しません。あっても時々シンプルなマークダウンを行うぐらい。自分からのHTMLメールが届いた、という人はそれはほぼ100%、Gmail for Androidがそのように送信してしまったからです。あのアプリ、プレーンテキストしか送れないくせにHTMLメールで送信するんですよね。閲覧はブラウザを通してすることは可能です。普通はHTMLメールは互換形式としてプレーンテキストとしてついてくるので、それを閲覧しますが、プレーンテキスト版がついてくるので時々行儀が悪い(もしくは設定が不完全)なメーラーがHTMLだけで送ってくることがあります。ちなみにそういうメールは無視されるか、良くても閲覧順の最後尾に容赦なく持っていきます。
なので、上記のような機能に興味がある人は多分この記事は面白くないので、さっさとご退場をおすすめします。
さて、複数のGmail/Google Appsのアカウントを使用しているため、SMTPの使い分けが必要になってきます。この実現にはemacs 30 Day Challengeのusing ‘gnus’ to read mailという記事が参考になりました。ここでは自動的にSMTPアカウントを切り替える方法が書かれていますが、送信の規則性が非常に複雑なこともあり、ここは手動処理の余地を個人的には残しています。つまり、X-Message-SMTP-MethodやFromの変更をする方式になっています。このサイトに含まれるコードは誤って存在しないアカウントなどからメールを送信しないような対策として使用しています。この設定は以下のような感じです。
(defun gnus-set-mail ()
(interactive)
(message-goto-from)
(kill-whole-line)
(insert "X-Message-SMTP-Method: smtp smtp.googlemail.com 587 example@gmail.com.com\nFrom: Example \n\n")
(message-goto-body)
)
ちなみに、KDEを使っていますが、Ctrl-Alt-TはUnityみたいにターミナルを起動する設定になっていますので、Gnusでのスレッド表示切り替えはC-M-tからC-c C-tに置き換えています。ちなみにこの設定は簡単……。
(define-key gnus-summary-mode-map "\C-c\C-t" 'gnus-summary-toggle-threads)
GnusにはMMLという書式が組み込まれているため、MIME構造を柔軟にいじることができます。例えばMIMEパートを自由に入れたりといったようなことが可能ですが、基本的には添付ファイルの扱いを細かく制御するために使っています。
{{ figure src=“images/gnus-crazy1.png”, “MIMEパートを設定してみる” }}
とりあえずはうまく動いていますが、今後は必要に応じて細かい挙動をカスタマイズしていく予定。