主题: 一个不同的从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 编辑 ]