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 replicationservice replicatorセクションを追加します。service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 user = vmail } }これらの設定により、
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 doveadmセクションを追加して、レプリケーションサービスのポートを定義します。service doveadm { inet_listener { port = 12345 } }doveadmレプリケーションサービスのパスワードを設定します。doveadm_password = <replication_password>パスワードは、両方のサーバーで同じにする必要があります。
レプリケーションパートナーを設定します。
plugin { mail_replica = tcp:server2.example.com:12345 }オプション: 並列
dsyncプロセスの最大数を定義します。replication_max_conns = 20replication_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.confDovecot が
doveadmレプリケーションポートを開くことができるように、SELinux ブール値nis_enabledを有効にします。# setsebool -P nis_enabled onレプリケーションパートナーのみがレプリケーションポートにアクセスできるように、
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 --reloadIPv4 アドレスのサブネットマスク
/32と IPv6 アドレスのサブネットマスク/128は、指定されたアドレスへのアクセスを制限します。- この手順は、他のレプリケーションパートナーでも実行します。
Dovecot をリロードします。
# systemctl reload dovecot
検証
- 1 つのサーバーのメールボックスでアクションを実行し、Dovecot が変更を他のサーバーにレプリケートしたかどうかを確認します。
レプリケーターステータスを表示します。
# 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特定のユーザーのレプリケーターステータスを表示します。
# 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 -