自鯖で全てのメールアドレスをIMAP化して、どこでも同じメール環境を使うの巻

使うマシンが2台以上ある人は、1つのメールアカウントを複数のマシンから扱う面倒さに1度はイライラしたことがあるはず。特にPOPの場合、受信してもサーバーにメールを残す設定をしていなかったりするとあばばばばなことになってしまうなどよくある話。

IMAPを使っていても、メールの振り分けなどを利用したい場合には各クライアント側で設定をしなければならないという手間がある。サーバー側でメールの振り分けの設定をしておけば、サーバーのMTAが振り分けをしてくれるサービスが使えるようなホスティングサービスであればいいけれど、もしそのサーバーから別のサーバーへ移らなければいけない事態になったらどうすんの?とか考えると設定の移行とかめんどい。

さらに個人的な問題として、今借りてるDreamhostIMAPのコネクション数に制限があるみたいで、複数のコネクションを張ろうとすると数十秒待たされた挙句にタイムアウトする。不便なことこの上ないけど、Dreamhostから他のサーバーへ全てのWeb関係のデータを移すのは手間がかかりすぎるし、サーバーにかける費用がきっと増えることになるのでそれも頂けない。

これらの問題を解決するべく、自宅サーバーに全てのメールを集約してIMAPサーバー化するという方法を ローカルIMAPサーバの構築方法 | OSDN Magazine を読んで知ったので、実践してみた。

概要

自宅サーバーをメールサーバー化して、自分の持っているメールアドレスに対応するメールアドレスを作成する。たとえば、hoge@a.example.com, fuga@b.example.com という2つのメールアドレスを持っている場合、 hoge_a_example@example.com, fuga_b_example@example.com みたいなアカウントをそれぞれ準備してやればよい。そして、それぞれのメールアドレスから、自宅サーバーの対応するアドレスへメールを転送する設定をする。

メールの転送設定ができない場合、fetchmail を使うと能動的に自宅サーバーからメールを取得することもできるので、cronなどで定期的に取得するようにしておけばOK。

メールの振り分けをしたい場合、自宅サーバーのほうで procmail などを使って振り分けをすればよい。

メールアドレスが増えても、自宅サーバーに対応するアカウントを追加して、メールの転送設定をするだけ。メールアドレスをホスティングしているサーバーを移ることになっても、自宅サーバーへメールを転送する設定をし直すだけで簡単に移行可能。

うれしいこと

  • IMAP対応メールクライアントを使えば、クライアント側の設定なしでどこでも同じメール環境
    • IMAP だと、SquirrelMail 等の Webメーラーも簡単に設置可能。ブラウザさえあればどこでも同じメール環境
  • メールアドレスのホスティングサーバーの移行が簡単になる
  • 自宅サーバーに全てメールが蓄積されるので、結果的にメールのバックアップが行われることになる
  • メールが1箇所に集約されてるので、全メールボックスの横断的全文検索とかできそう

うれしくないこと

  • 自宅サーバーが死ぬとヤバイ
    • 一時的に元のメールサーバーにアクセスすることで回避は可能だが不便
  • メールのデータが分散するので、データ流出のリスクが増える
    • 最低限オレオレSSLくらいは使いましょうね

使うもの

設定

細かいことわすれた。

とりあえず Maildir 形式でメール保存しておくこととした。

残された問題点

IMAPにはオフラインでメールが読めないという欠点がある。そもそもメールするのにオフラインだと意味ねーだろとかいう意見もあるが、IP unreachableな場所でメールの内容だけ確認したい!というニーズもないわけではない。Thunderbirdだとオフラインで読めるようにダウンロードするとかいう設定ができるけど、オフラインで読めるようフォルダを設定したのにオフラインで読めないメールが点在したりして謎。

あとアドレス帳も全マシンで簡単に同期したいなーとか思ったけど、Thunderbirdがわりと頭よくメールアドレスを保管してくれてるのでそんな困ってもいないという。

追記

例で挙げていた 、mydomain.com は実在するので 、例に使うドメインを全て example.com に書き換えました。指摘ありがとうございます。