Alguns dias atrás procurava uma maneira de migrar centenas de usuario do banco padrão do qmail o cdb para mysql achei que o o mysql seria mais fácil de fazer backup e de montar uma redundandia de servidores , mas depois de procurar bastante não achei muita coisa só o contrario do mysql para cdb e um script em perl que no meu caso nao funcionou pois eu nao tinha vários modulos perl instalados, vi que não era uma coisa assim muito dificil e pensei em escrever esse script em php pois eu tinha o php instalado com suporte a mysql tudo já funionando e ai ficou muito fácil. Como não tenho blog nem nada disso resolvi colocar aqui como email para que esse script possa ajudar os colegas que um dia vão precisar ou estão precisando. se voce já tem o qmail rodadando com cdb você só vai precisar reinstalar o vpopmail com suporte mysql no caso de uma migração de um servidor velho para um novo instale o qmail com vpopmail e suporte ao mysql copie a pasta domain para o novo servidor com o vadddomain crie novamente o dominio ( o vdadddomain vai dar um erro posi o diretorio do dominio ja existe mais vai criar tudo certinho e nao vai apagar nada das contas vai ficar tudo la mesmo ai e so salvar esse script como ex: php-vpopmail-cdb-to-mysql.php alterar o usuario e senha o caminho do vpopmail e rodar no console mesmo php php-vpopmail-cdb-to-mysql.php se nao der nem um erro seus usuarios já foram para o mysql :)
<?php /* * 01.08.2009 Renato Martins */ // script criado para migrar usuarios do qmail em arquivos cdb para mysql $DOMAIN = "midia.com.br"; # Where did you install VPopMail ? $VPOPMAILHOME = "/usr/local/vpopmail"; # The name of your mySQL server. $SERVER = "localhost"; # Username to login to the mySQL server. $USER = "usuario_db_vpopmail"; # The password for mySQL server. $PASSWORD = "Senha_db_vpopmail"; # Database for VPopMail. $DATABASE = "vpopmaildb"; # You shouldn't need to change anything after this line. $d=explode(".", $DOMAIN); $DOMAIN_TABLE =($d[0]); # Create the domain table. //$sql = "CREATE TABLE $DOMAIN_TABLE ( pw_name varchar(32) DEFAULT '' NOT NULL, pw_passwd varchar(255) DEFAULT '' NOT NULL, pw_uid int(11), pw_gid int(11), pw_gecos varchar(255), pw_dir varchar(255), pw_shell varchar(255), KEY stress_test_com_idx (pw_name))"; // inicio da conexão do banco e seleciona a data base $db=mysql_connect( 'localhost', $USER, $PASSWORD )or die ("Não Foi Possivel Se Conectar Ao Banco ").mysql_error(); mysql_select_db($DATABASE, $db)or die ("Não Foi Possivél Selecionar Banco").mysql_error(); // Open vpasswd file $row=file($VPOPMAILHOME.'/domains/'.$DOMAIN.'/vpasswd'); $c='0'; if(is_array($row)){ foreach ($row as $linha) { //$linha=$row[$c]; list($v_name, $v_passwd, $v_uid, $v_gid, $v_gecos, $v_dir, $v_shell) = explode(":", $linha); /* echo ("\n"."email :".$v_name. "\n"."Dominio: ".$DOMAIN. "\n"."Senha: ".$v_passwd. "\n"."user-id: ".$v_uid. "\n"."Group-id :". $v_gid. "\n"."Comentario: ". $v_gecos. "\n"."Diretorio :".$v_dir. "\n"."Shell: ". $v_shell ); */ $sql=("INSERT INTO `vpopmail` (`pw_name` ,`pw_domain` ,`pw_passwd` ,`pw_uid` ,`pw_gid` ,`pw_gecos` ,`pw_dir` ,`pw_shell`) VALUES ('$v_name', '$DOMAIN', '$v_passwd', '$v_uid', '$v_gid', '$v_gecos', '$v_dir', '$v_shell');"); $insere=mysql_query($sql)or die ("nao pude fazer o insert").mysql_error(); // echo "\n".$sql; //$c=($c + 1); } mysql_close($db); } ?> ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd