我有一个 cyrus murder(聚合器)主服务器和一个由 2 个节点组成的 IMAP 后端集群(后端1和后端2)。
我使用 corosync/pacemaker 来设置:
- 虚拟 IP
- 启动和停止 cyrus-imapd 服务
用于后端 IMAP 集群。
我使用 drbd 来同步我的两个 IMAP 后端之间的 /var/lib/imap 和 /var/spool/imap。
例如,cyrus-imapd 服务运行在后端1。 什么时候用户A在收件箱中创建文件夹和子文件夹,后端1使用 mupdate 协议向聚合器发出请求。它给出了肯定的答复,并且在聚合器的 mailboxes.db 上,我们有文件夹以及后端名称文件夹存储的位置。
即使后端1停止,后端2接管。当用户A创建文件夹,cyrus-imapd 向聚合器请求是否可以创建该文件夹。聚合器给出了否定的答复,因为聚合器知道用户A的邮箱由后端1.它不知道后端1和后端2是“相同的”。因此它命令后端2删除邮箱。但由于其数据被复制,因此邮箱会消失后端1。
所以我的问题如下:imapd.conf 中是否有一个选项或其他东西可以让我的 2 个后端的 IMAP 以相同的名称出现?
答案1
听起来您只需要在 imapd.conf 中的两台机器上设置相同的“服务器名称”选项。
{ "servername", NULL, STRING } /* 这是 POP、IMAP 和 LMTP 守护进程的问候消息中可见的主机名。如果未设置,则使用 gethostname(2) 返回的结果。*/
但它的功能不止于此——它还被谋杀者用来识别服务器。