Emos 老邮件系统用户迁移方案

       最近负责搭建了Emos1.5 Extmail邮件系统,已通过功能、性能测试,打算正式上线。上线前一个重要工作就是将原有邮件系统的用户信息转移到Extmail邮件系统。为此,我做了一个迁移方案,并写了几个相关程序。

1、  列举出原有邮件系统的所有用户信息,可以保存成文件,也可以直接写入数据库。

       原有邮件系统用户信息是存放在ldap中,因此,可以通过写个java程序将所有邮件账户信息遍历出来,账户信息可保存至文件,也可直接写入数据库。

       本案直接写入数据库,将原有邮件系统的邮件账户信息按照extmail数据库的mailboxsehema,写入到mailbox表。

2、  修改密码的加密方式

       原有邮件系统的邮件账户口令是以sha1算法加密的,因此其导出的账户口令信息是sha1密文,为此需修改extmailextman应用的加密方式,分别修改webmail.cfwebman.cf文件即可,改成如下内容:

       SYS_CRYPT_TYPE = sha1

3、  根据mailbox表数据,产生用户邮箱目录

写了个perl程序,遍历mailbox数据表,生成邮箱目录,最后别忘了授权。

#!/usr/bin/perl -w

#用户目录生成程序,根据mailbox表的用户信息,生成域目录下的用户邮箱文件夹

 

use strict;

use DBI;

 

#connect to mysql

my $dbh = DBI->connect("DBI:mysql:extmail:localhost","extmail","123456")

         || die "Could not connect to database." . DBI ->errstr;

my $sql_stmt = "select uid from mailbox where active = 1";

my $sth = $dbh->prepare($sql_stmt);

$sth->execute();

 

#domain、路径常量

#"tmail.wahaha.com.cn";

my $domain = "emos.com";

my $path = "/home/domains/$domain/";

#遍历数据

print "virtual user dir making....../n";

my $count = 0;

while(my @row = $sth->fetchrow_array()){

         (my $uid) = @row;

         $count++;

         my $fullpath = $path.$uid;

         unless(-e $fullpath){

                   mkdir($fullpath,0755);

                   if(-e $fullpath){

                            $fullpath .="/Maildir";

                            mkdir($fullpath,0755);

                            if(-e $fullpath){

                                     mkdir "$fullpath/new";

                                     mkdir "$fullpath/cur";

                                     mkdir "$fullpath/tmp";

                            }

                   }

         }

}

$sth->finish();

$dbh->disconnect();

 

#授权

`chown -R vuser:vgroup /home/domains/`;

print "Total $count users transfered!/n";

exit;

 

4、  登录extmail web邮箱,如能用老邮件系统账户信息登录,恭喜,用户迁移成供。

       用户组,又叫邮件列表,还没迁移过来,只要能将老邮件系统的用户组信息整理出来,并写入alias数据表即可。

你可能感兴趣的:(sql,加密,数据库,mysql,perl,domain)