首页 > 脚本编程 > Mdaemon迁移到Icewarp实录
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

Mdaemon迁移到Icewarp实录

因mdaemon在windows上运行,有磁盘利用率低,不稳定等因素,所以有了迁入Icewarp的故事 。

前期装Centos 安装 上icewarp软件,在安装icewarp之前,OS需要特别需要安装mysql,mysql-server不然后面会报错。icewarp会用mysql软件包中的一件模块 。双方就绪之后,找个周末开始了20多个小时 的加班 。

下面是过程 实录 ,让偶慢慢说来哈。

1.mdaemon停止smtp服务,只开pop3服务让停机后邮件发到指定帐户 ,由同事完成

2.mdaemon停机后,copy邮件至sata阵列,然后利用脚本把中文目录 改成拼音 ,然后将此SATA阵列挂载至Icewarp系统并COPY数据至linux文件系统,此步可能花费较长时间

如何挂载在此不再叙述,用的是EMC存储 。

3.迁移

a)从服务器导出所有帐户并处理指定格式,脚本如下:

./tool.sh export account *@made-in-china.com u_mailbox > /tmp/accounts.txt //导出所有邮箱信息
cut -f 2 -d ',' /tmp/accounts.txt > /tmp/account.txt //截取所有用户名字段去除群组帐户

b)复制邮件改名脚本如下:

#/bin/bash
#copy all mail and rename *.msg to *.imap
for i in `cat /root/aa`
do
        mkdir -p /opt/icewarp/mail/made-in-china.com/$i/inbox/
        find /root/$i -maxdepth 1 -name \*.msg | xargs -I {} cp -p {} /opt/icewarp/mail/made-in-china.com/$i/inbox/
        #creat mailsentbox
        mkdir -p /opt/icewarp/mail/made-in-china.com/$i/\&XfJT0ZAB-
        cp -rfp /root/$i/Sent.IMAP/* /opt/icewarp/mail/made-in-china.com/$i/\&XfJT0ZAB-/
        cp -rfp /root/$i/Inbox.IMAP/* /opt/icewarp/mail/made-in-china.com/$i/inbox/
        #delete IMAP surfix
        cd /opt/icewarp/mail/made-in-china.com/$i/inbox/ && for j in *IMAP ;do mv $j `echo ${j%.IMAP}`;done
        find /opt/icewarp/mail/made-in-china.com/$i/ -name \*.msg | xargs -I {} rename msg imap {}
        unset i j
done

注:前提是现Mdaemon系统中所有帐户名必须转化为Icewarp一致,即汉字必须转换成拼音,如土豆转换成tudou

c)自定义 用户的导入

从excel表的数据格式必须如下表格所示:

Email地址 邮件地址 用户名 密码 认证类型 帐户类型 转发地址
a@b.c a a 123456 0 1 d@e.f


导入命令如下:

./tool.sh import account 222.txt u_mailbox u_name u_password U_AuthMode U_AccountType U_ForwardTo

注:源文件的表格第一列在实际导入时未使用,仅作domain识别用。

中文导入乱码问题解决方法如下:

在Windows环境下安装Icewarp服务端软件,然后把要导入的文件处理好,格式必须为ANSI,然后类似如下命令导入:

C:\Documents and Settings\yinxuexiang>tool -r=icewarp,123456,192.168.16.155:3200
0 import account "d:\Program Files\IceWarp\222.txt" u_mailbox u_name u_password
U_AuthMode U_AccountType U_ForwardTo

d)邮件列表

从Mdaemon中导出列表文件,经过文本处理成如下格式,即只保留email地址

a@b.c

相关脚本 如下:

cut -f 1 -d ' ' /tmp/office_tmp >/opt/icewarp/config/domain name/office.txt

//以office列表为例

经过测试Icewarp的邮件列表在服务器上路径为/opt/icewarp/config/domainname/maillistname.txt.
此步需要注意因原邮件列表中成员有"只读","发送","摘要"三种权限,如是真值为1,假为0。而在Icewarp中这三种值分别1,2,4。而且文件格式不一样,需要后期处理。
从mdaemon导出来的列表到Icewarp需要经过以下处理,如下:


find /tmp/test -name *.txt >/tmp/test/list

#/bin/bash
for i in `cat /tmp/test/list`
do
sed '1,67d' $i |sed '/^$/d'|cut -f 1 -d ' '|bash /tmp/test.sh > $i
unset i
done

#test的处理脚本如下:

#/bin/bash
while read line
do
        case $line in
        \$*)
                        echo $line |sed 's/.*/&;2/'|sed 's/^.//g'
                        ;;
        ^*)
                        echo $line |sed 's/.*/&;1/'|sed 's/^.//g'
                        ;;
        *)
                        echo $line
                        ;;
        esac
done < 2.txt

#test.sh用下面的更简洁
sed '/^\$/s/\$\(.*\)/\1;1/;/^^/s/\^\(.*\)/\1;2/'   urfile


4.如第3步成功,则设置远程帐户用于收取第1步中临时收取的邮件,即Icewarp远程帐户功能。
5.如果第3步失败则存储盘挂回原Mdaemon系统,回滚至原邮件系统,查找分析失败原因。
6.如第4步成功,则重新安装原Mdaemon操作系统并安装Icewarp软件,导入临时Icewarp的配置信息和处理过的邮件及Webmail页面,最后导入激活服务器导入新license。最后测试有无问题。

                                        
  1. 还没有评论
评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed