Формат: perl
Время создания: 18.05.2022, 08:46 UTC
Будет удалена: 24.05.2032, 08:46 UTC

RAW

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

Упакуем пароль или код в cсылку для передачи