imapsync 邮箱迁移 Plesk 到 Hestia

通常来说,可能不是很多人会遇到这种情况,就是你想要更换邮箱,但又需要将当前邮箱里的邮件带过去。可一旦发生,你就会发现,一个和互联网几乎相同年龄的东西,居然没有一个成熟的导出和导入功能。

比这更令人头疼的是,如果你是一个邮件服务器管理员,你就悲惨的发现,有服务器权限也不行。邮箱里的内容是使用特殊各式存储的,它不是一个简单的数据库,需要使用相应的服务进行存取,直接移动文件很可能导致数据损坏,得不偿失。 imapsync 就派上用场了,它直接使用邮件的 IMAP 协议,下载旧邮箱的数据,然后同步到新的邮箱,邮件的发件人,收件人,时间,附件等等等等一应俱全!

难题

当然,如果是这么简单就结束了,那这片文章的意义也就不存在了——我有一个更复杂的使用情况,我的客户需要将邮箱迁移到新的服务器,使用新的面板,即从 Plesk 迁移到 Hestia。 那么问题来了,域名只有一个,我怎么才能实现从 A 到 B 但只能使用 A 的情况呢?

最后我的解决方案是创建一个临时邮箱,使用域名 B,这样我就可以先把邮件从 A 同步到 B,然后修改域名配置,将域名解析到新的服务器,再将邮件从 B 同步回 A。由于此时域名已经解析到了新的服务器,实际上则是将邮件同步到了新的邮件服务器上。然后新服务器上创建的用户使用同样的账号和密码,理论上客户不需要做任何更改,只要忍耐短时间的服务暂停就可以了。

配置/踩坑

有一些额外的配置需要完成,默认情况下,如果你打开 Hestia 的 webmail,会看到内部错误,这是由于文件权限导致的,使用以下两个命令修复:

另外,如果你的邮箱能成功发送邮件但不能收到,需要查看 Exim4 日志: /var/log/exim4/rejectlog ,如果是如下类似错误:

那大概率是由于 Exim4 默认使用的 spamhaus 列表过于激进。 在我的测试中,它会直接屏蔽任何 gmail 邮件,我们可以去掉它。编辑 /etc/exim4/dnsbl.conf  去掉 zen.spamhaus.org 这一行保存即可。然后使用命令重启 Exim4 systemctl restart exim4

imapsync

如果你恰好和我一样使用 macOS 的话,请不要使用 homebrew 来安装 imapsync。从 2021 年开始,brew 安装的 imapsync 就有奇怪的内存泄露问题,该问题至今没有得到修复(没错,我也遇到了)。方便省心的解决办法是安装依赖后在 Ubuntu 上直接运行它。当然如果你觉得麻烦,也可以使用 Docker,这里我找到了一个支持 arm64 的镜像  你可以直接使用这个镜像来跑 imapsync,稳定高效!

这里给出一个我使用的命令举例:

值得注意的是,你的密码应该使用双引号引起来,这样可以避免一些特殊符号冲突导致的命令错误。

另外,强烈推荐在你的新服务器上运行此命令,因为 imapsync 会下载再上传所有内容——包括附件。这将是一个非常漫长的操作。最理想的情况是在你的新服务器上运行,这样数据可以直接下载到你的服务器,然后本地存入数据库。尤其像我后期还需要再在同一个服务器上同步两个邮箱,而普通家庭宽带的上传又很小,真是个大坑。

垃圾邮件以及杀毒功能开关

给 Hestia 配置 spamassassinclamaav 。如果你和我一样使用了小内存的 Lightsail 作为服务器,那么即使你勾选了这两个模块,它们也可能不会被安装,这时就需要我们手动安装它们: sudo apt install spamassassin clamav clamav-daemon

编辑 Hestia 的配置文件 sudo vi /usr/local/hestia/conf/hestia.conf ,在文件开头加入如下两行:

在 Hestia 管理员账户界面进入设置→exim4 的编辑界面,将下面 4 行取消注释:

取消垃圾邮件和杀毒相关配置的注释

取消垃圾邮件和杀毒相关配置的注释

然后逐行执行下面的命令来配置 clamav

还有下面的命令配置 spamassassin

最后编辑文件 /etc/roundcube/config.inc.php ,在顶部加入以下内容:

重启服务器,然后你就能在 Hestia 邮箱配置界面看到垃圾邮件和杀毒的开关了。

本文由 落格博客 原创撰写:落格博客 » imapsync 邮箱迁移 Plesk 到 Hestia

转载请保留出处和原文链接:https://www.logcg.com/archives/3853.html

About the Author

R0uter

如非声明,本人所著文章均为原创手打,转载请注明本页面链接和我的名字。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注