Dovecot Mail Replikation
Ob es für ein Failover-Cluster sein soll oder ein anderer Grund dafür vorliegt, dass alle Emails vom Server auf einen anderen Server übertragen werden. Dovecot verfügt über einen eigenen Replikationsmechanismus (dsync) und kann selbsttätig die Email-Konten synchronisieren. Um die Replikation zu aktivieren ist nicht viel nötig.
Im hier vorliegenden Fall ist das System ein Server auf dem ISPConfig installiert ist. Folglich sind die Benutzerkonten von Postfix/Dovecot keine Systemuser sondern sind in der MySQL Datenbank hinterlegt in der Tabelle "mail_users". Aus diesem Grund müssen wir Dovecot anweisen die Liste der Benutzer aus dieser Tabelle zu beziehen, damit er überhaupt erst mal weiß welche Postfächer repliziert werden sollen.
Dazu tragen wir zunächst in die /etc/dovecot/dovecot-sql.conf folgende Zeile ein:
iterate_query = SELECT email as user FROM mail_user
Danach muss die Datei /etc/dovecot/dovecot.conf bearbeitet werden. Folgender Inhalt muss da rein:
# Enable the replication plugin globally
mail_plugins = $mail_plugins notify replication quota
# Both the client and the server need to have a shared secret
doveadm_password = replication_password <- Den Passwortstring bitte anpassen!
# configure how many dsyncs can be run in parallel (10 by default)
replication_max_conns = 10
service aggregator {
fifo_listener replication-notify-fifo {
user = vmail
mode = 0666
}
unix_listener replication-notify {
user = vmail
mode = 0666
}
}
service replicator {
unix_listener replicator-doveadm {
mode = 0666
}
}
service doveadm {
user = vmail
inet_listener {
port = 4711
}
}
service config {
unix_listener config {
user = vmail
}
}
# use tcp:ip as the dsync target
plugin {
replication_full_sync_interval = 1 hours
mail_replica = tcp:192.168.0.106:4711 <- Die IP bitte anpassen!
}
protocol imap {
mail_plugins = quota imap_quota notify replication
}
Genau die beiden gleichen Schritte müssen nun auf dem Zielserver gemacht werden. Der Passwortstring und die IP sind natürlich anzupassen, sonst finden sich die Server natürlich nicht. Nun beide Dovecots mit
/etc/init.d/dovecot restart neu starten und alles müsste laufen.
Mit doveadm replicator status '*' bzw. doveadm replicator status kann man sich dann genauer anschauen was passiert.