メールサーバーのデプロイ
メールサーバーサービスの設定および維持
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 Dovecot IMAP および POP3 サーバーの設定と管理
Dovecot は、セキュリティーを重視する高パフォーマンスのメール配信エージェント (MDA) です。IMAP または POP3 互換のメールクライアントを使用して Dovecot サーバーに接続し、メールを読んだりダウンロードしたりできます。
Dovecot の主な機能:
- セキュリティーを重視する設計と実装
- 大規模環境でのパフォーマンスを向上させるために、高可用性を実現する双方向レプリケーションをサポート
-
高パフォーマンスの
dbox
メールボックス形式だけでなく、互換性の理由からmbox
とMaildir
もサポート - 破損したインデックスファイルの修正などの自己修復機能
- IMAP 標準への準拠
- IMAP および POP3 クライアントのバグを回避するための回避策をサポート
1.1. PAM 認証を使用した Dovecot サーバーのセットアップ
Dovecot は、ユーザーデータベースとして Name Service Switch (NSS) インターフェイスをサポートし、認証バックエンドとして Pluggable Authentication Module (PAM) フレームワークをサポートします。この設定により、Dovecot は、NSS を介してサーバー上でローカルに利用可能なユーザーにサービスを提供できます。
アカウントが次の場合に PAM 認証を使用します。
-
/etc/passwd
ファイルでローカルに定義されている。 - リモートデータベースに保存されているが、System Security Services Daemon (SSSD) またはその他の NSS プラグインを介してローカルで利用できる。
1.1.1. Dovecot のインストール
dovecot
パッケージは以下を提供します。
-
dovecot
サービスとそれを管理するユーティリティー - Dovecot がオンデマンドで開始するサービス (認証など)
- サーバーサイドメールフィルタリングなどのプラグイン
-
/etc/dovecot/
ディレクトリーの設定ファイル -
/usr/share/doc/dovecot/
ディレクトリーのドキュメント
手順
dovecot
パッケージをインストールします。dnf install dovecot
# dnf install dovecot
Copy to Clipboard Copied! 注記Dovecot がすでにインストールされていて、クリーンな設定ファイルが必要な場合は、
/etc/dovecot/
ディレクトリーを名前変更するか削除してください。その後、パッケージを再インストールします。設定ファイルを削除しないと、dnf reinstall dovecot
コマンドは/etc/dovecot/
内の設定ファイルをリセットしません。
次のステップ
1.1.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) と一致します。 - 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
# chown root:root /etc/pki/dovecot/private/server.example.com.key # chmod 600 /etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! Diffie-Hellman パラメーターを使用してファイルを生成します。
openssl dhparam -out /etc/dovecot/dh.pem 4096
# openssl dhparam -out /etc/dovecot/dh.pem 4096
Copy to Clipboard Copied! サーバーのハードウェアとエントロピーによっては、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_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! ssl_ca
パラメーターをコメント解除し、CA 証明書へのパスを使用するように設定します。ssl_ca = </etc/pki/dovecot/certs/ca.crt
ssl_ca = </etc/pki/dovecot/certs/ca.crt
Copy to Clipboard Copied! ssl_dh
パラメーターをコメント解除し、Diffie-Hellman パラメーターファイルへのパスを使用するように設定します。ssl_dh = </etc/dovecot/dh.pem
ssl_dh = </etc/dovecot/dh.pem
Copy to Clipboard Copied!
重要Dovecot がファイルからパラメーターの値を確実に読み取るようにするには、パスの先頭に
<
文字を付ける必要があります。
次のステップ
1.1.3. 仮想ユーザーを使用するための Dovecot の準備
デフォルトでは、Dovecot はサービスを使用するユーザーとして、ファイルシステム上で多くのアクションを実行します。ただし、1 人のローカルユーザーを使用してこれらのアクションを実行するように Dovecot バックエンドを設定すると、複数の利点があります。
- Dovecot は、ユーザーの ID (UID) を使用する代わりに、特定のローカルユーザーとしてファイルシステムアクションを実行します。
- ユーザーは、サーバー上でローカルに利用できる必要はありません。
- すべてのメールボックスとユーザー固有のファイルを 1 つのルートディレクトリーに保存できます。
- ユーザーは UID とグループ ID (GID) を必要としないため、管理作業が軽減されます。
- サーバー上のファイルシステムにアクセスできるユーザーは、これらのファイルにアクセスできないため、メールボックスやインデックスを危険にさらす可能性はありません。
- レプリケーションのセットアップはより簡単です。
前提条件
- Dovecot がインストールされています。
手順
vmail
ユーザーを作成します。useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
# useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
Copy to Clipboard Copied! Dovecot は後でこのユーザーを使用してメールボックスを管理します。セキュリティー上の理由から、この目的で
dovecot
またはdovenull
システムユーザーを使用しないでください。/var/mail/
以外のパスを使用する場合は、それに SELinux コンテキストmail_spool_t
を設定します。例:semanage fcontext -a -t mail_spool_t "<path>(/.)?"* restorecon -Rv <path>
# semanage fcontext -a -t mail_spool_t "<path>(/.)?"* # restorecon -Rv <path>
Copy to Clipboard Copied! /var/mail/
への書き込み権限をvmail
ユーザーにのみ付与します。chown vmail:vmail /var/mail/ chmod 700 /var/mail/
# chown vmail:vmail /var/mail/ # chmod 700 /var/mail/
Copy to Clipboard Copied! /etc/dovecot/conf.d/10-mail.conf
ファイルのmail_location
パラメーターをコメント解除し、メールボックスの形式と場所を設定します。mail_location = sdbox:/var/mail/%n/
mail_location = sdbox:/var/mail/%n/
Copy to Clipboard Copied! この設定の場合:
-
Dovecot は、
single
モードで高パフォーマンスのdbox
メールボックス形式を使用します。このモードでは、サービスは、maildir
形式と同様に、各メールを個別のファイルに保存します。 -
Dovecot はパス内の
%n
変数をユーザー名に解決します。これは、各ユーザーがメールボックス用に個別のディレクトリーを持つようにするために必要です。
-
Dovecot は、
1.1.4. PAM を Dovecot 認証バックエンドとして使用する
デフォルトでは、Dovecot は Name Service Switch (NSS) インターフェイスをユーザーデータベースとして使用し、Pluggable Authentication Module (PAM) フレームワークを認証バックエンドとして使用します。
設定をカスタマイズして Dovecot を環境に適応させ、仮想ユーザー機能を使用して管理を簡素化します。
前提条件
- Dovecot がインストールされています。
- 仮想ユーザー機能が設定されています。
手順
/etc/dovecot/conf.d/10-mail.conf
ファイルのfirst_valid_uid
パラメーターを更新して、Dovecot に対して認証できる最小のユーザー ID (UID) を定義します。first_valid_uid = 1000
first_valid_uid = 1000
Copy to Clipboard Copied! デフォルトでは、
1000
以上の UID を持つユーザーが認証を受けることができます。必要に応じて、last_valid_uid
パラメーターを設定して、Dovecot がログインを許可する最大の UID を定義することもできます。/etc/dovecot/conf.d/auth-system.conf.ext
ファイルで、次のようにoverride_fields
パラメーターをuserdb
セクションに追加します。userdb { driver = passwd override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }
userdb { driver = passwd override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }
Copy to Clipboard Copied! 固定値のため、Dovecot は
/etc/passwd
ファイルからこれらの設定をクエリーしません。そのため、/etc/passwd
に定義されたホームディレクトリーが存在する必要はありません。
次のステップ
1.1.5. Dovecot 設定の完了
Dovecot をインストールして設定したら、firewalld
サービスで必要なポートを開き、サービスを有効にして開始します。その後、サーバーをテストできます。
前提条件
以下は Dovecot で設定されています。
- TLS 暗号化
- 認証バックエンド
- クライアントは認証局 (CA) 証明書を信頼します。
手順
IMAP または POP3 サービスのみをユーザーに提供する場合は、
/etc/dovecot/dovecot.conf
ファイルのprotocol
パラメーターをコメント解除し、必要なプロトコルに設定します。たとえば、POP3 を必要としない場合は、次のように設定します。protocols = imap lmtp
protocols = imap lmtp
Copy to Clipboard Copied! デフォルトでは、
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
# firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 # firewall-cmd --reload
Copy to Clipboard Copied! dovecot
サービスを有効にして開始します。systemctl enable --now dovecot
# systemctl enable --now dovecot
Copy to Clipboard Copied!
検証
Dovecot に接続してメールを読むには、Mozilla Thunderbird などのメールクライアントを使用します。メールクライアントの設定は、使用するプロトコルによって異なります。
表1.1 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
# doveconf -n
Copy to Clipboard Copied!
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
# dnf install dovecot
Copy to Clipboard Copied! 注記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) と一致します。 - 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
# chown root:root /etc/pki/dovecot/private/server.example.com.key # chmod 600 /etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! Diffie-Hellman パラメーターを使用してファイルを生成します。
openssl dhparam -out /etc/dovecot/dh.pem 4096
# openssl dhparam -out /etc/dovecot/dh.pem 4096
Copy to Clipboard Copied! サーバーのハードウェアとエントロピーによっては、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_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! ssl_ca
パラメーターをコメント解除し、CA 証明書へのパスを使用するように設定します。ssl_ca = </etc/pki/dovecot/certs/ca.crt
ssl_ca = </etc/pki/dovecot/certs/ca.crt
Copy to Clipboard Copied! ssl_dh
パラメーターをコメント解除し、Diffie-Hellman パラメーターファイルへのパスを使用するように設定します。ssl_dh = </etc/dovecot/dh.pem
ssl_dh = </etc/dovecot/dh.pem
Copy to Clipboard Copied!
重要Dovecot がファイルからパラメーターの値を確実に読み取るようにするには、パスの先頭に
<
文字を付ける必要があります。
次のステップ
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
# useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
Copy to Clipboard Copied! Dovecot は後でこのユーザーを使用してメールボックスを管理します。セキュリティー上の理由から、この目的で
dovecot
またはdovenull
システムユーザーを使用しないでください。/var/mail/
以外のパスを使用する場合は、それに SELinux コンテキストmail_spool_t
を設定します。例:semanage fcontext -a -t mail_spool_t "<path>(/.)?"* restorecon -Rv <path>
# semanage fcontext -a -t mail_spool_t "<path>(/.)?"* # restorecon -Rv <path>
Copy to Clipboard Copied! /var/mail/
への書き込み権限をvmail
ユーザーにのみ付与します。chown vmail:vmail /var/mail/ chmod 700 /var/mail/
# chown vmail:vmail /var/mail/ # chmod 700 /var/mail/
Copy to Clipboard Copied! /etc/dovecot/conf.d/10-mail.conf
ファイルのmail_location
パラメーターをコメント解除し、メールボックスの形式と場所を設定します。mail_location = sdbox:/var/mail/%n/
mail_location = sdbox:/var/mail/%n/
Copy to Clipboard Copied! この設定の場合:
-
Dovecot は、
single
モードで高パフォーマンスのdbox
メールボックス形式を使用します。このモードでは、サービスは、maildir
形式と同様に、各メールを個別のファイルに保存します。 -
Dovecot はパス内の
%n
変数をユーザー名に解決します。これは、各ユーザーがメールボックス用に個別のディレクトリーを持つようにするために必要です。
-
Dovecot は、
次のステップ
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) を検索する権限が必要です。
- 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
#!include auth-system.conf.ext
Copy to Clipboard Copied! 次の行をコメント解除して、LDAP 認証を有効にします。
!include auth-ldap.conf.ext
!include auth-ldap.conf.ext
Copy to Clipboard Copied!
/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/ }
userdb { driver = ldap args = /etc/dovecot/dovecot-ldap.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }
Copy to Clipboard Copied! 固定値のため、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))
dn = cn=dovecot_LDAP,dc=example,dc=com dnpass = <password> pass_filter = (&(objectClass=posixAccount)(uid=%n))
Copy to Clipboard Copied! Dovecot は、指定された DN、パスワード、およびフィルターを使用して、ディレクトリー内の認証ユーザーの DN を検索します。この検索では、Dovecot はフィルター内の
%n
をユーザー名に置き換えます。LDAP 検索で返される結果は 1 つだけであることに注意してください。すべてのユーザーが特定のエントリーに保存されている場合は、DN テンプレートを設定します。
auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com
auth_bind_userdn = cn=%n,ou=People,dc=example,dc=com
Copy to Clipboard Copied!
LDAP サーバーへの認証バインドを有効にして、Dovecot ユーザーを確認します。
auth_bind = yes
auth_bind = yes
Copy to Clipboard Copied! URL を LDAP サーバーに設定します。
uris = ldaps://LDAP-srv.example.com
uris = ldaps://LDAP-srv.example.com
Copy to Clipboard Copied! セキュリティー上の理由から、LDAP プロトコル上で LDAPS または
STARTTLS
コマンドを使用した暗号化された接続のみを使用してください。後者の場合は、さらにtls = yes
を設定に追加します。証明書の検証を機能させるには、LDAP サーバーのホスト名が TLS 証明書で使用されているホスト名と一致する必要があります。
LDAP サーバーの TLS 証明書の検証を有効にします。
tls_require_cert = hard
tls_require_cert = hard
Copy to Clipboard Copied! ベース DN には、ユーザーの検索を開始する DN を設定します。
base = ou=People,dc=example,dc=com
base = ou=People,dc=example,dc=com
Copy to Clipboard Copied! 検索範囲を設定します。
scope = onelevel
scope = onelevel
Copy to Clipboard Copied! 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
# chown root:root /etc/dovecot/dovecot-ldap.conf.ext # chmod 600 /etc/dovecot/dovecot-ldap.conf.ext
Copy to Clipboard Copied!
次のステップ
1.2.5. Dovecot 設定の完了
Dovecot をインストールして設定したら、firewalld
サービスで必要なポートを開き、サービスを有効にして開始します。その後、サーバーをテストできます。
前提条件
以下は Dovecot で設定されています。
- TLS 暗号化
- 認証バックエンド
- クライアントは認証局 (CA) 証明書を信頼します。
手順
IMAP または POP3 サービスのみをユーザーに提供する場合は、
/etc/dovecot/dovecot.conf
ファイルのprotocol
パラメーターをコメント解除し、必要なプロトコルに設定します。たとえば、POP3 を必要としない場合は、次のように設定します。protocols = imap lmtp
protocols = imap lmtp
Copy to Clipboard Copied! デフォルトでは、
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
# firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 # firewall-cmd --reload
Copy to Clipboard Copied! dovecot
サービスを有効にして開始します。systemctl enable --now dovecot
# systemctl enable --now dovecot
Copy to Clipboard Copied!
検証
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
# doveconf -n
Copy to Clipboard Copied!
1.3. MariaDB SQL 認証を使用した Dovecot サーバーのセットアップ
ユーザーとパスワードを MariaDB SQL サーバーに保存する場合、それをユーザーデータベースと認証バックエンドとして使用するように、Dovecot を設定できます。この設定では、アカウントをデータベースで集中管理するため、ユーザーは Dovecot サーバー上のファイルシステムにローカルアクセスできません。
複数の Dovecot サーバーをレプリケーションでセットアップして、メールボックスを高可用性にする予定がある場合にも、集中管理されたアカウントは利点があります。
1.3.1. Dovecot のインストール
dovecot
パッケージは以下を提供します。
-
dovecot
サービスとそれを管理するユーティリティー - Dovecot がオンデマンドで開始するサービス (認証など)
- サーバーサイドメールフィルタリングなどのプラグイン
-
/etc/dovecot/
ディレクトリーの設定ファイル -
/usr/share/doc/dovecot/
ディレクトリーのドキュメント
手順
dovecot
パッケージをインストールします。dnf install dovecot
# dnf install dovecot
Copy to Clipboard Copied! 注記Dovecot がすでにインストールされていて、クリーンな設定ファイルが必要な場合は、
/etc/dovecot/
ディレクトリーを名前変更するか削除してください。その後、パッケージを再インストールします。設定ファイルを削除しないと、dnf reinstall dovecot
コマンドは/etc/dovecot/
内の設定ファイルをリセットしません。
次のステップ
1.3.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) と一致します。 - 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
# chown root:root /etc/pki/dovecot/private/server.example.com.key # chmod 600 /etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! Diffie-Hellman パラメーターを使用してファイルを生成します。
openssl dhparam -out /etc/dovecot/dh.pem 4096
# openssl dhparam -out /etc/dovecot/dh.pem 4096
Copy to Clipboard Copied! サーバーのハードウェアとエントロピーによっては、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_cert = </etc/pki/dovecot/certs/server.example.com.crt ssl_key = </etc/pki/dovecot/private/server.example.com.key
Copy to Clipboard Copied! ssl_ca
パラメーターをコメント解除し、CA 証明書へのパスを使用するように設定します。ssl_ca = </etc/pki/dovecot/certs/ca.crt
ssl_ca = </etc/pki/dovecot/certs/ca.crt
Copy to Clipboard Copied! ssl_dh
パラメーターをコメント解除し、Diffie-Hellman パラメーターファイルへのパスを使用するように設定します。ssl_dh = </etc/dovecot/dh.pem
ssl_dh = </etc/dovecot/dh.pem
Copy to Clipboard Copied!
重要Dovecot がファイルからパラメーターの値を確実に読み取るようにするには、パスの先頭に
<
文字を付ける必要があります。
次のステップ
1.3.3. 仮想ユーザーを使用するための Dovecot の準備
デフォルトでは、Dovecot はサービスを使用するユーザーとして、ファイルシステム上で多くのアクションを実行します。ただし、1 人のローカルユーザーを使用してこれらのアクションを実行するように Dovecot バックエンドを設定すると、複数の利点があります。
- Dovecot は、ユーザーの ID (UID) を使用する代わりに、特定のローカルユーザーとしてファイルシステムアクションを実行します。
- ユーザーは、サーバー上でローカルに利用できる必要はありません。
- すべてのメールボックスとユーザー固有のファイルを 1 つのルートディレクトリーに保存できます。
- ユーザーは UID とグループ ID (GID) を必要としないため、管理作業が軽減されます。
- サーバー上のファイルシステムにアクセスできるユーザーは、これらのファイルにアクセスできないため、メールボックスやインデックスを危険にさらす可能性はありません。
- レプリケーションのセットアップはより簡単です。
前提条件
- Dovecot がインストールされています。
手順
vmail
ユーザーを作成します。useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
# useradd --home-dir /var/mail/ --shell /usr/sbin/nologin vmail
Copy to Clipboard Copied! Dovecot は後でこのユーザーを使用してメールボックスを管理します。セキュリティー上の理由から、この目的で
dovecot
またはdovenull
システムユーザーを使用しないでください。/var/mail/
以外のパスを使用する場合は、それに SELinux コンテキストmail_spool_t
を設定します。例:semanage fcontext -a -t mail_spool_t "<path>(/.)?"* restorecon -Rv <path>
# semanage fcontext -a -t mail_spool_t "<path>(/.)?"* # restorecon -Rv <path>
Copy to Clipboard Copied! /var/mail/
への書き込み権限をvmail
ユーザーにのみ付与します。chown vmail:vmail /var/mail/ chmod 700 /var/mail/
# chown vmail:vmail /var/mail/ # chmod 700 /var/mail/
Copy to Clipboard Copied! /etc/dovecot/conf.d/10-mail.conf
ファイルのmail_location
パラメーターをコメント解除し、メールボックスの形式と場所を設定します。mail_location = sdbox:/var/mail/%n/
mail_location = sdbox:/var/mail/%n/
Copy to Clipboard Copied! この設定の場合:
-
Dovecot は、
single
モードで高パフォーマンスのdbox
メールボックス形式を使用します。このモードでは、サービスは、maildir
形式と同様に、各メールを個別のファイルに保存します。 -
Dovecot はパス内の
%n
変数をユーザー名に解決します。これは、各ユーザーがメールボックス用に個別のディレクトリーを持つようにするために必要です。
-
Dovecot は、
1.3.4. Dovecot 認証バックエンドとして MariaDB SQL データベースを使用する
Dovecot は、MariaDB データベースからアカウントとパスワードを読み取り、これを使用して、ユーザーが IMAP または POP3 サービスにログインする場合、ユーザーを認証できます。この認証方法の利点は次のとおりです。
- 管理者は、データベースでユーザーを集中管理できます。
- ユーザーはサーバー上でローカルにアクセスできません。
前提条件
- 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
# dnf install dovecot-mysql
Copy to Clipboard Copied! /etc/dovecot/conf.d/10-auth.conf
ファイルで認証バックエンドを設定します。不要な
auth-*.conf.ext
認証バックエンド設定ファイルのinclude
ステートメントをコメントアウトします。次に例を示します。#!include auth-system.conf.ext
#!include auth-system.conf.ext
Copy to Clipboard Copied! 次の行をコメント解除して、SQL 認証を有効にします。
!include auth-sql.conf.ext
!include auth-sql.conf.ext
Copy to Clipboard Copied!
/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/ }
userdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext override_fields = uid=vmail gid=vmail home=/var/mail/%n/ }
Copy to Clipboard Copied! 固定値のため、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;
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;
Copy to Clipboard Copied! データベースサーバーに対して TLS 暗号化を使用するには、
ssl_ca
オプションに MariaDB サーバー証明書を発行した CA の証明書のパスを設定します。証明書の検証を機能させるには、MariaDB サーバーのホスト名が TLS 証明書で使用されているホスト名と一致する必要があります。データベースのパスワード値に
{<pw-storage-scheme>}
接頭辞が含まれている場合は、default_pass_scheme
設定を省略できます。ファイル内のクエリーは、次のように設定する必要があります。
-
user_query
パラメーターの場合、クエリーは Dovecot ユーザーのユーザー名を返す必要があります。また、クエリーは 1 つの結果のみを返す必要があります。 -
password_query
パラメーターの場合、クエリーはユーザー名とパスワードを返す必要があり、Dovecot はuser
およびpassword
変数でこれらの値を使用する必要があります。したがって、データベースが異なる列名を使用している場合は、AS
SQL コマンドを使用して、結果の列の名前を変更してください。 -
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
# chown root:root /etc/dovecot/dovecot-sql.conf.ext # chmod 600 /etc/dovecot/dovecot-sql.conf.ext
Copy to Clipboard Copied!
次のステップ
1.3.5. Dovecot 設定の完了
Dovecot をインストールして設定したら、firewalld
サービスで必要なポートを開き、サービスを有効にして開始します。その後、サーバーをテストできます。
前提条件
以下は Dovecot で設定されています。
- TLS 暗号化
- 認証バックエンド
- クライアントは認証局 (CA) 証明書を信頼します。
手順
IMAP または POP3 サービスのみをユーザーに提供する場合は、
/etc/dovecot/dovecot.conf
ファイルのprotocol
パラメーターをコメント解除し、必要なプロトコルに設定します。たとえば、POP3 を必要としない場合は、次のように設定します。protocols = imap lmtp
protocols = imap lmtp
Copy to Clipboard Copied! デフォルトでは、
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
# firewall-cmd --permanent --add-service=imaps --add-service=imap --add-service=pop3s --add-service=pop3 # firewall-cmd --reload
Copy to Clipboard Copied! dovecot
サービスを有効にして開始します。systemctl enable --now dovecot
# systemctl enable --now dovecot
Copy to Clipboard Copied!
検証
Dovecot に接続してメールを読むには、Mozilla Thunderbird などのメールクライアントを使用します。メールクライアントの設定は、使用するプロトコルによって異なります。
表1.3 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
# doveconf -n
Copy to Clipboard Copied!
1.4. 2 つの Dovecot サーバー間のレプリケーションの設定
双方向のレプリケーションを使用すると、Dovecot サーバーを高可用性にすることができ、IMAP および POP3 クライアントは両方のサーバーのメールボックスにアクセスできます。Dovecot は、各メールボックスのインデックスログの変更を追跡し、競合を安全な方法で解決します。
両方の複製パートナーでこの手順を実行します。
レプリケーションは、サーバーペア間でのみ機能します。したがって、大規模なクラスターでは、複数の独立したバックエンドペアが必要になります。
前提条件
- 両方のサーバーが同じ認証バックエンドを使用します。できれば、LDAP または SQL を使用して、アカウントを集中管理してください。
-
Dovecot ユーザーデータベース設定は、ユーザーリストをサポートします。これを確認するには、
doveadm user '*'
コマンドを使用します。 -
Dovecot は、ユーザー ID (UID) ではなく、
vmail
ユーザーとしてファイルシステム上のメールボックスにアクセスします。
手順
/etc/dovecot/conf.d/10-replication.conf
ファイルを作成し、その中で次の手順を実行します。notify
およびreplication
プラグインを有効にします。mail_plugins = $mail_plugins notify replication
mail_plugins = $mail_plugins notify replication
Copy to Clipboard Copied! service replicator
セクションを追加します。service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 user = vmail } }
service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 user = vmail } }
Copy to Clipboard Copied! これらの設定により、
dovecot
サービスの開始時に、Dovecot は 1 つ以上のレプリケータープロセスを開始します。さらに、このセクションはreplicator-doveadm
ソケットの設定を定義します。service aggregator
セクションを追加して、replication-notify-fifo
パイプとreplication-notify
ソケットを設定します。service aggregator { fifo_listener replication-notify-fifo { user = vmail } unix_listener replication-notify { user = vmail } }
service aggregator { fifo_listener replication-notify-fifo { user = vmail } unix_listener replication-notify { user = vmail } }
Copy to Clipboard Copied! service doveadm
セクションを追加して、レプリケーションサービスのポートを定義します。service doveadm { inet_listener { port = 12345 } }
service doveadm { inet_listener { port = 12345 } }
Copy to Clipboard Copied! doveadm
レプリケーションサービスのパスワードを設定します。doveadm_password = <replication_password>
doveadm_password = <replication_password>
Copy to Clipboard Copied! パスワードは、両方のサーバーで同じにする必要があります。
レプリケーションパートナーを設定します。
plugin { mail_replica = tcp:server2.example.com:12345 }
plugin { mail_replica = tcp:server2.example.com:12345 }
Copy to Clipboard Copied! オプション: 並列
dsync
プロセスの最大数を定義します。replication_max_conns = 20
replication_max_conns = 20
Copy to Clipboard Copied! replication_max_conns
のデフォルト値は10
です。
/etc/dovecot/conf.d/10-replication.conf
ファイルにセキュアな権限を設定します。chown root:root /etc/dovecot/conf.d/10-replication.conf chmod 600 /etc/dovecot/conf.d/10-replication.conf
# chown root:root /etc/dovecot/conf.d/10-replication.conf # chmod 600 /etc/dovecot/conf.d/10-replication.conf
Copy to Clipboard Copied! Dovecot が
doveadm
レプリケーションポートを開くことができるように、SELinux ブール値nis_enabled
を有効にします。setsebool -P nis_enabled on
# setsebool -P nis_enabled on
Copy to Clipboard Copied! レプリケーションパートナーのみがレプリケーションポートにアクセスできるように、
firewalld
ルールを設定します。次に例を示します。firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" firewall-cmd --reload
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" # firewall-cmd --reload
Copy to Clipboard Copied! IPv4 アドレスのサブネットマスク
/32
と IPv6 アドレスのサブネットマスク/128
は、指定されたアドレスへのアクセスを制限します。- この手順は、他のレプリケーションパートナーでも実行します。
Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied!
検証
- 1 つのサーバーのメールボックスでアクションを実行し、Dovecot が変更を他のサーバーにレプリケートしたかどうかを確認します。
レプリケーターステータスを表示します。
doveadm replicator status
# doveadm replicator status Queued 'sync' requests 0 Queued 'high' requests 0 Queued 'low' requests 0 Queued 'failed' requests 0 Queued 'full resync' requests 30 Waiting 'failed' requests 0 Total number of known users 75
Copy to Clipboard Copied! 特定のユーザーのレプリケーターステータスを表示します。
doveadm replicator status <user_name>
# doveadm replicator status <user_name> username priority fast sync full sync success sync failed <user_user> none 02:05:28 04:19:07 02:05:28 -
Copy to Clipboard Copied!
1.5. ユーザーを IMAP メールボックスに自動的に登録する
通常、IMAP サーバー管理者は、Dovecot が Sent
や Trash
などの特定のメールボックスを自動的に作成し、ユーザーをそれらに登録することを望んでいます。これは設定ファイルに設定できます。
さらに、特殊用途のメールボックス を定義できます。多くの場合、IMAP クライアントは、メールの送信など、特別な目的のためにメールボックスを定義することをサポートしています。ユーザーが正しいメールボックスを手動で選択して設定する必要がないようにするために、IMAP サーバーは IMAP LIST
コマンドで special-use
属性を送信できます。その後、クライアントはこの属性を使用して、送信済みメールのメールボックスなどを識別および設定できます。
前提条件
- Dovecot が設定されている。
手順
/etc/dovecot/conf.d/15-mailboxes.conf
ファイルのinbox
namespace セクションを更新します。auto = subscribe
設定を、ユーザーが利用できるようにする必要がある各特殊用途のメールボックスに追加します。次に例を示します。namespace inbox { ... mailbox Drafts { special_use = \Drafts auto = subscribe } mailbox Junk { special_use = \Junk auto = subscribe } mailbox Trash { special_use = \Trash auto = subscribe } mailbox Sent { special_use = \Sent auto = subscribe } ... }
namespace inbox { ... mailbox Drafts { special_use = \Drafts auto = subscribe } mailbox Junk { special_use = \Junk auto = subscribe } mailbox Trash { special_use = \Trash auto = subscribe } mailbox Sent { special_use = \Sent auto = subscribe } ... }
Copy to Clipboard Copied! メールクライアントがより特殊用途のメールボックスをサポートしている場合は、同様のエントリーを追加できます。
special_use
パラメーターは、Dovecot がspecial-use
属性でクライアントに送信する値を定義します。オプション: 特別な目的のない他のメールボックスを定義する場合は、ユーザーの受信トレイにそれらの
mailbox
セクションを追加します。次に例を示します。namespace inbox { ... mailbox "Important Emails" { auto = <value> } ... }
namespace inbox { ... mailbox "Important Emails" { auto = <value> } ... }
Copy to Clipboard Copied! auto
パラメーターは、次のいずれかの値に設定できます。-
subscribe
: メールボックスを自動的に作成し、ユーザーを登録します。 -
create
: ユーザーを登録せずに、メールボックスを自動的に作成します。 -
no
(デフォルト): Dovecot はメールボックスを作成することも、ユーザーを登録することもしません。
-
Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied!
検証
IMAP クライアントを使用してメールボックスにアクセスします。
auto = subscribe
が設定されたメールボックスは、自動的に表示されます。クライアントが特殊用途のメールボックスと定義された目的をサポートしている場合、クライアントはそれらを自動的に使用します。
1.6. LMTP ソケットと LMTPS リスナーの設定
Postfix などの SMTP サーバーは、Local Mail Transfer Protocol (LMTP) を使用してメールを Dovecot に配信します。SMTP サーバーが実行されている場合:
- Dovecot と同じホストで、LMTP ソケットを使用します。
別のホストで、LMTP サービスを使用する
デフォルトでは、LMTP プロトコルは暗号化されていません。ただし、TLS 暗号化を設定した場合、Dovecot は LMTP サービスに同じ設定を自動的に使用します。その後、SMTP サーバーは、LMTPS プロトコルまたは LMTP 上の
STARTTLS
コマンドを使用して接続できます。
前提条件
- Dovecot がインストールされています。
- LMTP サービスを設定する場合、Dovecot で TLS 暗号化が設定されます。
手順
LMTP プロトコルが有効になっていることを確認します。
doveconf -a | grep -E "^protocols"
# doveconf -a | grep -E "^protocols" protocols = imap pop3 lmtp
Copy to Clipboard Copied! 出力に
lmtp
が含まれている場合、プロトコルは有効になっています。lmtp
プロトコルが無効になっている場合は、/etc/dovecot/dovecot.conf
ファイルを編集し、protocols
パラメーターの値にlmtp
を追加します。protocols = ... lmtp
protocols = ... lmtp
Copy to Clipboard Copied! LMTP ソケットまたはサービスが必要かどうかに応じて、
/etc/dovecot/conf.d/10-master.conf
ファイルのservice lmtp
セクションで次の変更を行います。LMTP ソケット: デフォルトでは、Dovecot は自動的に
/var/run/dovecot/lmtp
ソケットを作成します。オプション: 所有権と権限をカスタマイズします。
service lmtp { ... unix_listener lmtp { mode = 0600 user = postfix group = postfix } ... }
service lmtp { ... unix_listener lmtp { mode = 0600 user = postfix group = postfix } ... }
Copy to Clipboard Copied! LMTP サービス:
inet_listener
サブセクションを追加します。service lmtp { ... inet_listener lmtp { port = 24 } ... }
service lmtp { ... inet_listener lmtp { port = 24 } ... }
Copy to Clipboard Copied!
SMTP サーバーのみが LMTP ポートにアクセスできるように、
firewalld
ルールを設定します。次に例を示します。firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="24" accept" firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="24" accept" firewall-cmd --reload
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="24" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="24" accept" # firewall-cmd --reload
Copy to Clipboard Copied! IPv4 アドレスのサブネットマスク
/32
と IPv6 アドレスのサブネットマスク/128
は、指定されたアドレスへのアクセスを制限します。Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied!
検証
LMTP ソケットを設定した場合は、Dovecot がソケットを作成したことと、権限が正しいことを確認します。
ls -l /var/run/dovecot/lmtp
# ls -l /var/run/dovecot/lmtp srw-------. 1 postfix postfix 0 Nov 22 17:17 /var/run/dovecot/lmtp
Copy to Clipboard Copied! LMTP ソケットまたはサービスを使用して、Dovecot にメールを送信するように、SMTP サーバーを設定します。
LMTP サービスを使用する場合は、SMTP サーバーが LMTPS プロトコルを使用するか、
STARTTLS
コマンドを送信して暗号化された接続を使用するようにしてください。
1.7. Dovecot で IMAP または POP3 サービスを無効にする
デフォルトでは、Dovecot は IMAP および POP3 サービスを提供します。そのうちの 1 つだけが必要な場合は、もう 1 つを無効にして、攻撃サーフェスを減らすことができます。
前提条件
- Dovecot がインストールされています。
手順
/etc/dovecot/dovecot.conf
ファイルのprotocols
パラメーターをコメント解除し、必要なプロトコルを使用するように設定します。たとえば、POP3 を必要としない場合は、次のように設定します。protocols = imap lmtp
protocols = imap lmtp
Copy to Clipboard Copied! デフォルトでは、
imap
、pop3
、およびlmtp
プロトコルが有効になっています。Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied! ローカルファイアウォールで不要になったポートを閉じます。たとえば、POP3S および POP3 プロトコルのポートを閉じるには、次のように入力します。
firewall-cmd --remove-service=pop3s --remove-service=pop3 firewall-cmd --reload
# firewall-cmd --remove-service=pop3s --remove-service=pop3 # firewall-cmd --reload
Copy to Clipboard Copied!
検証
dovecot
プロセスによって開かれたLISTEN
モードのすべてのポートを表示します。ss -tulp | grep dovecot
# ss -tulp | grep dovecot tcp LISTEN 0 100 0.0.0.0:993 0.0.0.0:* users:(("dovecot",pid=1405,fd=44)) tcp LISTEN 0 100 0.0.0.0:143 0.0.0.0:* users:(("dovecot",pid=1405,fd=42)) tcp LISTEN 0 100 [::]:993 [::]:* users:(("dovecot",pid=1405,fd=45)) tcp LISTEN 0 100 [::]:143 [::]:* users:(("dovecot",pid=1405,fd=43))
Copy to Clipboard Copied! この例では、Dovecot は TCP ポート
993
(IMAPS) と143
(IMAP) のみをリッスンします。ソケットを使用する代わりにポートをリッスンするようにサービスを設定した場合、Dovecot は LMTP プロトコルのポートのみを開くことに注意してください。
1.8. Dovecot IMAP サーバーで Sieve を使用してサーバーサイドメールフィルタリングを有効にする
ManageSieve プロトコルを使用して、Sieve スクリプトをサーバーにアップロードできます。Sieve スクリプトは、受信メールに対してサーバーが検証して実行するルールとアクションを定義します。たとえば、ユーザーは Sieve を使用して特定の送信者からのメールを転送でき、管理者はグローバルフィルターを作成して、スパムフィルターによってフラグが付けられたメールを別の IMAP フォルダーに移動できます。
ManageSieve
プラグインは、Sieve スクリプトと ManageSieve プロトコルのサポートを Dovecot IMAP サーバーに追加します。
TLS 接続を介した ManageSieve プロトコルの使用をサポートするクライアントのみを使用してください。このプロトコルの TLS を無効にすると、クライアントはネットワーク経由で認証情報をプレーンテキストで送信します。
前提条件
- Dovecot が設定され、IMAP メールボックスを提供します。
- TLS 暗号化は Dovecot で設定されます。
- メールクライアントは、TLS 接続を介して ManageSieve プロトコルをサポートします。
手順
dovecot-pigeonhole
パッケージをインストールします。dnf install dovecot-pigeonhole
# dnf install dovecot-pigeonhole
Copy to Clipboard Copied! /etc/dovecot/conf.d/20-managesieve.conf
の次の行をコメント解除して、sieve
プロトコルを有効にします。protocols = $protocols sieve
protocols = $protocols sieve
Copy to Clipboard Copied! この設定により、すでに有効になっている他のプロトコルに加えて、Sieve が有効になります。
firewalld
で ManageSieve ポートを開きます。firewall-cmd --permanent --add-service=managesieve firewall-cmd --reload
# firewall-cmd --permanent --add-service=managesieve # firewall-cmd --reload
Copy to Clipboard Copied! Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied!
検証
クライアントを使用し、Sieve スクリプトをアップロードします。次の接続設定を使用します。
- ポート: 4190
- 接続セキュリティー: SSL/TLS
- 認証方法: PLAIN
- Sieve スクリプトをアップロードしたユーザーにメールを送信します。メールがスクリプトのルールと一致する場合は、サーバーが定義されたアクションを実行することを確認します。
1.9. Dovecot が設定ファイルを処理する方法
dovecot
パッケージは、メインの設定ファイル /etc/dovecot/dovecot.conf
、および /etc/dovecot/conf.d/
ディレクトリー内の複数の設定ファイルを提供します。Dovecot は、サービスの開始時にファイルを組み合わせて設定を構築します。
複数の設定ファイルの主な利点は、設定をグループ化し、読みやすくすることです。単一の設定ファイルを使用する場合は、代わりに /etc/dovecot/dovecot.conf
ですべての設定を維持し、そのファイルからすべての include
および include_try
ステートメントを削除できます。
第2章 Postfix SMTP サーバーのデプロイと設定
システム管理者は、Postfix などのメール転送エージェント (MTA) を使用してメールインフラストラクチャーを設定し、SMTP プロトコルを使用してホスト間でメールメッセージを転送できます。Postfix は、メールのルーティングと配信を行うサーバー側アプリケーションです。Postfix を使用して、ローカルメールサーバーの設定、null クライアントメールリレーの作成、複数のドメインの宛先としての Postfix サーバーの使用、検索用ファイルに代わる LDAP ディレクトリーの選択を行うことができます。
postfix
パッケージは、/etc/postfix/
ディレクトリーに複数の設定ファイルを提供します。
メールインフラストラクチャーを設定するには、次の設定ファイルを使用します。
-
main.cf
: Postfix のグローバル設定が含まれています。 -
master.cf
: メール配信を実現するために、さまざまなプロセスとの Postfix の対話を指定します。 -
access
: Postfix に接続できるホストなどのアクセスルールを指定します。 -
transport
: メールアドレスをリレーホストにマッピングします。 -
aliases
: ユーザー ID エイリアスを説明するメールプロトコルで必要な設定可能な一覧が含まれます。このファイルは、/etc/
ディレクトリーにあることに留意してください。
Postfix の主な機能:
- 一般的なメール関連の脅威から保護するためのセキュリティー機能
- 仮想ドメインおよびエイリアスのサポートを含むカスタマイズオプション
2.1. Postfix SMTP サーバーのインストールおよび設定
メールメッセージを受信、保存、配信するように Postfix SMTP サーバーを設定できます。システムのインストール時にメールサーバーパッケージが選択されていない場合、Postfix はデフォルトで利用できません。Postfix をインストールするには、以下の手順を実行します。
前提条件
- root アクセスがある。
- システムの登録
手順
Sendmail ユーティリティーを削除します。
dnf remove sendmail
# dnf remove sendmail
Copy to Clipboard Copied! Postfix をインストールします。
dnf install postfix
# dnf install postfix
Copy to Clipboard Copied! Postfix を設定するには、
/etc/postfix/main.cf
ファイルを編集し、以下の変更を加えます。デフォルトでは、Postfix は
loopback
インターフェイスでのみメールを受信します。特定のインターフェイスをリッスンするように Postfix を設定するには、inet_interfaces
パラメーターをこれらのインターフェイスの IP アドレスに更新します。inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]
inet_interfaces = 127.0.0.1/32, [::1]/128, 192.0.2.1, [2001:db8:1::1]
Copy to Clipboard Copied! すべてのインターフェイスをリッスンするように Postfix を設定するには、以下を設定します。
inet_interfaces = all
inet_interfaces = all
Copy to Clipboard Copied! gethostname()
関数によって返される完全修飾ドメイン名 (FQDN) とは異なるホスト名を Postfix が使用するようにしたい場合は、myhostname
パラメーターを追加します。myhostname = smtp.example.com
myhostname = smtp.example.com
Copy to Clipboard Copied! たとえば、Postfix はこのホスト名を、処理するメールのヘッダーに追加します。
ドメイン名が
myhostname
パラメーターのものと異なる場合は、mydomain
パラメーターを追加します。mydomain = example.com
mydomain = example.com
Copy to Clipboard Copied! myorigin
パラメーターを追加し、mydomain
の値に設定します。myorigin = $mydomain
myorigin = $mydomain
Copy to Clipboard Copied! この設定では、Postfix はホスト名ではなく、ローカルで投稿されたメールの発信元としてドメイン名を使用します。
mynetworks
パラメーターを追加し、メールの送信が許可される信頼できるネットワークの IP 範囲を定義します。mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
mynetworks = 127.0.0.1/32, [::1]/128, 192.0.2.1/24, [2001:db8:1::1]/64
Copy to Clipboard Copied! インターネットなどの信頼できないネットワークのクライアントがこのサーバー経由でメールを送信できるようにするには、後のステップでリレー制限を設定する必要があります。
main.cf
ファイルの Postfix 設定が正しいか確認します。postfix check
# postfix check
Copy to Clipboard Copied! postfix
サービスが起動時に開始できるように有効化し、開始します。systemctl enable --now postfix
# systemctl enable --now postfix
Copy to Clipboard Copied! SMTP トラフィックがファイアウォールを通過することを許可し、ファイアウォールルールをリロードします。
firewall-cmd --permanent --add-service smtp firewall-cmd --reload
# firewall-cmd --permanent --add-service smtp # firewall-cmd --reload
Copy to Clipboard Copied!
検証
postfix
サービスが実行していることを確認します。systemctl status postfix
# systemctl status postfix
Copy to Clipboard Copied! オプション: 出力が停止し、待機中、またはサービスが実行されていない場合は、
postfix
サービスを再起動します。systemctl restart postfix
# systemctl restart postfix
Copy to Clipboard Copied! オプション:
/etc/postfix/
ディレクトリーの設定ファイル内のオプションを変更した後、postfix
サービスをリロードして、これらの変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
システム上のローカルユーザー間のメール通信を確認します。
echo "This is a test message" | mail -s <subject> <user@mydomain.com>
# echo "This is a test message" | mail -s <subject> <user@mydomain.com>
Copy to Clipboard Copied! メールサーバーが外部 IP 範囲からのメールを外部ドメインに中継していないことを確認するには、以下の手順に従います。
-
mynetworks
で定義したサブネット内にないクライアントにログインします。 - メールサーバーを使用するようにクライアントを設定します。
-
メールサーバーの
mydomain
で指定したドメイン以外のメールアドレスにメールを送信してみます。たとえば、non-existing-user@redhat.com
にメールを送信してみます。 /var/log/maillog
ファイルを確認します。554 Relay access denied - the server is not going to relay. 250 OK or similar - the server is going to relay.
554 Relay access denied - the server is not going to relay. 250 OK or similar - the server is going to relay.
Copy to Clipboard Copied!
-
トラブルシューティング
-
エラーが発生した場合は、
/var/log/maillog
を確認してください。
2.2. Postfix サーバーの TLS 設定のカスタマイズ
メールトラフィックを暗号化してよりセキュアにするために、自己署名証明書の代わりに、信頼できる認証局 (CA) からの証明書を使用し、Transport Layer Security (TLS) セキュリティー設定をカスタマイズするように Postfix を設定できます。デフォルトでは、Postfix サーバーで TLS 暗号化プロトコルが有効になっています。基本的な Postfix TLS 設定には、受信 SMTP 用の自己署名証明書と、発信 SMTP の日和見 TLS が含まれています。
前提条件
- root アクセスがある。
-
サーバーに
postfix
パッケージがインストールされている。 - 信頼できる認証局 (CA) によって署名された証明書と秘密鍵を持っている。
以下のファイルを Postfix サーバーにコピーしている。
-
サーバー証明書:
/etc/pki/tls/certs/postfix.pem
-
秘密鍵:
/etc/pki/tls/private/postfix.key
-
サーバー証明書:
- FIPS モードが有効になっている場合、クライアントは Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューション TLS extension "Extended Master Secret" enforced を参照してください。
手順
以下の行を
/etc/postfix/main.cf
ファイルに追加して、Postfix が実行されているサーバー上の証明書と秘密鍵ファイルへのパスを設定します。smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
smtpd_tls_cert_file = /etc/pki/tls/certs/postfix.pem smtpd_tls_key_file = /etc/pki/tls/private/postfix.key
Copy to Clipboard Copied! /etc/postfix/main.cf
ファイルを編集して、受信した SMTP 接続を認証されたユーザーのみに制限します。smtpd_tls_auth_only = yes
smtpd_tls_auth_only = yes
Copy to Clipboard Copied! postfix
サービスをリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
TLS 暗号化を使用してメールを送信するようにクライアントを設定します。
注記Postfix クライアント TLS アクティビティーに関する追加情報を取得するには、
/etc/postfix/main.cf
の次の行を変更して、ログレベルを0
から1
に増やします。smtp_tls_loglevel = 1
smtp_tls_loglevel = 1
Copy to Clipboard Copied!
2.3. すべてのメールをメールリレーに転送するように Postfix を設定する
すべてのメールをメールリレーに転送する場合は、Postfix サーバーを Null クライアントとして設定できます。この設定では、Postfix はメールを別のメールサーバーに転送するだけで、メールの受信はできません。
前提条件
- root アクセスがある。
-
サーバーに
postfix
パッケージがインストールされている。 - メールを転送するリレーホストの IP アドレスまたはホスト名がある。
手順
Postfix がローカルのメール配信を受け入れ、それが Null クライアントになるのを防ぐには、
/etc/postfix/main.cf
ファイルを編集し、以下の変更を加えます。mydestination
パラメーターを空の値に等しくなるように設定して、すべてのメールを転送するように Postfix を設定します。mydestination =
mydestination =
Copy to Clipboard Copied! この設定では、Postfix サーバーはメールの宛先ではなく、null クライアントとして機能します。
Null クライアントからメールを受信するメールリレーサーバーを指定します。
relayhost = [<ip_address_or_hostname>]
relayhost = [<ip_address_or_hostname>]
Copy to Clipboard Copied! リレーホストはメール配信を行います。
<ip_address_or_hostname>
を角括弧で囲みます。メールを配信するために、ループバックインターフェイスでのみリッスンするように Postfix メールサーバーを設定します。
inet_interfaces = loopback-only
inet_interfaces = loopback-only
Copy to Clipboard Copied! Postfix がすべての送信メールの送信者ドメインをリレーメールサーバーの企業ドメインに書き換えるには、以下を設定します。
myorigin = relay.example.com
myorigin = relay.example.com
Copy to Clipboard Copied! ローカルメール配信を無効にするには、設定ファイルの最後に次のディレクティブを追加します。
local_transport = error: local delivery disabled
local_transport = error: local delivery disabled
Copy to Clipboard Copied! mynetworks
パラメーターを追加して、Postfix が 127.0.0.0/8 IPv4 ネットワークと [::1]/128 IPv6 ネットワークから送信されたローカルシステムからのメールをメールリレーサーバーに転送するようにします。mynetworks = 127.0.0.0/8, [::1]/128
mynetworks = 127.0.0.0/8, [::1]/128
Copy to Clipboard Copied!
main.cf
ファイルの Postfix 設定が正しいか確認します。postfix check
# postfix check
Copy to Clipboard Copied! postfix
サービスを再起動して変更を適用します。systemctl restart postfix
# systemctl restart postfix
Copy to Clipboard Copied!
検証
メール通信がメールリレーに転送されていることを確認します。
echo "This is a test message" | mail -s <subject> <user@example.com>
# echo "This is a test message" | mail -s <subject> <user@example.com>
Copy to Clipboard Copied!
トラブルシューティング
-
エラーが発生した場合は、
/var/log/maillog
を確認してください。
2.4. Postfix を複数のドメインの宛先として設定する
Postfix を、複数のドメインのメールを受信できるメールサーバーとして設定できます。この設定では、Postfix は、指定されたドメイン内のアドレスに送信されたメールの最終宛先として機能します。以下を設定できます。
- 同じメール宛先を指す複数のメールアドレスを設定する。
- 複数のドメインの受信メールを同じ Postfix サーバーにルーティングする。
前提条件
- root アクセスがある。
- Postfix サーバーを設定している。
手順
/etc/postfix/virtual
仮想エイリアスファイルで、各ドメインのメールアドレスを指定します。各メールアドレスを新しい行に追加します。<info@example.com> <user22@example.net> <sales@example.com> <user11@example.org>
<info@example.com> <user22@example.net> <sales@example.com> <user11@example.org>
Copy to Clipboard Copied! この例では、Postfix は info@example.com に送信されたすべてのメールを user22@example.net にリダイレクトし、sales@example.com に送信されたメールを user11@example.org にリダイレクトします。
仮想エイリアスマップのハッシュファイルを作成します。
postmap /etc/postfix/virtual
# postmap /etc/postfix/virtual
Copy to Clipboard Copied! このコマンドは、
/etc/postfix/virtual.db
ファイルを作成します。/etc/postfix/virtual
ファイルを更新した後に、このコマンドを常に再実行する必要があります。Postfix
/etc/postfix/main.cf
設定ファイルで、virtual_alias_maps
パラメーターを追加して、ハッシュファイルを指すようにします。virtual_alias_maps = hash:/etc/postfix/virtual
virtual_alias_maps = hash:/etc/postfix/virtual
Copy to Clipboard Copied! postfix
サービスをリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
- 仮想メールアドレスの 1 つにメールを送信して、設定をテストします。
トラブルシューティング
-
エラーが発生した場合は、
/var/log/maillog
を確認してください。
2.5. LDAP ディレクトリーの検索テーブルとしての使用
Lightweight Directory Access Protocol (LDAP) サーバーを使用してアカウント、ドメイン、またはエイリアスを保存する場合は、LDAP サーバーを検索テーブルとして使用するように Postfix を設定できます。検索用ファイルの代わりに LDAP を使用すると、中央データベースを使用できます。
前提条件
- root アクセスがある。
-
サーバーに
postfix
パッケージがインストールされている。 - 必要なスキーマおよびユーザークレデンシャルを持つ LDAP サーバーがある。
-
Postfix を実行しているサーバーに
postfix-ldap
プラグインがインストールされている。
手順
以下の内容で
/etc/postfix/ldap-aliases.cf
ファイルを作成して、LDAP 検索パラメーターを設定します。LDAP サーバーのホスト名を指定します。
server_host = ldap.example.com
server_host = ldap.example.com
Copy to Clipboard Copied! LDAP 検索のベースドメイン名を指定します。
search_base = dc=example,dc=com
search_base = dc=example,dc=com
Copy to Clipboard Copied! -
オプション: 要件に応じて LDAP 検索フィルターと属性をカスタマイズします。ディレクトリーを検索するフィルターのデフォルトは
query_filter = mailacceptinggeneralid=%s
です。
以下の内容を追加して、LDAP ソースを
/etc/postfix/main.cf
設定ファイルの検索テーブルとして有効にします。virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf
virtual_alias_maps = ldap:/etc/postfix/ldap-aliases.cf
Copy to Clipboard Copied! postmap
コマンドを実行して LDAP 設定を確認します。これは、構文エラーまたは接続の問題をチェックします。postmap -q @example.com ldap:/etc/postfix/ldap-aliases.cf
# postmap -q @example.com ldap:/etc/postfix/ldap-aliases.cf
Copy to Clipboard Copied! postfix
サービスをリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
-
テストメールを送信して、LDAP 検索が正しく機能していることを確認します。
/var/log/maillog
のメールログでエラーがないか確認します。
2.6. 認証されたユーザーのリレーを行う送信メールサーバーとしての Postfix の設定
認証されたユーザーのメールをリレーするように Postfix を設定できます。このシナリオでは、SMTP 認証、TLS 暗号化、および送信者アドレス制限を備えた送信メールサーバーとして Postfix を設定することで、ユーザーが自分自身を認証し、自分のメールアドレスを使用して SMTP サーバー経由でメールを送信できるようにします。
前提条件
- root アクセスがある。
- Postfix サーバーを設定している。
手順
Postfix を送信メールサーバーとして設定するには、
/etc/postfix/main.cf
ファイルを編集し、以下を追加します。SMTP 認証を有効にします。
smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes broken_sasl_auth_clients = yes
Copy to Clipboard Copied! TLS を使用しないアクセスを無効にします。
smtpd_tls_auth_only = yes
smtpd_tls_auth_only = yes
Copy to Clipboard Copied! 認証されたユーザーに対してのみメールリレーを許可します。
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
Copy to Clipboard Copied! オプション: ユーザーが自分のメールアドレスを送信者としてのみ使用するように制限します。
smtpd_sender_restrictions = reject_sender_login_mismatch
smtpd_sender_restrictions = reject_sender_login_mismatch
Copy to Clipboard Copied!
postfix
サービスをリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
- TLS および SASL をサポートする SMTP クライアントで認証します。テストメールを送信して、SMTP 認証が正しく機能していることを確認します。
2.7. 同じホストで実行している Postfix から Dovecot へのメールの配信
UNIX ソケット経由で LMTP を使用して、受信メールを同じホスト上の Dovecot に配信するように Postfix を設定できます。このソケットは、ローカルマシンの Postfix と Dovecot との間の直接通信を有効にします。
前提条件
- root アクセスがある。
- Postfix サーバーを設定している。
- Dovecot サーバーを設定している。Dovecot IMAP および POP3 サーバーの設定と管理 を参照してください。
- Dovecot サーバーに LMTP ソケットを設定している。LMTP ソケットと LMTPS リスナーの設定 を参照してください。
手順
/etc/postfix/main.cf
ファイルの Dovecot にメールを配信するために LMTP プロトコルと UNIX ドメインソケットを使用するように Postfix を設定します。仮想メールボックスを使用する場合は、次のコンテンツを追加します。
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp
virtual_transport = lmtp:unix:/var/run/dovecot/lmtp
Copy to Clipboard Copied! 仮想以外のメールボックスを使用する場合は、次のコンテンツを追加します。
mailbox_transport = lmtp:unix:/var/run/dovecot/lmtp
mailbox_transport = lmtp:unix:/var/run/dovecot/lmtp
Copy to Clipboard Copied!
postfix
をリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
-
テストメールを送信して、LMTP ソケットが正常に動作することを確認します。
/var/log/maillog
のメールログでエラーがないか確認します。
2.8. Postfix から別のホストで実行されている Dovecot へのメールの配信
ネットワーク経由で Postfix メールサーバーと Dovecot 配信エージェントの間にセキュアな接続を確立できます。これを行うには、メールサーバー間でのメール配信にネットワークソケットを使用するように LMTP サービスを設定します。デフォルトでは、LMTP プロトコルは暗号化されていません。ただし、TLS 暗号化を設定した場合、Dovecot は LMTP サービスに同じ設定を自動的に使用します。続いて、SMTP サーバーは、LMTP 経由で STARTTLS
コマンドを使用してそれに接続できます。
前提条件
- root アクセスがある。
- Postfix サーバーを設定している。
- Dovecot サーバーを設定している。Dovecot IMAP および POP3 サーバーの設定と管理 を参照してください。
- Dovecot サーバーに LMTP ソケットを設定している。LMTP ソケットと LMTPS リスナーの設定 を参照してください。
手順
以下の内容を追加して、
/etc/postfix/main.cf
ファイルで Dovecot にメールを配信するために LMTP プロトコルと INET ドメインソケットを使用するように Postfix を設定します。mailbox_transport = lmtp:inet:<dovecot_host>:<port>
mailbox_transport = lmtp:inet:<dovecot_host>:<port>
Copy to Clipboard Copied! <dovecot_host>
を Dovecot サーバーの IP アドレスまたはホスト名に置き換え、<port>
を LMTP サービスのポート番号に置き換えます。postfix
サービスをリロードして変更を適用します。systemctl reload postfix
# systemctl reload postfix
Copy to Clipboard Copied!
検証
- リモート Dovecot サーバーがホストするアドレスにテストメールを送信し、Dovecot ログをチェックして、メールが正常に配信されたことを確認します。
2.9. Postfix サービスを保護する
Postfix は、SMTP (Simple Mail Transfer Protocol) を使用して他の MTA 間で電子メッセージを配信したり、クライアントや配信エージェントにメールを送信したりするメール転送エージェント (MTA) です。MTA は相互間のトラフィックを暗号化できますが、デフォルトではそうしない場合があります。設定をより安全な値に変更することで、さまざまな攻撃に対するリスクを軽減することもできます。
2.9.2. DoS 攻撃を制限するための Postfix 設定オプション
攻撃者は、トラフィックでサーバーをあふれさせたり、クラッシュを引き起こす情報を送信したりして、サービス拒否 (DoS) 攻撃を引き起こす可能性があります。/etc/postfix/main.cf
ファイルで制限を設定することにより、このような攻撃のリスクを軽減するようにシステムを設定できます。既存のディレクティブの値を変更するか、<directive> = <value>
形式のカスタム値で新しいディレクティブを追加できます。
DoS 攻撃を制限するには、次のディレクティブリストを使用します。
smtpd_client_connection_rate_limit
-
クライアントがこのサービスに対して時間単位あたりに実行できる接続試行の最大数を制限します。デフォルト値は
0
です。これは、クライアントが時間単位で Postfix が受け入れることができる数と同じ数の接続を行うことができることを意味します。デフォルトでは、ディレクティブは信頼できるネットワークのクライアントを除外します。 anvil_rate_time_unit
-
レート制限を計算するための時間単位を定義します。デフォルト値は
60
秒です。 smtpd_client_event_limit_exceptions
- 接続およびレート制限コマンドからクライアントを除外します。デフォルトでは、ディレクティブは信頼できるネットワークのクライアントを除外します。
smtpd_client_message_rate_limit
- 時間単位あたりのクライアントからの要求に対するメッセージ配信の最大数を定義します (Postfix が実際にそれらのメッセージを受け入れるかどうかは関係ありません)。
default_process_limit
-
特定のサービスを提供する Postfix 子プロセスのデフォルトの最大数を定義します。
master.cf
ファイル内の特定のサービスでは、このルールを無視できます。デフォルトでは、値は100
です。 queue_minfree
-
キューファイルシステムでメールを受信するために必要な最小の空き容量を定義します。このディレクティブは現在、Postfix SMTP サーバーがメールを受け入れるかどうかを決定するために使用されています。デフォルトでは、Postfix SMTP サーバーは、空き容量が
message_size_limit
の 1.5 倍未満の場合に、MAIL FROM
コマンドを拒否します。空き容量の最小値をこれよりも高く指定するには、message_size_limit
の 1.5 倍以上のqueue_minfree
値を指定します。デフォルトのqueue_minfree
値は0
です。 header_size_limit
-
メッセージヘッダーを格納するためのメモリーの最大量をバイト単位で定義します。ヘッダーが大きい場合、余分なヘッダーは破棄されます。デフォルトでは、値は
102400
バイトです。 message_size_limit
-
エンベロープ情報を含むメッセージの最大サイズをバイト単位で定義します。デフォルトでは、値は
10240000
バイトです。
2.9.3. Postfix が SASL を使用する設定
Postfix は Simple Authentication and Security Layer (SASL) ベースの SMTP 認証 (AUTH) をサポートしています。SMTP AUTH は Simple Mail Transfer Protocol の拡張です。現在、Postfix SMTP サーバーは次の方法で SASL 実装をサポートしています:
- Dovecot SASL
- Postfix SMTP サーバーは、UNIX ドメインソケットまたは TCP ソケットのいずれかを使用して、Dovecot SASL 実装と通信できます。Postfix と Dovecot アプリケーションが別のマシンで実行している場合は、この方法を使用します。
- Cyrus SASL
- 有効にすると、SMTP クライアントは、サーバーとクライアントの両方でサポートおよび受け入れられる認証方法を使用して、SMTP サーバーで認証する必要があります。
前提条件
-
dovecot
パッケージがシステムにインストールされている
手順
Dovecot をセットアップします。
/etc/dovecot/conf.d/10-master.conf
ファイルに次の行を含めます。service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }
service auth { unix_listener /var/spool/postfix/private/auth { mode = 0660 user = postfix group = postfix } }
Copy to Clipboard Copied! 前の例では、Postfix と Dovecot の間の通信に UNIX ドメインソケットを使用しています。また、
/var/spool/postfix/
ディレクトリーにあるメールキュー、およびpostfix
ユーザーとグループの下で実行しているアプリケーションを含む Postfix SMTP サーバーのデフォルト設定を想定しています。オプション: TCP 経由で Postfix 認証リクエストをリッスンするように Dovecot をセットアップします。
service auth { inet_listener { port = <port_number> } }
service auth { inet_listener { port = <port_number> } }
Copy to Clipboard Copied! /etc/dovecot/conf.d/10-auth.conf
ファイルのauth_mechanisms
パラメーターを編集して、メールクライアントが Dovecot での認証に使用する方法を指定します。auth_mechanisms = plain login
auth_mechanisms = plain login
Copy to Clipboard Copied! auth_mechanisms
パラメーターは、さまざまなプレーンテキストおよび非プレーンテキストの認証方法をサポートしています。
/etc/postfix/main.cf
ファイルを変更して Postfix をセットアップします。Postfix SMTP サーバーで SMTP 認証を有効にします。
smtpd_sasl_auth_enable = yes
smtpd_sasl_auth_enable = yes
Copy to Clipboard Copied! SMTP 認証用の Dovecot SASL 実装の使用を有効にします。
smtpd_sasl_type = dovecot
smtpd_sasl_type = dovecot
Copy to Clipboard Copied! Postfix キューディレクトリーに相対的な認証パスを指定します。相対パスを使用すると、Postfix サーバーが
chroot
で実行しているかどうかに関係なく、設定が確実に機能することに注意してください。smtpd_sasl_path = private/auth
smtpd_sasl_path = private/auth
Copy to Clipboard Copied! この手順では、Postfix と Dovecot の間の通信に UNIX ドメインソケットを使用します。
通信に TCP ソケットを使用する場合に、別のマシンで Dovecot を探すように Postfix を設定するには、次のような設定値を使用します。
smtpd_sasl_path = inet: <IP_address> : <port_number>
smtpd_sasl_path = inet: <IP_address> : <port_number>
Copy to Clipboard Copied! 上記の例の
<IP_address>
は、Dovecot マシンの IP アドレスに置き換えます。<port_number>
は、Dovecot の/etc/dovecot/conf.d/10-master.conf
ファイルで指定されているポート番号に置き換えます。Postfix SMTP サーバーがクライアントに提供する SASL メカニズムを指定します。暗号化されたセッションと暗号化されていないセッションに異なるメカニズムを指定できることに注意してください。
smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous
smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous
Copy to Clipboard Copied! 前のディレクティブは、暗号化されていないセッションでは匿名認証が許可されず、暗号化されていないユーザー名またはパスワードを送信するメカニズムが許可されていないことを指定しています。暗号化セッション (TLS を使用) の場合、非匿名認証メカニズムのみが許可されます。