postfix + fetchmail + dovecot を使って、ローカルIMAPサーバを作ってみた

というわけで、前のエントリで勉強していたのはこれをやっていたわけで。

ローカルIMAPサーバの構築方法 - SourceForge.JP Magazine : オープンソースの話題満載

この記事の内容は、一つのメールアカウントに複数のPCでアクセスして、それぞれ同じ環境を維持したい場合、バックアップを作りたい場合に、(例えばISPの)メールサーバとクライアントの間に、中継と保存用のサーバを立てて、クライアントはそこにアクセスして、送受信させるというもの。


それで、この通りにやって普通に成功したのでご報告。Ubuntu 9.10のデスクトップで動きました。インストールしたものは、postfix fetchmail dovecot procmailをそれぞれapt-getしただけです。設定もそのとおりでほぼ問題ないです。
(ただし、試験運用なので、このサーバに設定したアカウント元のメールサーバにはメールを残す設定をしています。fetchmailのアカウントか、default設定にkeep(と環境によってはuidl)設定が必要。)


利用したソフトのログはmail.logやsyslogで見れます。
結果的にこちらの意図通りに動いていまして素晴らしい方法です。これ。

次の課題

さて、一つのメールアカウント(ISPのメールアカウントに対して、つまりSMTPPOP3が一つづつ)は成功しました。
結構便利で、fetchmailの間隔がこちらのタイミングで受信できたら最高だなあとかその程度ですが。
やはり次にどうできるかを考えるもので、いくつかやりたい事はあります。

  • 迷惑メール対策
  • 複数のメールアカウント(SMTPサーバが複数)を1つのサーバで利用したい場合。


迷惑メールは、S25Rの設定が出来ないかと試行錯誤していますが、そもそもISP側でやらないと意味がなさそうなものなので、ベイジアン方式が使えるはずなので後で調べるとして、
個人的に悩んでるのは後者です。
つまり、クライアントで複数のアカウントを扱うことを、ローカルのサーバに任せて、それを中継してクライアントからみたいということです。
サーバに処理(それぞれのアカウントの接続、フェッチ、迷惑メールのフィルタリング)を任せて、クライアントでは大して設定しなくてもすぐに環境復元をするという。当にGmailクラウド的なやつです。
で、いくらか頑張ってみました。fetchmailはたぶん別ドメインごと複数のアカウントを扱っても問題はなさそうですが、SMTPがどうにも上手くいかず。aliasesもtransport_mapもダメっぽいです。


では、一つのソフト、というかプロセスでやろうとするからだめで、むしろユーザごとにプロセスを起動して、ユーザ側の設定を読ませる方法ならうまく行くのではないかと思いついたので近々試してみたいと思います。
具体的にこんな感じ

  • 複数のアカウントごとにユーザを作成
  • デフォルトの起動をオフ
  • ユーザの権限で複数のpostfixを起動
  • それぞれに使うポートを変更

でやればうまく行くと思うのです。
思えばISPのメールサーバはどうやっているのか気になるもので、ISPSMTPって一つですし、それで複数のユーザを処理して、相手先に送っているわけです。ユーザごとの場所はユーザ名を作ればいいとして、MTAをどうしているのか気になっていて、こんな感じでやっていそうだなと思いついたところです。

というわけで、イレギュラーなやり方に思えたので実際にやっている方がいるのか調べてみてから試してみようかと思います。

追記:2010/04/20
えーと、複数SMTPの統合ですが、別に統合しないで用意されているサーバの設定をするだけで良かったという結論になりました。
なぜ統合すべきと考えていたかというと、送信メールの管理のために必要なのではないかと考えていたのですが、それはクライアントの話で、クライアントが送信メールの一覧をどこに保存するかをちゃんと設定すればよかったのです。

ちなみに、SourceForge.JP Magazineでも共有サーバ経由でのメールの送信については書いていません。ので、送信で使うSMTPはそのまま提供されたサーバに直接アクセス、送信すればよいということです。
(それで良いのか現在も調べている途中です。利用上の間違いでしたらコメントをもらえると嬉しいです)

継続して設定中です