分类:
2009-12-04 17:33:13
一、原则
邮件系统迁移包含两大部分,一部分是账号信息(包括登录名,密码邮件域,通讯录等),另外一部分是邮件文件。
二、迁移对象
旧邮件系统:linux+qmail+vpopmail
新邮件系统:iRedMail()
三、系统的安装
本次我采用的iRedOS 0.1.2安装(感谢bibby专门加急完成),,。我最终选择的是roundcubemail+mysql的套装。
四、迁移过程
1、 账号信息迁移
由于两套系统都采用了mysql数据库,所以迁移数据本身工作量不大。下面是两套系统的数据库结构分析——仅做了主要字段的分析)。
旧邮件系统
Card( 通讯录表)
字段名 |
注释 |
pw_id |
所属人ID |
LinkMan |
联系人姓名 |
|
邮件地址 |
Vpopmail(用户账号表)
字段名 |
注释 |
pw_id |
用户ID |
pw_name |
用户账号 |
pw_domain |
用户邮件域 |
pw_passwd |
用户密码 |
pw_gecos |
用户显示名称 |
pw_dir |
用户文件路径 |
新邮件系统
新邮件系统采用了两个库,一个是roundcubemail使用,另外一个是poxfix使用。
roundcubemail_contacts ( roundcubemail通讯录)
字段名 |
注释 |
name |
联系人姓名 |
|
联系人邮件地址 |
user_id |
所属人ID |
roundcubemail_users( roundcubemail用户表)
字段名 |
注释 |
user_id |
用户ID |
username |
用户账号 |
vmail_mailbox(邮件系统账号表)
字段名 |
注释 |
username |
//用户账号 |
password |
//用户密码 |
name |
//显示名称 |
maildir |
//邮件路径 |
quota |
//邮箱大小 |
domain |
//邮箱域 |
经过实际操作,发现如果将旧数据导入roundcubemail_users表可能导致webmail用户登陆出现异常情况。反复查看旧系统数据,使用通讯录的人几乎没有,所以本次迁移中,我并没有导入roundcubemail任何数据——用户在登陆webmail的时候,系统会自动添加数据。
旧系统数据导出(大家可以根据自己的需要自行选择需要导出的字段)
mysql -uroot -p
use vpopmail;
select pw_name,pw_passwd,pw_gecos,pw_dir,pw_shell,pw_domain into outfile ‘oldmailuser.sql’ from vpopmail;
下载oldmailuser.sql,进行二次加工,因为我以前的用户文件路径等比较混乱,所以这次我决定统一修改下,大家可以用文本编辑工具随意加工,并将修改后的文件命名为newmailuser.sql。(注意用”,”作为分割符号分割各个字段)
上传newmailuser.sql到新服务器(我放到/home/upmail/目录),登陆新邮件系统的mysql。
mysql -uroot -p //连接数据库
use vmail; //使用邮件数据库
LOAD DATA LOCAL INFILE ‘/home/upmail/newmailuser.sql’ INTO TABLE mailbox FIELDS TERMINATED BY ‘,’ (username,password,name,maildir,quota,domain,created);
另外,在vmail:domain表里面添加一条记录,就是刚才导入的域名。
好了,邮件账号导入就成功了,大家可以测试下webmail登陆是否正常就可以了。
遗留问题:
1、通讯录的导入,因为通讯录表里含有用户ID,而我尝试导入数据到roundcubemail的user表,导致用户登陆后异常——用户配置信息字段为空。所以我放弃了该通讯录的导入。
2、用户自定义文件夹的导入。旧系统的用户文件路径下有mailsize文件记录了用户自定文件夹的名称和目录名,而roundcubemail并没有该文件,直接读取根目录名,想了半天也没有找到解决办法,只有通知用户自行修改目录名称。