mail 迁移
中国福网邮件系统更新使用iRedmail
在iRedMail使用过程中经常出现由其他邮件系统迁移到iRedMail的过程和qmail+vpopmail 迁移到 iRedMail 邮件账户迁移,邮件文件迁移的guoc
1)iRedMail 提供了将 ExtMail/EMOS 邮件系统的 MySQL 用户迁移到 iRedMail 的脚本工具和操作步骤。迁移后的用户仍然可以选择是否使用 ExtMail 作为 webmail 程序。
迁移主要分为以下几个步骤:
迁移用户账号。
迁移用户的邮件数据。
以下是具体的操作步骤。
迁移存储在 MySQL 里的用户账号
以有权限查询 EMOS 的 mailbox 表的用户进入 MySQL 命令行。例如 root 用户: Shell 命令:
# mysql -uroot -p extmail
通过 MySQL 的 SELECT 语句将必要的数据提取出来,保存到指定的文件中。这里以保存到 '/tmp/mailbox.sql' 文件为例: Shell 命令:
mysql> SELECT username,password,maildir,quota,netdiskquota,domain,createdate,active,name
> INTO OUTFILE '/tmp/mailbox.sql'
> FROM mailbox;
上面 SELECT 语句里各个字段的顺序非常重要,请一定要按照这样的顺序来写。
在已经安装好的 iRedMail 邮件系统的 MySQL 数据库里,为 vmail.mailbox 表增加 netdiskquota 字段: Shell 命令:
mysql> USE vmail;
mysql> ALTER TABLE mailbox ADD netdiskquota VARCHAR(16) NOT NULL DEFAULT '0';
下载 iRedMail 提供的转换脚本: Shell 命令:
# cd /tmp/
# wget http://iredmail.googlecode.com/svn/trunk/iRedMail/tools/migrate_extmail_mailbox.sh
执行 iRedMail 提供的转换脚本,将上面导出来的 SQL 文件转换一下。它会在同一个目录下生成以 '.iredmail' 结尾的 SQL 文件,在这里就是 '/tmp/mailbox.sql.iredmail'。这就是我们需要导入到 iRedMail 里的用户数据了。 Shell 命令:
# cd /tmp/
# sh /tmp/migrate_ExtMail_users_from_MySQL.sh /tmp/mailbox.sql
请先仔细检查得到的 SQL 文件,确认无误后就可以导入了。 Shell 命令:
# mysql -uroot -p
mysql> USE vmail;
mysql> SOURCE /tmp/mailbox.sql.iredmail;
迁移脚本从 maildir 字符串中移除了 'Maildir/' 字串(需要配合 dovecot 做调整,下文会介绍详情)。
迁移脚本将 maildir 字符串都转换成了小写字符。
修改 Dovecot 的相关设置( iRedMail-0.4.1 及更高版本不需要做此调整): 文件:/etc/dovecot.conf
mail_location = maildir:/%Lh/Maildir/:INDEX=/%Lh/Maildir/
文件:/etc/dovecot-mysql.conf
user_query = SELECT CONCAT("/home/vmail/", maildir) AS home, \
"/home/vmail/sieve/%Ld/%Ln/" AS sieve_dir, \
CONCAT('*:bytes=', quota*1048576) AS quota_rule \
FROM mailbox WHERE username='%u' \
AND active='1' AND enable%Ls='1' AND expired >= NOW()
这样就可以了。导入的用户可以使用原有的账号密码登录 WebMail,或使用 POP3/IMAP 等服务了。
迁移用户的邮件数据
iRedMail 邮件方案里默认的存储邮件数据的目录是 /home/vmail(这取决于您实际设置的路径),将原先 ExtMail/EMOS 邮件系统里的邮件目录直接复制到这个目录下,并将他们的文件所有者(owner)设置为 vmail 用户和 vmail 组即可。 Shell 命令:
# chown -R vmail:vmail /home/vmail/*
# chmod -R 0700 /home/vmail/*
2)qmail+vpopmail 迁移到 iRedMail 邮件账户迁移,邮件文件迁移
邮件文件迁移
一、原则
邮件系统迁移包含两大部分,一部分是账号信息(包括登录名,密码邮件域,通讯录等),另外一部分是邮件文件。
二、迁移对象
旧邮件系统:linux+qmail+vpopmail
新邮件系统:iRedMail(http://www.iredmail.org)
三、系统的安装
本次我采用的iRedOS 0.1.2安装(感谢bibby专门加急完成),点击下载,点击查看安装手册。我最终选择的是roundcubemail+mysql的套装。
四、迁移过程
1、 账号信息迁移
由于两套系统都采用了mysql数据库,所以迁移数据本身工作量不大。下面是两套系统的数据库结构分析——仅做了主要字段的分析)。
旧邮件系统
Card( 通讯录表)
字段名 注释
pw_id 所属人ID
LinkMan 联系人姓名
Email 邮件地址
Vpopmail(用户账号表)
字段名 注释
pw_id 用户ID
pw_name 用户账号
pw_domain 用户邮件域
pw_passwd 用户密码
pw_gecos 用户显示名称
pw_dir 用户文件路径
新邮件系统
新邮件系统采用了两个库,一个是roundcubemail使用,另外一个是poxfix使用。
roundcubemail_contacts ( roundcubemail通讯录)
字段名 注释
name 联系人姓名
email 联系人邮件地址
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 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);
好了,邮件账号导入就成功了,大家可以测试下webmail登陆是否正常就可以了。
遗留问题:
1、通讯录的导入,因为通讯录表里含有用户ID,而我尝试导入数据到roundcubemail的user表,导致用户登陆后异常——用户配置信息字段为空。所以我放弃了该通讯录的导入。
2、用户自定义文件夹的导入。旧系统的用户文件路径下有mailsize文件记录了用户自定文件夹的名称和目录名,而roundcubemail并没有该文件,直接读取根目录名,想了半天也没有找到解决办法,只有通知用户自行修改目录名称。
账号信息迁移
操作步骤
1、 停止旧邮件系统
Ps –A | grep ‘qmail’
Kill掉所有qmail的进程——我这种做法是不安全的,但是因为我已经通知过要迁移数据,所以也不管这么多了。
2、 将旧邮件文件目录整体打包
Tar –czvf oldmail.tar.gz 目标目录
3、 下载文件包,并上传到新邮件系统(我上传到了/home/upmail目录)
4、 解压
Tar –xzvf oldmail.tar.gz
5、 编写一个简单的脚本文件
mkdir /home/vmail/新邮件系统用户目录
cp –a /home/upmail/旧邮件系统用户目录/* /home/upmail/旧邮件系统用户目录/.[^.]* /home/vmail/新邮件系统用户目录
注释:/home/upmail/旧邮件系统用户目录/.[^.]*是为了拷贝隐藏文件。
这个脚本可以根据前面的sql文件来进行编辑,不会花太大的工夫。
将编辑好的文件命名为mkuser.sh
Chmod +x mkuser.sh
./mkuser.sh
根据你的邮件大小,很快整个邮件迁移就能完成。
6、 邮件用户及用户组更改
Chown vmail:vmail –Rf /home/vmail/
附件列表
文章内容仅供参考,如果您需要解决具体问题建议您提交有问必答。 0
标签: 暂无标签
同义词: 暂无同义词