9.4. 두 개의 Dovecot 서버 간 복제 구성
양방향 복제를 사용하면 Dovecot 서버를 고가용성으로 만들 수 있으며, Cryostat 및 POP3 클라이언트는 두 서버의 email에 액세스할 수 있습니다. Dovecot는 각 제거의 인덱스 로그에서 변경 사항을 추적하고 안전한 방식으로 충돌을 해결합니다.
두 복제 파트너 모두에서 이 절차를 수행합니다.
복제는 서버 쌍 간에만 작동합니다. 결과적으로 대규모 클러스터에서는 여러 개의 독립적인 백엔드 쌍이 필요합니다.
사전 요구 사항
- 두 서버 모두 동일한 인증 백엔드를 사용합니다. LDAP 또는 SQL을 사용하여 계정을 중앙에서 유지하는 것이 좋습니다.
-
Dovecot 사용자 데이터베이스 구성은 사용자 목록을 지원합니다.
doveadm 사용자 '*'명령을 사용하여 이를 확인합니다. -
Dovecot는 사용자 ID(UID) 대신
vmail사용자로 파일 시스템의 Cryostat에 액세스합니다.
프로세스
/etc/dovecot/conf.d/10-replication.conf파일을 생성하고 이 파일에서 다음 단계를 수행합니다.notify및replication플러그인을 활성화합니다.mail_plugins = $mail_plugins notify replication서비스 복제 섹션을 추가합니다.service replicator { process_min_avail = 1 unix_listener replicator-doveadm { mode = 0600 user = vmail } }이러한 설정을 사용하면
dovecot서비스가 시작될 때 Dovecot가 하나 이상의 복제 프로세스를 시작합니다. 또한 이 섹션에서는replicator-doveadm소켓의 설정을 정의합니다.replication-notify-fifo파이프 및replication-notify소켓을 구성하려면서비스 수집기섹션을 추가합니다.service aggregator { fifo_listener replication-notify-fifo { user = vmail } unix_listener replication-notify { user = vmail } }서비스 doveadm섹션을 추가하여 복제 서비스의 포트를 정의합니다.service doveadm { inet_listener { port = 12345 } }doveadm복제 서비스의 암호를 설정합니다.doveadm_password = replication_password두 서버에서 암호가 동일해야 합니다.
복제 파트너를 구성합니다.
plugin { mail_replica = tcp:server2.example.com:12345 }선택 사항: 최대 병렬
dsync프로세스 수를 정의합니다.replication_max_conns = 20replication_max_conns의 기본값은10입니다.
/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.confnis_enabledSELinux 부울을 활성화하여 Dovecot가doveadm복제 포트를 열 수 있도록 허용합니다.setsebool -P nis_enabled on복제 파트너만 복제 포트에 액세스할 수 있도록
firewalld규칙을 구성합니다. 예를 들면 다음과 같습니다.# 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 --reloadIPv6 주소의 IPv4 및
/128의 서브넷 마스크는 지정된 주소에 대한 액세스를 제한합니다.- 다른 복제 파트너에서도 이 절차를 수행합니다.
Dovecot 다시 로드:
# systemctl reload dovecot
검증
- 한 서버의box에서 작업을 수행한 다음 Dovecot가 다른 서버에 변경 사항을 복제했는지 확인합니다.
복제자 상태를 표시합니다.
# doveadm replicator status Queued 'sync' requests 0 Queued 'high' requests 0 Queued 'low' requests 0 Queued 'failed' requests 0 Queued 'full resync' requests 30 Waiting 'failed' requests 0 Total number of known users 75특정 사용자의 복제본 상태를 표시합니다.
# 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 -