主题: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

问题如下:
公司原邮件系统是extmail,使用mysql存储全部的账户和密码信息。现在已经安装好了iredmail0.7.0版本,请问如何将原有邮件系统的账户和密码信息从原邮件系统的mysql迁移到现在的iredmailmysql中。我用phpmyadmin尝试了一下,数据库可以导入到iredmail的mysql中,但是由于两个邮件系统mysql数据库中存储邮件系统内容的表结构是不一样的,导致iredmail邮件系统认不出原邮件系统的账户信息。请问如何解决这个问题。

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

建议只导出必要的字段,再导入到 iRedMail 的数据库中。

我有好久没关注 ExtMail,对它的表结构不了解。如果你能将它的表结构贴上来(不要以附件形式贴)会有利于别人帮忙分析。

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

extmail数据表结构如下:
alias,domain,domain_manager,mailbox,manager
一共是这五个表,表的类型都是MyISAM

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

找到一篇有关迁移的文章,各位高手帮忙看一下,http://www.chinafu.com/info/edition-view-2632-1.html。但是在iredmail0.7.0版本的数据库中没有找到vmail数据库和vmail.mailbox 表。另外,不知道上文提到的脚本(http://iredmail.googlecode.com/svn/trunk/iRedMail/tools/migrate_extmail_mailbox.sh
)是否适用于iredmail0.7.0版本。请高手指点。本人菜鸟,希望高手能给出详细操作步骤。先谢谢大家了。。

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

yizhongrenyy 写道:

extmail数据表结构如下:
alias,domain,domain_manager,mailbox,manager
一共是这五个表,表的类型都是MyISAM

您没有将具体的表结构展示出来,这样没法分析啊。

这个脚本 http://iredmail.googlecode.com/svn/trun … mailbox.sh 仍然可以用,但是要去掉 netdiskquota 字段。

这里是去掉 netdiskquota 后的脚本。脚本文件里已经对如何使用有详细的解释,这里就不赘述了。

#!/usr/bin/env bash

# Author:   Zhang Huangbin (michaelbibby <at> gmail.com )
# Date:     2008.06.11
# Purpose:  Migrate ExtMail MySQL 'mailbox' table to iRedMail format.

# Usage:
#   * Run into MySQL command line with privilege user, e.g. root.
#       # mysql -uroot -p extmail
#   * Select some column from mailbox table:
#       mysql> SELECT username,password,name,maildir,quota,domain,createdate,active
#            > INTO OUTFILE '/tmp/mailbox.sql'
#            > FROM mailbox;
#   * Run this script:
#       # sh migrate_extmail_mailbox.sh /tmp/mailbox.sql
#     It will create a new file: /tmp/mailbox.sql.new
#   * Import this new file in MySQL command line:
#       mysql> USE vmail;
#       mysql> SOURCE /tmp/mailbox.sql.new;

usage()
{
    echo -e "\nUsage: sh $0 script\n"
}

[ X"$#" != X"1" ] && usage && exit 255 

OUTPUT_SQL="$1.iRedMail"
echo ''> ${OUTPUT_SQL}

while read line; do
    username="$(echo $line | awk '{print $1}')"
    password="$(echo $line | awk '{print $2}')"
    maildir="$(echo $line | awk '{print $3}' | awk -F'Maildir/' '{print $1}' | tr [A-Z] [a-z] )"
    quota="$(echo $line | awk '{print $4}')"
    domain="$(echo $line | awk '{print $5}')"
    createdate="$(echo $line | awk '{print $6, $7}')"
    active="$(echo $line | awk '{print $8}')"

    echo $quota | grep -i 'S$' >/dev/null 2>&1
    if [ X"$?" == X"0" ]; then
        quota="$(echo $quota | sed 's/S$//')"
        quota="$(expr \( $quota / 1024 \) )"
    else
        :
    fi

    cat >> ${OUTPUT_SQL} <<EOF
INSERT INTO mailbox (username, password, maildir, quota, domain, created, active) values ("$username", "$password", "$maildir", $quota, "$domain", "$createdate", "$active");
EOF
done < $1

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

数据库是extmail,里面一共有5个表。分别是:alias,domain,domain_manager,mailbox,manager
1、在alias里面,有这些项:address    goto    domain    createdate    active
2、在domain里面,有这些项:domain    description    hashdirpath    maxalias    maxusers    maxquota    maxnetdiskquota    transport    can_signup    default_quota    default_netdiskquota    default_expire    disablesmtpd    disablesmtp    disablewebmail    disablenetdisk    disableimap    disablepop3    createdate    expiredata    active
3、在domain_manager里面,有这些项:username    domain    createdate    active
4、在mailbox里面,有这些项:
username    uid    password    clearpwd    name    mailhost    maildir    homedir    quota    netdiskquota    domain    uidnumber   gidnumber    createdate    expiredate    active    disablepwdchange    disablesmtpd    disablesmtp    disablewebmail    disablenetdisk    disableimap    disablepop3    question    answer
5、在manager里面,有这些项:username   password   type    uid    name    question    answer    disablepwdchange    createdate    expiredate    active
不知道这是不是需要向您提供的,万分感谢您的帮助。

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

上面的帖子已经提供了脚本,不知道你现在实际测试的情况怎样?

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

-> SELECT username,password,name,maildir,quota,domain,createdate,active
不知道为什么?您可以远程一下我的机器吗?我的QQ1150533237

回复: 虚心求教:mysql存储的账户密码信息从extmail迁移到iredmail问题

当执行mysql> SELECT username,password,name,maildir,quota,domain,createdate,active
显示-> SELECT username,password,name,maildir,quota,domain,createdate,active
不知道为什么?您可以远程一下我的机器吗?我的QQ1150533237