我已经build立了服务器B接受我们的域的邮件,用户身份validation正在工作,我也有一个脚本,运行从服务器A到服务器B的maildir数据的rsync同步进行dovecot所需的更改。 服务器B上configuration的另一个testing域的邮件传递工作正常。
我现在的问题是如何在没有(如果可能的话)DNScaching过期时将邮件传递到两台服务器的情况下,从服务器B同步到服务器A.
有没有办法可以避免由于DNS TTL造成的“不一致”期,并且无缝切换到新服务器?
开始与imapsync同步您的电子邮件。 (该网站提供了一个付费版本,但如果你谷歌,你会发现免费的GitHub或其他…)。 然后你做DNS开关。 然后你再次与imapsync同步。 如果仍有邮件到达旧服务器,则可以再次同步,直到所有邮件服务器都有新的DNSlogging。
Imapsync的优势(通过rsync),它也可以做其他各种各样的行动,如清除,设置一个特定的date范围(使后续同步相当快),… imapsync提供了一堆选项,你应该尝试一下进入“生产”。
关于不一致的地方:你可能会尝试设置你的新鸽子作为旧鸽子的代理。 这样,新鸽子就能看到老鸽子看到的一切。 不知道如何与同步工作。 检查dovecot文档。
如果在做实际的改变之前的几天,把DNS TTL缩短到一个更短的时间呢?
然后,当您进行实际的切换时,DNScaching将快速过期。
如果您有足够的时间和精力在现有的邮件服务器之前放置另一个图层,则可以在没有任何停机的情况下透明地执行所有操作。
1)build立一个新的服务器(一个虚拟的将很可能是好的)
2)如果您还没有,请安装OpenLDAP等集中式用户pipe理。 或者你的情况,像pam_mysql的东西会很好。
3)安装替代它代理IMAP / POP连接。 灭亡可以从中央用户pipe理位置查找用户服务器位置。
4)安装Postfix将邮件发送到服务器A或B.同样,Postfix可以从集中的位置查找服务器位置。
5)创build一个迁移脚本,该脚本将使用您所select的imapsync或其他工具复制邮件用户。 然后,当用户迁移时,将用户现在位于服务器B处的事实更新到集中位置。