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,Web,算法,mysql,perl)