我的情况如下:
我有一个邮件服务器,我们将其称为 mail1.site.com。我想要做的是,构建一个新的邮件服务器 mail2.site.com,并将所有用户迁移过去。两者的设置都是 Postfix+Dovecot。通常,如果只有我一个人,我只需设置新服务器,然后进入我的邮件客户端并将我的邮件拖过来,让它将我的邮件移动到那边。但如果我有少数用户,我不能指望他们都足够精明,能够为他们帐户中的每个文件夹执行此操作。
tar
有人对如何迁移有什么建议吗?将数千封电子邮件全部移入/var/vmail
,然后解压,这样安全吗?我愿意听取建议。
答案1
是否可以在服务停机时一次性迁移所有这些?
如果可以,您可以 tar/untar。但更好的方法是动态 rsync 邮箱,并在服务停机时再次执行 rsync 进行更新。
查看邮件队列,它应该是空的。SMTP 在停机时不能接受任何邮件。但通常你的情况有所不同。邮件队列保留无法发送的电子邮件。您可以查看这封电子邮件。您决定保留这些电子邮件,或迁移到新服务器。我在这里找到了程序:http://abhijit.name/articles/configuration/moving_or_restoring_postfix_queue.html
动态复制邮箱有一个优点。您可以默默地测试指定的用户,一切是否正常。您将看到邮箱是否被移动。
仔细阅读 rsync 手册。针对一个邮箱进行测试,它只同步所需的信息,或者重写所有信息。使用适当的选项。
更糟糕的情况是,当您无法执行某些故障服务时,您应该逐个用户迁移邮箱。然后,您应该为两台服务器准备别名。两台服务器都应该接受两个名字的电子邮件,但内部使用别名行为将电子邮件重定向到正确的服务器。当您迁移 lat 用户时,您应该仅将 MX 指向新服务器,并等到旧服务器上的邮件队列清空,然后关闭它。
如果您从未这样做过,最好使用一些邮箱对任何虚拟副本进行测试。然后您将增加机会,没有人会带着锋利的叉子和燃烧的火炬来拜访您:)
答案2
Dovecot 有一个方便的工具叫dsync
(维基百科)旨在同步两个 dovecot 实例。Maildir 层次结构从一个服务器复制到另一个服务器。已接收、已发送、垃圾邮件、垃圾 - 所有内容均被复制。主要优点是可以dsync
进行增量和双向复制。初始复制完成后,下一次运行仅复制新的/已更改的文件。更改发生在哪里并不重要 -dsync
确定哪个实例是最新的。