主题: 一个不同的从vpopmail转到iredmail的脚本

我们的邮件系统原来是采用的 qmail + vpopmail + 一个很老的webmail : iGenius.
现在转移到iRedmail , 在邮件转移的过程中,我发现站里原来的那个email邮件转移的方式在使用中有些问题。
1、转移之后,在 postfixadmin中显示  alias 的数目为负数。
2、一些细节有问题,例如 建立、修改时间,用户名称等等。
所以,我写了一个php脚本来实现帐户的转移,如下:
主要的方式是
1、首先删除掉原来测试时建立的所有账号
2、从vpopmail里导出一个账号,
     然后生成相应的postfix 账号和 对应的alias
    (alias 必须要建立一个和账号对应的。这个是根据自己创建账号之后,vmail里面的变化得到的结论)
3、最后生成的 sql 文件,直接用 mysql 导入即可。
===================================================================================================
#!/usr/bin/php -q
<?
$mysql_vpopmail = "192.168.1.xx";
$mysql_user = "root";
$mysql_password="password";

//首先删除之前建立的所有测试账号
echo "delete from mailbox where domain='test.com';\n";
echo "delete from alias where domain = 'test.com';\n";

$link = mysql_connect($mysql_vpopmail, $mysql_user, $mysql_password);

//从vpopmail中选择
$sql = "select * from vpopmail where pw_domain='test.com'";

$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
        $username = $row['pw_name'];
        $password = $row['pw_passwd'];
        $name     = $row['pw_gecos'];
        $maildir  = 'test.com/'.$username;
        $domain   = 'test.com';
       

        $username = $username."@".'test.com';
        $name = iconv("GBK","UTF-8",$name);
        //这个地方使用iconv 是因为原来的vpopmail库用的是gbk编码,而 vmail库用的是utf8编码。

        $quota    = 1000;

        $sql = "insert into mailbox (username , password , name , maildir , domain , quota, created , modified) values ( '$username' , '$password' , '$name' , '$maildir' , '$domain','$quota' , NOW(),NOW());";
        echo $sql."\n";
        $sql = "insert into alias (address , goto , domain , created , modified ) values ('$username' , '$username' , '$domain' , NOW() , NOW() );";
        echo $sql."\n";
}
?>
===================================================================================================

[ 本帖最后由 denvor 于 2009-6-16 15:51 编辑 ]

回复: 一个不同的从vpopmail转到iredmail的脚本

如果能整理成比较通用的步骤和工具就最好了 :loveliness:

回复: 一个不同的从vpopmail转到iredmail的脚本

应bibby的要求,修改了一下 php 的 东西,将 class 的应用去掉了,直接就可以用。
如果大家要用这个的话,
1、将两个 ====== 之间的文字拷贝到 一个 php 文件里面,
2、然后 chmod +x  这个 php 文件。
3、然后设置好 mysql 权限,不然 php文件也没法连上 mysql 的 vpopmail 数据库。
4、修改 php 文件内容,修改 mysql_vpopmail ,mysql_user , mysql_password 变量。
5、将 test.com 修改为你所用的域名。

最后 直接执行这个 php 文件,将结果 管道到一个文件,
之后把这个文件导入到 vmail 库 即可。

回复: 一个不同的从vpopmail转到iredmail的脚本

加精华。感谢 denvor。

希望对有需要的朋友有所帮助。:loveliness: