Home Knowledge base Skyline Cloud 如何使用 imapsync 在不同邮件服务商之间迁移邮件 KNOWLEDGE BASE

如何使用 imapsync 在不同邮件服务商之间迁移邮件

一份实用且准确的指南,教你如何使用 imapsync 在任意两家服务商之间迁移 IMAP 邮箱——包括安全的试运行、正确的参数、DNS 切换,以及迁移到境内 Skyline Cloud 商务邮箱的近乎零停机方案。

如何使用 imapsync 在不同邮件服务商之间迁移邮件

一份实用且准确的指南,教你如何使用 imapsync 在任意两家服务商之间迁移 IMAP 邮箱——包括安全的试运行、正确的参数、DNS 切换,以及迁移到境内 Skyline Cloud 商务邮箱的近乎零停机方案。

imapsync 能做什么(以及不能做什么)

imapsync 是一款久经考验的命令行工具,用于将邮件从一个 IMAP 邮箱(host1)复制到另一个 IMAP 邮箱(host2)。它以普通 IMAP 客户端的身份连接两端服务器,遍历每一个文件夹,并传输目标端缺失的邮件。最关键的是,它具有幂等性:它默认通过邮件头(Message-IdReceived 行)来比较邮件,因此运行两次也不会产生重复邮件,也不会重新复制已经存在的内容。正是这一特性使近乎零停机的切换成为可能——你先同步,再切换 DNS,然后运行最后一遍来抓取最后几封邮件。

本指南与具体服务商无关。同样的流程可以将邮件从 Gmail、Microsoft 365、cPanel、自建的 Dovecot 服务器或任意 IMAP 服务器迁移到 Skyline Cloud 商务邮箱——数据保留在境内,符合 PDPL、NCA 和 SDAIA 的要求。

下文中的每一个参数都已对照 imapsync 的 man 手册进行核对。如果你对某个参数不熟悉,请在依赖它之前运行 imapsync --help 或阅读 man 手册(man imapsync)。切勿盲目照搬参数。

开始之前

你需要:

  • 两端都开启 IMAP 访问。 源端和目标端都必须允许 IMAP(标准为 993 端口加 SSL)。在 Microsoft 365 和 Gmail 上,通常需要使用应用专用密码或 OAuth,而不是普通的登录密码。
  • 每个邮箱的凭据。 imapsync 一次迁移一个邮箱;如需迁移多个账户,需要你自己编写循环脚本。
  • 一台迁移主机。 任意一台可以对外访问 993 端口的 Linux 机器。让它靠近其中一端有助于提升吞吐量,但这并非必需。
  • 一个用于接收邮件的目标邮箱。 请先创建好目标收件箱。如果你要迁移到 Skyline Cloud,请在迁移前注册并开通你的邮箱

安装 imapsync

在 Debian 或 Ubuntu 上:

sudo apt update
sudo apt install imapsync
imapsync --version

在 RHEL、Rocky 或 AlmaLinux 上,可通过 EPEL 安装,或按项目 README 安装 Perl 依赖。在继续之前请确认它能正常运行——损坏的 Perl 依赖是最常见的安装问题。

第 1 步——仅测试登录

切勿一开始就进行真实传输。请先使用 --justlogin 确认两端的凭据均有效,该参数会登录两台主机后退出,不会触碰任何一封邮件:

imapsync \
  --host1 imap.oldprovider.com --user1 ali@example.com --password1 'OLD_PASS' --ssl1 \
  --host2 mail.alskyline.com   --user2 ali@example.com --password2 'NEW_PASS' --ssl2 \
  --justlogin

--ssl1--ssl2 会请求在 993 端口上使用 SSL(这是众所周知的 IMAPS 端口,因此通常无需指定 --port1/--port2)。如果你的服务器改为在 143 端口上提供 STARTTLS,请使用 --tls1/--tls2。如果你看到 Success login,说明两端都可访问。

第 2 步——试运行

--dry 会让 imapsync 执行除写入之外的所有操作——它会打印出它将要复制的确切内容。这是你的安全网:

imapsync \
  --host1 imap.oldprovider.com --user1 ali@example.com --password1 'OLD_PASS' --ssl1 \
  --host2 mail.alskyline.com   --user2 ali@example.com --password2 'NEW_PASS' --ssl2 \
  --automap --dry

--automap 会为常见文件夹(SentJunkDraftsArchiveFlagged)推测映射关系,这样一端的 "Sent Items" 就会落到另一端的 "Sent" 中。请仔细阅读输出:它会列出找到的文件夹以及每个文件夹包含的邮件数量。

第 3 步——执行真正的迁移

去掉 --dry,开始真正的传输:

imapsync \
  --host1 imap.oldprovider.com --user1 ali@example.com --password1 'OLD_PASS' --ssl1 \
  --host2 mail.alskyline.com   --user2 ali@example.com --password2 'NEW_PASS' --ssl2 \
  --automap \
  --logfile /var/log/imapsync/ali.log

默认情况下,imapsync 不会删除任何一端的任何内容——你的源端保持完好,这正是你在迁移期间所希望的。请关注日志中每个文件夹的传输计数以及最终的汇总信息。

实用的额外参数

参数 用途
--exclude '^Spam$' 跳过匹配该正则表达式的文件夹(此处为名称恰好为 Spam 的文件夹)。
--maxsize 25000000 跳过大小为 25 MB 或更大的邮件(大小以字节为单位)。
--addheader 为缺少 Message-Id 头的邮件添加该头——常见于"已发送/草稿"中。
--useheader 'Message-Id' 选择用于在两端之间比较邮件的邮件头。
--delete2 删除 host2 上 host1 不存在的邮件。仅用于重新同步时的清理,切勿在首次运行时使用。

服务商快捷参数

对于 Gmail,--gmail1--gmail2 会设置正确的主机和 Gmail 专用选项。对于 Microsoft 365 / Exchange Online,--office1--office2 会为 outlook.office365.com 做同样的设置。请确认每个快捷参数都设置了哪些内容——它们会捆绑多个参数,imapsync 网站上的 FAQ 文件对此有详细说明。

第 4 步——以近乎零停机的方式切换

迁移过程是在线进行的;唯一的切换时刻是 DNS。要尽量减少邮件丢失:

  1. 提前一天降低你的 MX TTL,以便变更能快速传播。
  2. 在旧邮件仍流向源端时运行完整同步。
  3. 切换 MX(以及 SPF/DKIM/DMARC) 指向新的服务商。借助 Skyline Cloud,托管 DNS 让这一切只需点击几下即可完成。
  4. 再运行一次 imapsync。 由于它具有幂等性,这一遍只会复制首次同步之后才到达的那几封邮件——不会产生重复。

请将两个邮箱都保持在线运行几天。某些客户端会缓存旧的 IMAP 设置,而且 MX 的传播也并非即时完成。

验证结果

在目标端的网页邮箱中抽查文件夹中的邮件数量,确认"已发送"和"草稿"完好无损地迁移过来,并使用 --justfolders --dry 重新运行,以便在不触碰邮件的情况下比较文件夹结构。只有在用户确认无误后,你才应考虑停用源端。

为什么要迁移到境内邮箱

如果目标是合规与本地掌控,那么目的地与方法同样重要。Skyline Cloud 将你的邮件保留在符合 PDPL、NCA 和 SDAIA 要求的境内基础设施上,并提供阿拉伯语支持和透明的价格。要了解将系统迁移到沙特云的更全面信息,请参阅我们的云迁移专题

准备好将你的邮件迁移到合规的境内托管了吗?创建你的 Skyline Cloud 账户并开通邮箱,然后按照上述步骤操作。

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.