Quoting "William L. Thomson Jr." wlt-ml@o-sinc.com:
You are not alone!
On Wednesday, July 06, 2016 01:15:34 PM Remko Lodder wrote:
Dear list,
I have setup a master-master replication setup. My primairy MX's send email over on a DNS loadbalanced way, so DNS is doing some kind of round-robin way of sending mail to both master servers.
I found out, that on one of the two machines, the email synchronisation is heavily delayed. Lets assume server A receives a mail from the MX; it synchronises almost instantly with the other server.
Whenever server B receives the email, it could take up to several hours to synchronise the email, it seems that it is not detected prior.
I have been dealing with this for months. http://www.dovecot.org/list/dovecot/2016-March/103680.html
For a band aid I use this crontab entry. On the 2nd mail server.
*/15 * * * * root /usr/bin/doveadm sync -u "*" remote:mail1 <snip>
Are you guys using LMTP to deliver from your MX server to the mailbox server?
I have a similar setup, but not yet synched, because as I understand it - using 'deliver' to drop mail into an NFS mount won't inititate a sync. I have to migrate my procmail scripts to sieve (and use the execute plugin) and change my final delivery to be a redirect to LMTP. Not sure how replication will work when running old procmail scripts from sieve...
In any case.. If you're piping to dovecot's deliver/dovecot-lda, here is a rudimentary LMTP script I hacked together that I planned to use to replace deliver with... I'd grab the 'master' mailbox server IP for each user for the command line.
#!/usr/bin/perl
use Net::LMTP; use Getopt::Std;
$opts{'s'} = "localhost";
$opts{'p'} = "24";
$opts{'f'} = 'root@' . hostname
;
chomp($opts{'f'});
chomp($opts{'s'});
getopts("hs:p:f:u:", \%opts);
if ($opts{'h'}) { print " lmtpsend [-s lmtpserver] [-f fromaddress] [-u subject] toaddress [...]
lmtpsend will send an email from the commandline.
Options: -s lmtpserver Sets the lmtpserver for where to send the mail through. -f fromaddress Sets the email address to be used on the From: line. -u subject Sets the email subject to be used from the Subject line. toaddress Where you want the email sent to.
"; exit; }
die "no recepients to send mail to" if ($#ARGV < 0);
@emailbody = <STDIN> ;
# send the message
$message = Net::LMTP->new($opts{'s'},$opts{'p'}) || die "can't talk to server $opts{'s'}\n";
$message->mail($opts{'f'}); $message->to(@ARGV) || die "failed to send to the recepients ",join(",",@ARGV),": $!"; $message->data(); $message->datasend("To: " . join(", ",@ARGV) . "\n"); $message->datasend(@emailbody); $message->dataend(); $message->quit;
Rick