1.4. 在两个 Dovecot 服务器之间配置复制
通过双向复制,您可以使 Dovecot 服务器高度可用,而 IMAP 和 POP3 客户端都可以访问这两个服务器上的邮箱。Dovecot 会跟踪每个邮箱的索引日志中的更改,并以安全的方式解决冲突。
在两个复制合作伙伴上执行这个流程。
复制只在服务器对之间正常工作。因此,在大型集群中,您需要多个独立的后端对。
先决条件
- 两个服务器都使用相同的身份验证后端。最好使用 LDAP 或 SQL 来集中维护帐户。
-
Dovecot 用户数据库配置支持用户列表。使用
doveadm user '*'
命令来验证这一点。 -
Dovecot 以
vmail
用户身份而不是用户的 ID (UID)访问文件系统上的邮箱。
流程
创建
/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 会至少启动一个 replicator 进程。另外,本节定义了对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
启用
nis_enabled
SELinux 布尔值,以允许 Dovecot 打开doveadm
复制端口: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
验证
- 在一个服务器上的邮箱中执行一个操作,然后验证 Dovecot 是否将更改复制到其他服务器上。
显示 replicator 状态:
# 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
显示特定用户的 replicator 状态:
# 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)
手册页 -
/usr/share/doc/dovecot/wiki/Replication.txt