将 VPS 迁移到同一台机器而不会丢失电子邮件

将 VPS 迁移到同一台机器而不会丢失电子邮件

我有一个运行 ispconfig 的 centos 6 VPS,目前状态不佳。Yum 已损坏且无法修复,看来我最好的修复方法是重新安装。

我计划在同一台机器上备份、安装 centos 7 和所有服务器软件、重新创建帐户并恢复文件。由于这台机器下个月就用完了,所以买第二台机器可能是一个选择,但我不确定我是否会得到相同的设置,因为我的计划中有一个我需要的额外 IP 地址。

我的问题是 Postfix 邮件帐户 - 我以前使用过 imapsync 进行迁移,但在这种情况下这行不通,因为我不会同时启动两个服务器。看起来我可以复制 maildir 文件和系统用户文件,但这对我来说似乎很脆弱。

另外,我正在考虑从 ispconfig 转到 vestacp。(编辑:我坚持使用 ispconfig)

任何能使此过程更简单的建议都将不胜感激。如果我的操作完全错误,请告诉我。

编辑:澄清

  • 我有 12 个域名下的 32 个电子邮件帐户
  • 我的 IMAP 服务器是 dovecot
  • 我的服务器控制面板是 ispconfig(我坚持使用它)
  • Maildir 文件不在 /home/ 下,而是在 /var/mail/exampledomain.com/exampleuser/Maildir/ 下

答案1

就目前而言,jornane 的第一个回答是正确的,但是我认为它并没有解决 OP 真正想要解决的问题——即如何最好地处理电子邮件和帐户的迁移,而不是如何处理 DNS。

通常有很多方法可以处理此任务,但因为我们只处理一台需要重新安装操作系统的服务器。我会理所当然地接受 OP 的断言,即 yum 不知何故变得无法修复,或者损坏严重,以至于修复比重新安装操作系统更复杂或更耗时。我也会理所当然地认为这是您唯一可用的服务器,并且您熟悉 imapsync。我还假设您使用 dovecot-imapd 作为 IMAP 服务器,因为 postfix 是 SMTP 服务器而不是 IMAP 服务器(但我发现 dovecot 是与 postfix 一起使用的更广泛使用的 IMAP 系统之一)。

在这种情况下,一种选择是使用 imapsync 将您的帐户备份到一系列免费的 gmail 帐户。将每个帐户备份到 gmail(您可以同时执行多个操作,具体取决于您当前服务器的强大功能以及 Google 最近对 IMAP 使用的反垃圾邮件策略类型)。您可以使用此脚本:

imapsync \
   --host1 your.oldserver.ext --port1 993 --user1 [email protected] \
   --passfile1 /path/to/gmail_mirror.passfile1 --ssl1 \
   --host2 imap.gmail.com --port2 993 --user2 [email protected] \
   --passfile2 /path/to/gmail_mirror.passfile2 --ssl2 \
   --useheader 'Message-Id' --skipsize \
   --syncinternaldates --noauthmd5 -nofoldersizes \
   --split1 100 --split2 100 \

请注意,这依赖于默认的 IMAPS TCP 端口 993。如果您在服务器上使用纯文本 IMAP,则应考虑尽快停止这样做,暂时可以将端口更改为 143 或您正在使用的任何端口。您可能还可以localhost在第一个脚本中使用 host1,在第二个脚本中使用 host2,这同样取决于您的设置。您还需要使用密码文件。有关正确使用的标志及其使用方法的更多信息,请参见此处:http://imapsync.lamiral.info/OPTIONS

要将电子邮件从 Google 转储到新服务器,您可以执行以下操作,这将适用于您的所有邮件和已发送邮件文件夹:

 imapsync \
      --host1 imap.gmail.com --port1 993 --user1 [email protected]
      --passfile1 /path/to/gmail_mirror.passfile1 --ssl1 \
      --host2 your.newserver.ext --port2 993 --user2 [email protected]
      --passfile2 /path/to/gmail_mirror.passfile2 --ssl2 \
      --useheader 'Message-Id' --skipsize --allowsizemismatch \
      --syncinternaldates --noauthmd5 -nofoldersizes\
      --split1 100 --split2 100 \
      --regextrans2 's/\[Gmail\]/username\@somedomain/' \
      --include "All Mail|Sent Mail" --delete2 --expunge2

这种方法的优点是它损坏某些部件的可能性非常小。因为我假设它yum已损坏且无法修复,而且我不熟悉这台服务器,所以其他组件也有可能损坏或损坏。这种方法非常简单,几乎不会出现细微故障。

还有其他选项具有额外的好处:最值得注意的是,其他备份和恢复选项会更快,因为它们不依赖于互联网连接。但是,探索这些选项需要有关您的环境的更多详细信息,例如:您的服务器是否确实使用 Dovecot 来提供 IMAP 或其他程序?您的服务器是否使用某些 CMS,如 cpanel 或 Plesk?您的 IMAP 守护程序是否有 MySQL 后端?您使用系统用户还是虚拟用户?

请记住,邮件服务器迁移可能会因各种原因而变得复杂。例如,有各种不同的身份验证方案可能会使用户及其邮箱的迁移变得复杂,而不是像我在此处列出的那样简单地传输他们的电子邮件。如果您想使用与之前的服务器相同的架构重新创建可以使用 SMTP 发送的用户,我们需要查看 main.cf 和 IMAP 配置文件的相关部分(对于 dovecot,这些将是 dovecot.conf)。

答案2

还有其他很好的答案,但它们相当理论化。我认为你可能应该知道,我已经多次这样做了,而且没问题,在 CentOS 服务器上使用 dovecot 和 sendmail,我使用 mbox 作为存储格式。我知道您使用的是 postfix 和 Maildir,很抱歉我无法对此进行具体说明;我希望这仍然有用。

存储的电子邮件将位于人们的主目录下,通常在 下~/mail,但他们可能已配置其他内容。只要您获取所有主目录,然后使用匹配UID/GID,存储的电子邮件应该没问题。

未读/未归档的电子邮件位于 下/var/spool/mail。再次取出整个目录,按上述方法恢复,一切正常。

如果我有什么具体的建议,那就是

  1. 转储所有内容。不要选择性。备份一切,检查其是否可读,并妥善保存。VPS 很小,因此请保留多份副本(即,不要尝试从唯一的 tarfile 恢复,这样当您不小心输入tar c而不是tar t并覆盖备份时,这将是一场灾难)。您永远不知道会发现需要恢复什么奇怪的文件,以使移动后一切正常。

  2. 现在不是开始改变的时候。您可能曾梦想过合理化您的 UID,或更改邮件存储格式(或更改您的控制面板,但我们不会谈论这些,因为这会使你的问题偏离 SF 的主题)但现在不是改变的好时机任何事物因为你正在做这件事就地,你就没有安全网了。这不是耍小聪明的好时机。

  3. 完美的练习造就完美的。这是一个 VPS。它们几乎不花钱。亚马逊实际上会免费提供给你一个。尝试迁移,在子弹不飞的时候磨练你的技能。互联网上的人告诉你这是一件轻而易举的事,这很好,但它你的文件,你的用户,你的数据。确定这一点很棒!

答案3

总结如果无法发送邮件,电子邮件服务器会将邮件保留在队列中几天。通常在迁移期间,您必须更改 DNS 记录,但由于您使用的是同一台服务器(相同的 IP),因此无需更改。您只需关闭服务器,安装新服务器,就可以了。唯一重要的是,您不应在迁移期间接受传入邮件。

你应该这样做:

  1. 禁用客户对旧服务器的访问(关闭 Postfix/Dovecot/其他服务器)。
  2. 进行备份。您可以像建议的那样复制 Maildir 和用户文件夹,这没有什么不好的。
  3. 格式化服务器并重新安装。
  4. 重新设置邮件服务器,暂时不要配置防火墙!保持邮件端口被阻止。
  5. 恢复所有邮件。记得创建帐户并chown相应地运行。请记住,某些邮件服务器要求 Maildir 由组拥有mail(使用chgrp)。
  6. 现在一切就绪。打开端口并让新服务器监听传入邮件。

如果有人在您工作时尝试发送电子邮件,防火墙会阻止他们,并会在稍后重试。因此,所有延迟的电子邮件都需要一段时间才能送达,最多需要几天时间。因此,请警告您的客户他们的邮件可能会延迟。

相关内容