1

Topic: 记录一次成功的iRedMail迁移升级过程。

近期,公司要求对iRedMail进行一次升级,过程可谓是坎坷多难,辛亏作者与群里的各位大佬倾力相助才顺利的完成了升级。
   下面说一下整个升级的流程以及遇到的典型问题和解决方法。
    首先,说一下整个升级的思路。
    因目前iRedMail的最新版本为v1.3.1,而我使用的版本为v0.9.7,其中版本跨越为8个版本,逐个版本升级工作量大,难度高,排错异常困难,所以选择了迁移升级的方式。
    迁移升级,首要的就是确认目前最新的版本与自己使用的版本之间的差异与共同点,详细可以参考官网的发布升级教程https://docs.iredmail.org/iredmail.releases.html。
    在确认了自己使用的版本与最新版本之间的差异之后,那就可以着手进行升级的准备了。
1、搭建一套最新版本的iRedMail,详细的搭建方法可以参考官方文档:https://docs.iredmail.org/iredmail.releases.html。我主要说一下搭建的过程中遇到的异常问题。
(1)安装脚本执行到下载的过程中,异常的久或者出现中断的情况,这是因为网络原因造成的。如果出现此情况我们可以手动的去下载脚本所需要的安装包,上传到iRedMail-1.3.1\pkgs\misc目录下,然后再次执行安装脚本,就可以顺利的进行到下一步。
(2)在完成安装界面选择,到执行下一步的时候会需要安装许多的依赖,也会出现异常久的情况,此时也可以中断一下脚本,使用yum update一下,然后再次执行安装脚本,就可以顺利完成安装。
注意:迁移升级的话,配置的主机名、域名、密码等,最好与旧版本的一致,以防止造成其他的问题。

2、将自己使用的旧版邮箱,使用虚拟机克隆,或者数据库备份的方式,将整个数据库保存下来,以便于对数据库的表结构进行修改。具体的备份方式请根据自己的环境进行选择。
我的话,是使用克隆的方式,将整个旧邮箱的服务器进行克隆下来,然后连接到克隆的数据库里进行的数据库结构修改。具体需要修改的地方,根据自身版本差异以及官方文档上的更新说明进行修改,我的话主要说一下修改过程中,比较关键的点。
(1)我自身的数据库版本是对应的v0.9.7,而比较尴尬的是v0.9.8版本引入了一个区块mlmmj对数据库进行修改的比较多,并且v0.9.7到v1.3.1有三个版本涉及表结构变更,没办法一个个版本进行升级只能在全部修改完毕后,进行数据库导入才能知道有没有错误,所以造成排查比较困难。所以在修改数据库的时候,在不到万不得已的情况之下,不要手动的建立新的数据表或者更改字段类型,请使用官方升级指导中的SQL脚本进行数据库修改。
(2)不知道是不是我遗漏了还是怎么样,我在官方的SQL脚本中,没有找到与maillists表相关的数据,导致我在导入新版软件中,出现mlmmj管理模块的访问异常,这个需要和作者确认一下。我的解决方法是从安装的最新版本iRedMail的数据库中找到maillists表,将里面的列完全的复制拷贝进我的旧数据库的maillists表中。
注意:在数据库修改过程中还没到不得已的情况之下,不要进行手动的数据库修改,一定按照官方的SQL脚本进行导入执行。

3、历史邮件的目录权限修改与导入,在iRedMail的默认安装情况之下,历史邮件等等的数据,都是存放在/var/vmail/vmail1下面的,这个要看个人情况,我是把这些数据文件统一放在独立的硬盘,挂载的mnt目录下。
(1)如果是在旧服务器本身的硬盘之下,只能是通过SCP命令的方式将vmail1目录的文件拷贝到新的服务器vmail1目录下,方式的话看自身情况而定。但是注意拷贝完成之后注意一下文件权限vmail/vmail1目录下都是vmail用户以及vmail组,并且权限都是755。如果权限不对,会造成服务无法启动。
(2)在新版的iRedMail中,目录vmail之下有新建两个目录mlmmj与mlmmj-archive,如果是通过重新挂载的方式对数据进行迁移,记得在vmail目录下创建这两个目录,并且所有用户以及组都为mlmmj,权限为755。详细可以先参考自己安装的新版目录下面的权限。
注意:数据迁移中,主要的几个点为权限、用户、组几个点,只要注意好这几个点,都没有问题的。

总结:旧版备份>安装新版>修改旧版数据库>将修改完毕的数据库导入到新版中>导入旧版的历史数据>重启新版服务器>完成升级。整一个升级流程就是如此,我能分享的大致经验就是如此,其中遇到的问题,只能结合自己的情况,以及邮件日志进行排查,这里没办法给出一个统一的方法,实在抱歉。

----

Spider Email Archiver: On-Premises, lightweight email archiving software developed by iRedMail team. Supports Amazon S3 compatible storage and custom branding.

2

Re: 记录一次成功的iRedMail迁移升级过程。

up

3

Re: 记录一次成功的iRedMail迁移升级过程。

809378491 wrote:

    因目前iRedMail的最新版本为v1.3.1,而我使用的版本为v0.9.7,其中版本跨越为8个版本,逐个版本升级工作量大,难度高,排错异常困难,所以选择了迁移升级的方式。

其实原地升级简单得太多了,是你自己吓自己。:)

最轻松的升级方案是:逐版本升级 iRedMail,直到最新的 1.3.1。这时候你要迁移到新服务器也简单,数据库导出再倒入,不需要修改。

4

Re: 记录一次成功的iRedMail迁移升级过程。

尝试逐版本升级,但是升了一个版本发现工作量巨大,还有很多错误,所以放弃了,主要是卡在mlmm那个新集成哪里,问题好多。

5

Re: 记录一次成功的iRedMail迁移升级过程。

Supplementary question: email sent to Tencent series mailbox appears to return 550

Reason: Tencent blocked the Internet IP address of mailbox server.

Solution: change the Internet IP address of the mail server.