#!/usr/bin/perl
use DBI;
my $user = 'master';
my $password = 'password';
my @hosts = ('10.1.2.1','10.1.2.2');
my $dbname = 'dbmail';
my $dsn;
my $dbh;
my $m_user = 'master';
my $m_password = 'master_password';
my $m_host = 'localhost';
my $m_dbname='master';
my $m_dsn = 'DBI:mysql:'.$m_dbname.':'.$m_host;
my $m_dbh = DBI->connect($m_dsn, $m_user, $m_password);
$m_dbh->{'AutoCommit'} = 0;
$m_dbh->do("truncate table aliases;");
$m_dbh->do("truncate table domains;");
foreach $host (@hosts)
{
$dsn = 'DBI:mysql:'.$dbname.':'.$host;
$dbh = DBI->connect($dsn, $user, $password);
$query = "select da.alias from dbmail_aliases AS da JOIN dbmail_domains AS dd ON (SUBSTRING_INDEX(da.alias,'\@',-1) = dd.domain)";
$sth=$dbh->prepare($query);
$sth->execute;
if ( not $sth ) {
print "MySQL error on $host $DBI:err: $DBI:errstr\n";
exit;
} else {
while (@arr = $sth->fetchrow) {
$email=$arr[0];
($t,$domain) = split (/@/,$email);
$m_dbh->do("insert ignore into aliases (alias,deliver_to) values ('$email','$host')");
$m_dbh->do("insert ignore into domains (domain,transport,dbmail_host) values ('$domain','lmtp:$host:24','$host')");
};
};
};
$m_dbh->commit();