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 replicationCopy to Clipboard Copied! Toggle word wrap Toggle overflow service replicatorセクションを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらの設定により、
dovecotサービスの開始時に、Dovecot は 1 つ以上のレプリケータープロセスを開始します。さらに、このセクションはreplicator-doveadmソケットの設定を定義します。service aggregatorセクションを追加して、replication-notify-fifoパイプとreplication-notifyソケットを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow service doveadmセクションを追加して、レプリケーションサービスのポートを定義します。service doveadm { inet_listener { port = 12345 } }service doveadm { inet_listener { port = 12345 } }Copy to Clipboard Copied! Toggle word wrap Toggle overflow doveadmレプリケーションサービスのパスワードを設定します。doveadm_password = replication_password
doveadm_password = replication_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードは、両方のサーバーで同じにする必要があります。
レプリケーションパートナーを設定します。
plugin { mail_replica = tcp:server2.example.com:12345 }plugin { mail_replica = tcp:server2.example.com:12345 }Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 並列
dsyncプロセスの最大数を定義します。replication_max_conns = 20
replication_max_conns = 20Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Dovecot が
doveadmレプリケーションポートを開くことができるように、SELinux ブール値nis_enabledを有効にします。setsebool -P nis_enabled on
setsebool -P nis_enabled onCopy to Clipboard Copied! Toggle word wrap Toggle overflow レプリケーションパートナーのみがレプリケーションポートにアクセスできるように、
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 --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4 アドレスのサブネットマスク
/32と IPv6 アドレスのサブネットマスク/128は、指定されたアドレスへのアクセスを制限します。- この手順は、他のレプリケーションパートナーでも実行します。
Dovecot をリロードします。
systemctl reload dovecot
# systemctl reload dovecotCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- 1 つのサーバーのメールボックスでアクションを実行し、Dovecot が変更を他のサーバーにレプリケートしたかどうかを確認します。
レプリケーターステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 特定のユーザーのレプリケーターステータスを表示します。
doveadm replicator status example_user
# doveadm replicator status example_user username priority fast sync full sync success sync failed example_user none 02:05:28 04:19:07 02:05:28 -Copy to Clipboard Copied! Toggle word wrap Toggle overflow