공유 glusterfs 디스크가 있는 두 개의 서버가 있는데 둘 다 dovecot을 실행하고 이 공유 디스크에서 메일을 제공합니다. 사용자는 이 서버 중 하나에서만 메일을 읽지만 메일은 두 서버 모두에 전달됩니다. 때때로 받은 편지함 maildir 폴더에 액세스할 때 문제가 발생합니다.
IMAP(사용자): 열기(/home/user/Maildir/dovecot-uidlist) 실패: 권한이 거부되었습니다.
사용자가 받은편지함을 열 수 없습니다. 다른 폴더에 액세스하는 것은 잘 작동합니다. dovecot 인덱스 파일을 삭제하고 dovecot을 다시 시작하면 모든 것이 잘 작동합니다.
이 설정을 더욱 안정적으로 만들려면 어떻게 해야 합니까?
두 서버 모두의 내 비둘기장 설정:
mmap_disable = no
dotlock_use_excl = yes
mail_nfs_storage = yes
mail_nfs_index = no
다른 모든 방법이 실패하면 로그에 오류가 있는 경우 dovecot 인덱스 파일을 정리하는 bash 스크립트를 만들 수 있습니다.
답변1
IMAP/SMTP 저장소의 백엔드 저장소로 사용하지 않고 몇 가지 프로젝트에 glusterfs를 배포했습니다.
그러나 경험을 통해 다음과 같은 몇 가지 사실을 알 수 있습니다.
우선 IMAP 및 SMTP와 같이 트랜잭션이 많은 워크로드에서 스토리지 백엔드에 분산 파일 시스템을 사용하는 것을 권장하지 않습니다. 잘 작동하지 않기 때문에 주로 두 가지 이유, 즉 높은 대기 시간과 파일 잠금 문제 때문입니다.
둘째, Gluster Freenode 채널에서 꽤 오랜 시간을 보내면서 사람들이 Dovecot에 대해 보고하고 Gluster의 지속적인 인덱스 손상에 대해 불평하는 것을 보았습니다. 따라서 다른 백 스토리지 복제 솔루션, dsync 복제 또는 이와 유사한 솔루션을 활용하는 것이 좋습니다.
도움이 되었기를 바랍니다.
답변2
mail_nfs_index = yes를 입력하고 항상 동일한 IP를 동일한 백엔드 서버로 리디렉션하는 프록시를 사용해야 한다고 생각합니다. 이 링크가 도움이 될 수 있습니다: https://wiki.dovecot.org/MailLocation/SharedDisk