MRA の実装変更に悩んでみる。

本記事は最終更新日より 1 年以上経過しております。
スポンサーリンク

現在、自宅のサーバーで動いているメールサーバーで MTA は Postfix。
MRA *1 は Courier-IMAP を使っていたりする。

初めて構築したときの MRA は Postfix が mbox 形式で配送をしていたので
qpopper を使用していたけど、Mailbox 形式に移行した為 Courier-IMAP
という経緯となっている。

悩み所としては、Courier-IMAP だと認証デーモンと POP, IMAP のデーモンがある。
プロセスを見る限りこれだけの物が動いている。
courierlogger—authdaemond—5*[authdaemond]
2*[courierlogger—couriertcpd]
結構プロセス使ってしまっているので、なんだかなぁというのもあるし、コンパイル時に
ISO-2022 を有効化するのを忘れていた為、SquirrelMail で日本語フィルターが
使えないという弊害が出ている。

この際だから、以前構築したときに導入していた Dovecot に変えてしまおうかなと
思っている。既にソースは落としてあって「./configure –help」してコンパイルオプションを
眺めただけにとどまっている。

Dovecot は割と後発の MRA だけどセキュリティーホールが少なくセキュアな MRA との
売り文句がある。その為、頻繁な Update は目立たない。
で、こいつは Courier-IMAP や Cyrus IMAP との互換性は万全。
加えれば Postfix 2.3 以降では Dovecot の認証デーモンを用いて SMTP-AUTH を
簡単に実現できたり、START TLS も実現出来るというのもまた見所。
既存だと SMTP-AUTH + START TLS を実現するとなれば SASL + OpenSSL が
王道だったりした。勿論 Dovecot でも OpenSSL を必要とするんだけど設定が簡単。
考えている認証方法は PAM を使って PLAIN, CRAM-MD5, Digest-MD5 という感じ。
PLAIN は使いたくないんだけど某マイクロソフトの Outlook っていう MUA が PLAIN 以外
の認証に対応してねーという怠慢さから来ているので仕方がない。(CRAM-MD5 等対応するっぽいけど)

こいつを直ぐにコンパイルして設定かまして実働させるのは難なく出来るんだけど、問題が
あって、Postfix をコンパイルし直さないといけない。今のシステムはデフォルトでコンパイル
させた MTA *2 となっている為で認証系が扱えない。
コンパイル時に指定する引数として以下を与えれば OK。
-DUSE_SASL_AUTH -DDEF_SASL_SERVER=”dovecot”
実際やるならライブラリの位置も指定するんだけどね。

で、更に問題があったりで、この Dovecot の認証が使えるのは先に書いたとおり Postfix 2.3 以降。
今使っているのは 2.2 系なんだが、2.3 に以降してもちょっと設定箇所が細かくなっていた記憶があるので
細かい設定がよくわからないってのが一番でかい。
今持っている参考書は「Postfix詳解」という本でこいつは Postfix 2.3 が出る以前の物なので、
リファレンス的な事は 2.2 までの事しか書いてない。いい本があればなーなんて思うんだけど未だこれと言った
物がないので痛いところだったりするぽい。

最後の問題としては、Postfix 2.3 にしたとして上手く配送してくれないとかなりのメールがその辺のサーバーで
滞留してしまい、良きに計らってくれない MTA からの配送は破棄される。

しばし悩んで課題としておこう。

長々書いたけど要点まとめるとこんな感じ。

1. MRA を Dovecot にしようかな
2. Dovecot にすると SMTP-AUTH, TLS が楽に使えちゃうな!
3. でもそうなると Postfix 2.3 系で再度コンパイルしないといけないな
4. Postfix 2.3 で現状構成と変わりなく正常配送一発でいけるかなと心配
5. Postfix 2.3 に関する情報 (技術書) で良い物がないからメンテナンスに困る

とまぁこんな感じ。
これら全てがクリアされて実装されたら外部からうちのドメインつかったメールの送受信が
出来るようになるから、無料でアカウント発行している人にも使って貰えるかなと。

スポンサーリンク
  1. Mail Retrieval Agent = POP/IMAP サーバー []
  2. Mail Transfer Agent = メール送信サーバー []