1.2. LDAP 認証を使用した Dovecot サーバーのセットアップ
インフラストラクチャーが LDAP サーバーを使用してアカウントを保存している場合、それに対して Dovecot ユーザーを認証できます。この場合、アカウントをディレクトリーで集中管理するため、ユーザーは Dovecot サーバー上のファイルシステムにローカルでアクセスする必要はありません。
複数の Dovecot サーバーをレプリケーションでセットアップして、メールボックスを高可用性にする予定がある場合にも、集中管理されたアカウントは利点があります。
1.2.1. Dovecot のインストール
dovecot
パッケージは以下を提供します。
-
dovecot
サービスとそれを管理するユーティリティー - Dovecot がオンデマンドで開始するサービス (認証など)
- サーバーサイドメールフィルタリングなどのプラグイン
-
/etc/dovecot/
ディレクトリーの設定ファイル -
/usr/share/doc/dovecot/
ディレクトリーのドキュメント
手順
dovecot
パッケージをインストールします。# dnf install dovecot
注記Dovecot がすでにインストールされていて、クリーンな設定ファイルが必要な場合は、
/etc/dovecot/
ディレクトリーを名前変更するか削除してください。その後、パッケージを再インストールします。設定ファイルを削除しないと、dnf reinstall dovecot
コマンドは/etc/dovecot/
内の設定ファイルをリセットしません。
次のステップ
1.2.2. Dovecot サーバーでの TLS 暗号化の設定
Dovecot はセキュアなデフォルト設定を提供します。たとえば、TLS はデフォルトで有効になっており、認証情報と暗号化されたデータをネットワーク経由で送信します。Dovecot サーバーで TLS を設定するには、証明書と秘密鍵ファイルへのパスを設定するだけです。さらに、Diffie-Hellman パラメーターを生成して使用し、Perfect Forward Secrecy (PFS) を提供することで、TLS 接続のセキュリティーを強化できます。
前提条件
- Dovecot がインストールされています。
次のファイルが、サーバー上のリストされた場所にコピーされました。
-
サーバー証明書:
/etc/pki/dovecot/certs/server.example.com.crt
-
秘密鍵:
/etc/pki/dovecot/private/server.example.com.key
-
認証局 (CA) 証明書:
/etc/pki/dovecot/certs/ca.crt
-
サーバー証明書:
-
サーバー証明書の
Subject DN
フィールドのホスト名は、サーバーの完全修飾ドメイン名 (FQDN) と一致します。 - サーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している必要があります。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューションの TLS extension "Extended Master Secret" enforced を参照してください。
手順
秘密鍵ファイルにセキュアな権限を設定します。
# chown root:root /etc/pki/dovecot/private/server.example.com.key # chmod 600 /etc/pki/dovecot/private/server.example.com.key
Diffie-Hellman パラメーターを使用してファイルを生成します。
# openssl dhparam -out /etc/dovecot/dh.pem 4096
サーバーのハードウェアとエントロピーによっては、4096 ビットの Diffie-Hellman パラメーターを生成するのに数分かかる場合があります。
/etc/dovecot/conf.d/10-ssl.conf
ファイルで証明書と秘密鍵ファイルへのパスを設定します。ssl_cert
およびssl_key
パラメーターを更新し、サーバーの証明書と秘密鍵へのパスを使用するように設定します。ssl_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key
ssl_ca
パラメーターをコメント解除し、CA 証明書へのパスを使用するように設定します。ssl_ca = </etc/pki/dovecot/certs/ca.crt
ssl_dh
パラメーターをコメント解除し、Diffie-Hellman パラメーターファイルへのパスを使用するように設定します。ssl_dh = </etc/dovecot/dh.pem
重要Dovecot がファイルからパラメーターの値を確実に読み取るようにするには、パスの先頭に
<
文字を付ける必要があります。
次のステップ
関連情報
-
/usr/share/doc/dovecot/wiki/SSL.DovecotConfiguration.txt
1.2.3. 仮想ユーザーを使用するための Dovecot の準備
デフォルトでは、Dovecot はサービスを使用するユーザーとして、ファイルシステム上で多くのアクションを実行します。ただし、1 人のローカルユーザーを使用してこれらのアクションを実行するように Dovecot バックエンドを設定すると、複数の利点があります。
- Dovecot は、ユーザーの ID (UID) を使用する代わりに、特定のローカルユーザーとしてファイルシステムアクションを実行します。
- ユーザーは、サーバー上でローカルに利用できる必要はありません。
- すべてのメールボックスとユーザー固有のファイルを 1 つのルートディレクトリーに保存できます。
- ユーザーは UID とグループ ID (GID) を必要としないため、管理作業が軽減されます。
- サーバー上のファイルシステムにアクセスできるユーザーは、これらのファイルにアクセスできないため、メールボックスやインデックスを危険にさらす可能性はありません。
- レプリケーションのセットアップはより簡単です。
前提条件
- Dovecot がインストールされています。
手順
vmail
ユーザーを作成します。# useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
Dovecot は後でこのユーザーを使用してメールボックスを管理します。セキュリティー上の理由から、この目的で
dovecot
またはdovenull
システムユーザーを使用しないでください。/var/mail/
以外のパスを使用する場合は、それに SELinux コンテキストmail_spool_t
を設定します。例:# semanage fcontext -a -t mail_spool_t "<path>(/.*)?" # restorecon -Rv <path>
/var/mail/
への書き込み権限をvmail
ユーザーにのみ付与します。# chown vmail:vmail /var/mail/ # chmod 700 /var/mail/
/etc/dovecot/conf.d/10-mail.conf
ファイルのmail_location
パラメーターをコメント解除し、メールボックスの形式と場所を設定します。mail_location = sdbox:/var/mail/%n/
この設定の場合:
-
Dovecot は、
single
モードで高パフォーマンスのdbox
メールボックス形式を使用します。このモードでは、サービスは、maildir
形式と同様に、各メールを個別のファイルに保存します。 -
Dovecot はパス内の
%n
変数をユーザー名に解決します。これは、各ユーザーがメールボックス用に個別のディレクトリーを持つようにするために必要です。
-
Dovecot は、
次のステップ
関連情報
-
/usr/share/doc/dovecot/wiki/VirtualUsers.txt
-
/usr/share/doc/dovecot/wiki/MailLocation.txt
-
/usr/share/doc/dovecot/wiki/MailboxFormat.dbox.txt
-
/usr/share/doc/dovecot/wiki/Variables.txt
1.2.4. LDAP を Dovecot 認証バックエンドとして使用する
通常、LDAP ディレクトリー内のユーザーは、ディレクトリーサービスに対して自分自身を認証できます。Dovecot は、これを使用して、ユーザーが IMAP または POP3 サービスにログインする場合、ユーザーを認証できます。この認証方法には、次のとおり、多くの利点があります。
- 管理者は、ディレクトリーでユーザーを集中管理できます。
- LDAP アカウントには、特別な属性は必要ありません。LDAP サーバーから認証を受けることができれば十分です。したがって、この方法は、LDAP サーバーで使用されるパスワード保存方式とは無関係です。
- ユーザーは、Name Service Switch (NSS) インターフェイスと Pluggable Authentication Module (PAM) フレームワークを介して、サーバー上でローカルに利用できる必要はありません。
前提条件
- Dovecot がインストールされています。
- 仮想ユーザー機能が設定されています。
- LDAP サーバーへの接続は、TLS 暗号化をサポートします。
- Dovecot サーバー上の RHEL は、LDAP サーバーの認証局 (CA) 証明書を信頼します。
- ユーザーが LDAP ディレクトリーの異なるツリーに保存されている場合、ディレクトリーを検索するための Dovecot 専用の LDAP アカウントが存在します。このアカウントには、他のユーザーの識別名 (DN) を検索する権限が必要です。
- MariaDB サーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、この Dovecot サーバーは Extended Master Secret (EMS) 拡張機能をサポートするか、TLS 1.3 を使用します。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューションの TLS extension "Extended Master Secret" enforced を参照してください。
手順
/etc/dovecot/conf.d/10-auth.conf
ファイルで認証バックエンドを設定します。不要な
auth-*.conf.ext
認証バックエンド設定ファイルのinclude
ステートメントをコメントアウトします。次に例を示します。#!include auth-system.conf.ext
次の行をコメント解除して、LDAP 認証を有効にします。
!include auth-ldap.conf.ext
/etc/dovecot/conf.d/auth-ldap.conf.ext
ファイルを編集し、次のようにoverride_fields
パラメーターをuserdb
セクションに追加します。userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }
固定値のため、Dovecot は LDAP サーバーからこれらの設定をクエリーしません。したがって、これらの属性も存在する必要はありません。
次の設定で
/etc/dovecot/dovecot-ldap.conf.ext
ファイルを作成します。LDAP 構造に応じて、次のいずれかを設定します。
ユーザーが LDAP ディレクトリーの異なるツリーに保存されている場合は、動的 DN 検索を設定します。
dn = cn=dovecot_LDAP,dc=example,dc=com dnpass = password pass_filter = (&(objectClass=posixAccount)(uid=%n))
Dovecot は、指定された DN、パスワード、およびフィルターを使用して、ディレクトリー内の認証ユーザーの DN を検索します。この検索では、Dovecot はフィルター内の
%n
をユーザー名に置き換えます。LDAP 検索で返される結果は 1 つだけであることに注意してください。すべてのユーザーが特定のエントリーに保存されている場合は、DN テンプレートを設定します。
auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com
LDAP サーバーへの認証バインドを有効にして、Dovecot ユーザーを確認します。
auth_bind = yes
URL を LDAP サーバーに設定します。
uris = ldaps://LDAP-srv.example.com
セキュリティー上の理由から、LDAP プロトコル上で LDAPS または
STARTTLS
コマンドを使用した暗号化された接続のみを使用してください。後者の場合は、さらにtls = yes
を設定に追加します。証明書の検証を機能させるには、LDAP サーバーのホスト名が TLS 証明書で使用されているホスト名と一致する必要があります。
LDAP サーバーの TLS 証明書の検証を有効にします。
tls_require_cert = hard
ベース DN には、ユーザーの検索を開始する DN を設定します。
base = ou=People,dc=example,dc=com
検索範囲を設定します。
scope = onelevel
Dovecot は、指定されたベース DN のみを
onelevel
スコープで検索し、サブツリーもsubtree
スコープで検索します。
/etc/dovecot/dovecot-ldap.conf.ext
ファイルにセキュアな権限を設定します。# chown root:root /etc/dovecot/dovecot-ldap.conf.ext # chmod 600 /etc/dovecot/dovecot-ldap.conf.ext
次のステップ
関連情報
-
/usr/share/doc/dovecot/example-config/dovecot-ldap.conf.ext
-
/usr/share/doc/dovecot/wiki/UserDatabase.Static.txt
-
/usr/share/doc/dovecot/wiki/AuthDatabase.LDAP.txt
-
/usr/share/doc/dovecot/wiki/AuthDatabase.LDAP.AuthBinds.txt
-
/usr/share/doc/dovecot/wiki/AuthDatabase.LDAP.PasswordLookups.txt
1.2.5. Dovecot 設定の完了
Dovecot をインストールして設定したら、firewalld
サービスで必要なポートを開き、サービスを有効にして開始します。その後、サーバーをテストできます。
前提条件
以下は Dovecot で設定されています。
- TLS 暗号化
- 認証バックエンド
- クライアントは認証局 (CA) 証明書を信頼します。
手順
IMAP または POP3 サービスのみをユーザーに提供する場合は、
/etc/dovecot/dovecot.conf
ファイルのprotocol
パラメーターをコメント解除し、必要なプロトコルに設定します。たとえば、POP3 を必要としない場合は、次のように設定します。protocols = imap lmtp
デフォルトでは、
imap
、pop3
、およびlmtp
プロトコルが有効になっています。ローカルファイアウォールでポートを開きます。たとえば、IMAPS、IMAP、POP3S、および POP3 プロトコルのポートを開くには、次のように入力します。
# firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 # firewall-cmd --reload
dovecot
サービスを有効にして開始します。# systemctl enable --now dovecot
検証
Dovecot に接続して電子メールを読むには、Mozilla Thunderbird などのメールクライアントを使用します。メールクライアントの設定は、使用するプロトコルによって異なります。
表1.2 Dovecot サーバーへの接続設定 プロトコル ポート 接続セキュリティー 認証方法 IMAP
143
STARTTLS
PLAIN[a]
IMAPS
993
SSL/TLS
PLAIN[a]
POP3
110
STARTTLS
PLAIN[a]
POP3S
995
SSL/TLS
PLAIN[a]
[a] クライアントは、TLS 接続を介して暗号化されたデータを送信します。したがって、認証情報は開示されません。デフォルトでは、Dovecot は TLS を使用しない接続ではプレーンテキスト認証を受け入れないため、この表には暗号化されていない接続の設定がリストされていないことに注意してください。
デフォルト以外の値を含む設定を表示します。
# doveconf -n
関連情報
-
システム上の
firewall-cmd(1)
man ページ