1.4. Configuration de la réplication entre deux serveurs Dovecot
Avec la réplication bidirectionnelle, vous pouvez rendre votre serveur Dovecot hautement disponible, et les clients IMAP et POP3 peuvent accéder à une boîte aux lettres sur les deux serveurs. Dovecot suit les changements dans les journaux d'indexation de chaque boîte aux lettres et résout les conflits de manière sûre.
Effectuez cette procédure sur les deux partenaires de réplication.
La réplication ne fonctionne qu'entre paires de serveurs. Par conséquent, dans un grand cluster, vous avez besoin de plusieurs paires de serveurs indépendants.
Conditions préalables
- Les deux serveurs utilisent le même backend d'authentification. Il est préférable d'utiliser LDAP ou SQL pour gérer les comptes de manière centralisée.
-
La configuration de la base de données des utilisateurs de Dovecot supporte le listing des utilisateurs. Utilisez la commande
doveadm user '*'
pour le vérifier. -
Dovecot accède aux boîtes aux lettres sur le système de fichiers en tant qu'utilisateur
vmail
au lieu de l'ID de l'utilisateur (UID).
Procédure
Créez le fichier
/etc/dovecot/conf.d/10-replication.conf
et effectuez-y les étapes suivantes :Activez les plug-ins
notify
etreplication
:mail_plugins = $mail_plugins notify replication
mail_plugins = $mail_plugins notify replication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajouter une section
service replicator
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Avec ces paramètres, Dovecot démarre au moins un processus réplicateur lorsque le service
dovecot
démarre. De plus, cette section définit les paramètres du socketreplicator-doveadm
.Ajoutez une section
service aggregator
pour configurer le tuyaureplication-notify-fifo
et la prisereplication-notify
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajouter une section
service doveadm
pour définir le port du service de réplication :service doveadm { inet_listener { port = 12345 } }
service doveadm { inet_listener { port = 12345 } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Définir le mot de passe du service de réplication
doveadm
:doveadm_password = replication_password
doveadm_password = replication_password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Le mot de passe doit être le même sur les deux serveurs.
Configurer le partenaire de réplication :
plugin { mail_replica = tcp:server2.example.com:12345 }
plugin { mail_replica = tcp:server2.example.com:12345 }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Facultatif : Définir le nombre maximum de processus parallèles
dsync
:replication_max_conns = 20
replication_max_conns = 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow La valeur par défaut de
replication_max_conns
est10
.
Définir des autorisations sécurisées sur le fichier
/etc/dovecot/conf.d/10-replication.conf
:chown root:root /etc/dovecot/conf.d/10-replication.conf chmod 600 /etc/dovecot/conf.d/10-replication.conf
# chown root:root /etc/dovecot/conf.d/10-replication.conf # chmod 600 /etc/dovecot/conf.d/10-replication.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Activez le booléen SELinux
nis_enabled
pour permettre à Dovecot d'ouvrir le port de réplicationdoveadm
:setsebool -P nis_enabled on
setsebool -P nis_enabled on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Configurez les règles
firewalld
pour autoriser uniquement le partenaire de réplication à accéder au port de réplication, par exemple :firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" firewall-cmd --reload
# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.0.2.1/32" port protocol="tcp" port="12345" accept" # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv6" source address="2001:db8:2::1/128" port protocol="tcp" port="12345" accept" # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Les masques de sous-réseau
/32
pour l'adresse IPv4 et/128
pour l'adresse IPv6 limitent l'accès aux adresses spécifiées.- Effectuez également cette procédure sur l'autre partenaire de réplication.
Recharger Dovecot :
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Vérification
- Effectuer une action dans une boîte aux lettres sur un serveur et vérifier ensuite si Dovecot a répliqué la modification sur l'autre serveur.
Affiche l'état du réplicateur :
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Affiche l'état des réplicateurs d'un utilisateur spécifique :
doveadm replicator status example_user
# doveadm replicator status example_user username priority fast sync full sync success sync failed example_user none 02:05:28 04:19:07 02:05:28 -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow