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
service 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 = 20
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
Dovecot が
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 --reload
IPv4 アドレスのサブネットマスク
/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 example_user username priority fast sync full sync success sync failed example_user none 02:05:28 04:19:07 02:05:28 -
関連情報
-
システムの
dsync (1)
の man ページ -
/usr/share/doc/dovecot/wiki/Replication.txt