#!/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();