戻る

原文:http://wiki.dovecot.org/Authentication(15版)
翻訳:龍義(Toyota Tatsuyoshi)

認証のメカニズム

認証のメカニズムは、 IMAP もしくは POP3 クライアントが認証を行うために Dovecot とやりとりするとき使うプロトコルを意味しています。 最も単純なものは PLAIN で、クライアントは単純に Dovecot に対して 暗号化されていないパスワードを送信します。 全てのクライアントは PLAIN 認証をサポートしていますが、あきらかに ネットワークを盗聴している誰かがそのパスワードを盗むことができる問題が あります。 そのため(そのほかにも)、他のメカニズムが実装されています。

しかし、 PLAIN ではないメカニズムには、1つ大きな不都合があります。 サーバ側のパスワードは、特別なフォーマットか、平文で保存する必要があります。 これは、よく使われる DES や MD5 で暗号化されたパスワードのほとんどの メカニズムを使うことが不可能になります。

今日では、多くの人が SSL を使い、そして、 SSL の安全な接続で 暗号化されていないパスワードを送ることは、問題がありません。 なので、もし SSL を使っているならば、PLAIM メカニズムではない他の ものについて、心配する必要は多分ないでしょう。

他の PLAIN ではないメカニズムは以下を含んでいます:

パスワードの仕組み

パスワードはパスワードデータベース中に、多くの異なるフォーマットで 保存することができます。 攻撃者がコンピュータを乗っ取ったときに、全てのユーザのパスワードを簡単に読む ことができないように、通常、それは暗号化されて保存されなければなりません。

PLAIN ではない認証のメカニズムでは、 その特別なフォーマット(それは PLAIN 以外では、全て互換性がないです)の パスワードで保存しなければならなく、 さもなくば、パスワードを平文で保存しなければなりません。

PLAIN メカニズムでは、パスワードがどのフォーマットでローカルに 保存されているかは重要ではなく、なぜならば Dovecot は保存形態に合わせた 送られた平文パスワードを内部的に暗号化するからです。

多くの場合、すでに何かしらの特定のフォーマットでのパスワードが あるので、それを単純に使うのが良い考えです。そうでなければ、 例えば SHA1 を選ぶように、使うものを1つ選びます。

現在サポートされているパスワード機構は以下のものです:

デフォルトのパスワードの機構は、通常パスワードデータベースに合わせて 指定することができます。 パスワードの前に {機構名} を付けることで、それを実現できます。 例えば、 "{PLAIN}password" とします。 全てのパスワードデータベースは機構を変換することをサポートしていないことに 注意してください。 いくつかでは、例えば passwd や shadow を使った他のソフトウェアと 互換性がないことがおきるでしょうし、 その他では、例えば PAM では単純に全く動作しないでしょう。

Dovecot バージョン 1.0-test では、dovecotpw ユーティリティが含まれ、 それは、使いたい機構のパスワードを簡単に作り出すことができます。

パスワードデータベース

Dovecot はパスワードデータベースを使ってユーザを認証します。 それは、ユーザ名とそのパスワードのみを含んでいる必要があります。

Dovecot バージョン 1.0-test では、複数のパスワードデータベースの 指定をサポートしていますので、もしパスワードが 最初のデータベースで一致しなければ、次のデータベースをチェックします。 /etc/passwd にあるユーザだけでなく、仮想ユーザも両方簡単にサポート したいときは、非常に便利です。 この機能はバージョン 0.99 リリースでは使えません。 現在サポートされているパスワードデータベースは以下のものです:

ユーザデータベース

Dovecot は認証後にユーザの UID と GID とホームディレクトリとメールの場所を ユーザデータベースより取得します。 ユーザデータベースとパスワードデータベースは同じであることも できますし、必要に応じて別々にであることもできます。

UID と GID についての詳細については、 UserIdsを参照してください。 ホームディレクトリとメールの場所についての詳細は VirtualUsersを参照してください。

現在サポートされているユーザーデータベースは以下のものです:

データベースの説明

passwd

ユーザデータベースとして、最も一般的に使われています。 多くのシステムでは現在、 shadow パスワードを使っているため、 通常はパスワードデータベースとしては動きません。 BSD 系では例外で、現在でも shadow パスワードをパスワードのフィールドに 設定しています。

shadow

少なくとも Linux と Solaris で動作しますが、最近は通常、 PAM が shadow よりも好まれています。

PAM

接続可能な認証モジュール。 最近では、ユーザを認証する最も一般的な方法です。 PAM 設定は、たいてい /etc/pam.d/ ディレクトリです。 デフォルトで Dovecot は、"dovecot" のサービス名を使用するので、 設定は /etc/pam.d/dovecot ファイルから読み込まれます。 "auth_passdb = pam" に続けて使いたいサービス名を追加することで、 これを変更することができます、 例えば "auth_passdb = pam imap" とすることで、 /etc/pam.d/imap が 使われます。 同様に、サービスを "*" とすると、 Dovecot はユーザがログインでどちらかを使ったかに応じて、 自動的に imap か pop3 かを使います。

-session パラメータを指定することによって、 Dovecot は PAM セッションを open してすぐにそれを close することができます。 いくつかの PAM プラグイン - pam_mkhomedir のような - で、これが必要になります。 [バージョン 1.0-test79 とそれ以降] このパラメータがある、 /etc/dovecot.conf では、以下のようなものに見えるかもしれません:

passdb pam { 
args = "-session *"
}

PAM はユーザーデータベースを提供しないので、 他の何かを使う必要があります - たいていそれは passwd か static です。

Linux PAM, Solaris PAM, OpenPAM (FreeBSD), ApplePAM (OSX) で動作します。

以下は、標準的な UNIX 認証で使う /etc/pam.d/dovecot 設定ファイルの例です:

auth    required        pam_unix.so nullok
account required        pam_unix.so

passwd-file

これは、 libpam-pwdfile で使われる password ファイルや、通常の /etc/passwd ファイルと互換性があります。それは、以下のような形式になります。

user:password:uid:gid:(gecos):home:(shell):flags:mail

パスワードデータベースには、ユーザとパスワードのフィールドだけあれば、 十分です。 ユーザデータベースは、同様に UID と GID と望まれるなら home のフィールドを 指定する必要があります (VirtualUsersを 参照してください)。

flag は現在使われていません。

メールフィールドは、設定ファイルの default_mail_env 指定を するために使われます。

パスワードフィールドは、以下の3つのフォーマットになります:

CRAM-MD5の例です(平文の元パスワードを使用):

user:{PLAIN}password

LDAP

詳細は doc/dovecot-ldap.conf を参照してください。 パスワードデータベースとユーザデータベースは 別々な場所にある情報を保持するため、異なる設定ファイルを使うことができます。 両方とも同じファイルを参照する場合は、同じ LDAP 接続を共有します。

MySQL

詳細は doc/dovecot-mysql.confを参照してください。 パスワードデータベースとユーザデータベースは 別々な場所にある情報を保持するため、異なる設定ファイルを使うことができます。 両方とも同じファイルを参照する場合は、同じ SQL 接続を共有します。

postgreSQL

詳細は doc/dovecot-pgsql.confを参照してください。 パスワードデータベースとユーザデータベースは 別々な場所にある情報を保持するため、異なる設定ファイルを使うことができます。 両方とも同じファイルを参照する場合は、同じ SQL 接続を共有します。

static

もし全てのユーザで UID と GID を1つだけ使いたいときや、 ホームディレクトリが単純な形で指定することができるときに、 static なユーザデータベースを使うことができます。 構文は以下のようになります:

auth_passdb = static uid=<uid> gid=<gid> home=<dir template> mail=<dir template>

home と mail は両方ともオプションです。 ディレクトリのテンプレートは、設定ファイルの default_mail_env 指定などで 変数として使います。 Variablesを参照してください。

BSDauth

誰か修正して:実は、誰がこれを使うかについて、良くわかっていません。 推測では、いくつかの BSD 系、少なくとも openbsd で...。

vpopmail

これは、仮想ドメインの扱いの作成を目的とする外部ソフトウェアです。 Qmail とPostfix でサポートしています。 http://inter7.com/vpopmail.htmlを参照してください。

現在、vpopmail は PLAIN メカニズムだけで働きます。 vpopmail は他のメカニズムへのサポートの追加を許す平文の中のパスワードの 保存もサポートしていますが、 今のところ誰も興味を持っていません。