sendmail と dovecot による仮想ユーザーの実現

2010/07/01
★★★★

CentOS 5.4 のデフォルトの MTA である sendmail、デフォルトの MRA である dovecot を使用した仮想ユーザーメールサーバー構築について考える。

ここで述べる仮想ユーザーとは、Linux のユーザー (/etc/passwd) を新規に作らず、発行されたメールアカウントを指すものとする。

sendmail で仮想ユーザーを実現するには、"Cyrus SASL" を利用する。"Cyrus SASL" は、sendmail で、SMTP 認証を実現するために利用するもの。SMTP 認証を行わないのであれば、MTA からユーザー情報にアクセスする必要がなく、もちろん仮想ユーザー情報も意味をなさなくなるため、MTA で仮想ユーザーを利用することは、SMTP 認証を行うことと同義である。

CentOS 5.4 の sendmail では、"Cyrus SASL library, version 2" がサポートされている。

Cyrus SASL の "auxprop_plugin(Auxiliary Property Plugin)" 属性により、SMTP 認証に利用するユーザー情報 ( ユーザー名、パスワード ) の格納先を任意に変更できる。デフォルトでは、"Berkeley DB" 形式のデータベース: /etc/sasldb2 ファイルがユーザー情報リソースとして扱われる。その他、SQL サーバー、LDAP サーバーをユーザー情報の格納先として利用できる。(cf. Options for Cyrus SASL)

大規模構成であれば、ユーザーアカウントの一元管理を兼ねてユーザー情報を SQL サーバー、LDAP サーバーに格納することが望ましいが、SOHO、スモールオフィス等の小中規模構成では、SQL サーバー、LDAP サーバーを構築するコストだけでもその使用がはばかられる。

小中規模構成で、仮想ユーザーを利用する場合、デフォルトの "Berkeley DB" を利用することが自然だが、MRA として devocot を利用すると、dovecot が "Berkeley DB" をサポートしていないという問題が発生する。SMTP と、POP3 or IMAP のユーザーアカウントの一元管理ができない。仮想ユーザーを sendmail 、dovecot で、それぞれ別々に管理し、スクリプト等で仮想ユーザー名、パスワードを同期するようにすることもできるが、これは、あまりスマートではない。

以上から、小中規模構成において、sendmail + dovecot で仮想ユーザーを利用するのはあまり現実的ではない。大規模構成では、ユーザー情報が格納された SQL サーバー、LDAP サーバーを参照することにより、アカウントの一元管理、仮想ユーザーの利用によるセキュアな環境の恩恵を受けるだろう。小中規模構成 ( 特に STMP, POP3/IMAP サーバーが一台環境 ) では、Linux アカウントを作成し、SMTP サーバー、POP3/IMAP サーバーの参照先ユーザー情報として Linux アカウントを利用することが現実解と考える。

因みに、MTA として、sendmail ではなく、Postfix、Exim を利用する場合は、dovecot 側で SASL のサポートがあるため、比較的容易に仮想ユーザーを利用でると思われる。これは、別の機会に検証することとしよう。

コメント (0)

コメントの投稿