1.3.4. Dovecot 認証バックエンドとして MariaDB SQL データベースを使用する
Dovecot は、MariaDB データベースからアカウントとパスワードを読み取り、これを使用して、ユーザーが IMAP または POP3 サービスにログインする場合、ユーザーを認証できます。
MariaDB 認証方式の利点は以下のとおりです。
- 管理者は、データベースでユーザーを集中管理できます。
- ユーザーはサーバー上でローカルにアクセスできません。
前提条件
- Dovecot がインストールされている。
- 仮想ユーザー機能が設定されています。
- MariaDB サーバーへの接続では、TLS 暗号化がサポートされます。
-
dovecotDBデータベースは MariaDB に存在し、usersテーブルには、少なくともusernameおよびpassword列が含まれています。 -
password列には、Dovecot がサポートするスキームで暗号化されたパスワードが含まれています。 -
パスワードは、同じスキームを使用するか、
{pw-storage-scheme}接頭辞を使用します。 -
MariaDB ユーザー
dovecotは、dovecotDBデータベースのusersテーブルに対する読み取り権限を持っています。 -
MariaDB サーバーの TLS 証明書を発行した認証局 (CA) の証明書は、Dovecot サーバーの
/etc/pki/tls/certs/ca.crtファイルに保存されます。 - FIPS モードが有効になっている場合、この Dovecot サーバーは Extended Master Secret (EMS) 拡張機能をサポートするか、TLS 1.3 を使用します。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューション TLS extension "Extended Master Secret" enforced を参照してください。
手順
dovecot-mysqlパッケージをインストールします。# dnf install dovecot-mysql/etc/dovecot/conf.d/10-auth.confファイルで認証バックエンドを設定します。不要な
auth-*.conf.ext認証バックエンド設定ファイルのincludeステートメントをコメントアウトします。次に例を示します。#!include auth-system.conf.ext次の行をコメント解除して、SQL 認証を有効にします。
!include auth-sql.conf.ext
/etc/dovecot/conf.d/auth-sql.conf.extファイルを編集し、override_fieldsパラメーターをuserdbセクションに次のように追加します。userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }固定値のため、Dovecot はこれらの設定を SQL サーバーからクエリーしません。
次の設定で
/etc/dovecot/dovecot-sql.conf.extファイルを作成します。driver = mysql** connect = host=mariadb_srv.example.com dbname=dovecotDB user=dovecot password=_<dovecotPW>_ ssl_ca=/etc/pki/tls/certs/ca.crt default_pass_scheme = SHA512-CRYPT user_query = SELECT username FROM users WHERE username='%u'; password_query = SELECT username AS user, password FROM users WHERE username='%u'; iterate_query = SELECT username FROM users;データベースサーバーに対して TLS 暗号化を使用するには、
ssl_caオプションに MariaDB サーバー証明書を発行した CA の証明書のパスを設定します。証明書の検証を機能させるには、MariaDB サーバーのホスト名が TLS 証明書で使用されているホスト名と一致する必要があります。データベースのパスワード値に
{<pw-storage-scheme>}接頭辞が含まれている場合は、default_pass_scheme設定を省略できます。ファイル内のクエリーは、次のように設定する必要があります。
-
user_queryパラメーターの場合、クエリーは Dovecot ユーザーのユーザー名を返す必要があります。また、クエリーは 1 つの結果のみを返す必要があります。 -
password_queryパラメーターの場合、クエリーはユーザー名とパスワードを返す必要があり、Dovecot はuserおよびpassword変数でこれらの値を使用する必要があります。したがって、データベースが異なる列名を使用している場合は、ASSQL コマンドを使用して、結果の列の名前を変更してください。 -
iterate_queryパラメーターの場合、クエリーはすべてのユーザーのリストを返す必要があります。
-
/etc/dovecot/dovecot-sql.conf.extファイルにセキュアな権限を設定します。# chown root:root /etc/dovecot/dovecot-sql.conf.ext # chmod 600 /etc/dovecot/dovecot-sql.conf.ext
次のステップ