1.4. 두 개의 Dovecot 서버 간 복제 구성
양방향 복제를 사용하면 Dovecot 서버를 고가용성으로 만들 수 있으며, Cryostat 및 POP3 클라이언트는 두 서버의 email에 액세스할 수 있습니다. Dovecot는 각 제거의 인덱스 로그에서 변경 사항을 추적하고 안전한 방식으로 충돌을 해결합니다.
두 복제 파트너 모두에서 이 절차를 수행합니다.
복제는 서버 쌍 간에만 작동합니다. 결과적으로 대규모 클러스터에서는 여러 개의 독립적인 백엔드 쌍이 필요합니다.
사전 요구 사항
- 두 서버 모두 동일한 인증 백엔드를 사용합니다. LDAP 또는 SQL을 사용하여 계정을 중앙에서 유지하는 것이 좋습니다.
-
Dovecot 사용자 데이터베이스 구성은 사용자 목록을 지원합니다.
doveadm 사용자 '*'
명령을 사용하여 이를 확인합니다. -
Dovecot는 사용자 ID(UID) 대신
vmail
사용자로 파일 시스템의 Cryostat에 액세스합니다.
프로세스
/etc/dovecot/conf.d/10-replication.conf
파일을 생성하고 이 파일에서 다음 단계를 수행합니다.알림
및복제
플러그인을 활성화합니다.mail_plugins = $mail_plugins notify replication
mail_plugins = $mail_plugins notify replication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 복제 섹션을 추가합니다
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 설정을 사용하면
dovecot
서비스가 시작될 때 Dovecot가 하나 이상의 복제 프로세스를 시작합니다. 또한 이 섹션에서는replicator-doveadm
소켓의 설정을 정의합니다.replication-notify-fifo
파이프 및replication-notify
소켓을 구성하려면서비스 수집기
섹션을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서비스 doveadm
섹션을 추가하여 복제 서비스의 포트를 정의합니다.service doveadm { inet_listener { port = 12345 } }
service doveadm { inet_listener { port = 12345 } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow doveadm
복제 서비스의 암호를 설정합니다.doveadm_password = <replication_password>
doveadm_password = <replication_password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 두 서버에서 암호가 동일해야 합니다.
복제 파트너를 구성합니다.
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 선택 사항: 최대 병렬
dsync
프로세스 수를 정의합니다.replication_max_conns = 20
replication_max_conns = 20
Copy to Clipboard Copied! Toggle word wrap Toggle overflow replication_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.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 nis_enabled
SELinux 부울을 활성화하여 Dovecot가doveadm
복제 포트를 열 수 있도록 허용합니다.setsebool -P nis_enabled on
# setsebool -P nis_enabled on
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 복제 파트너만 복제 포트에 액세스할 수 있도록
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 --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 IPv6 주소의 IPv4 및
/128
의 서브넷 마스크는 지정된 주소에 대한 액세스를 제한합니다.- 다른 복제 파트너에서도 이 절차를 수행합니다.
Dovecot 다시 로드:
systemctl reload dovecot
# systemctl reload dovecot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
- 한 서버의box에서 작업을 수행한 다음 Dovecot가 다른 서버에 변경 사항을 복제했는지 확인합니다.
복제자 상태를 표시합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 특정 사용자의 복제본 상태를 표시합니다.
doveadm replicator status <user_name>
# doveadm replicator status <user_name> username priority fast sync full sync success sync failed <user_user> none 02:05:28 04:19:07 02:05:28 -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow