Anyone know how to setup dovecot with mdbox so that it can be used through shared storage from multiple hosts? I've setup a gluster volume and am sharing it between 2 test clients. I'm using postfix/dovecot LDA for delivery and I'm using postal to send mail between 40 users. In doing this, I'm seeing these errors in the logs Mar 21 09:36:29 test-gluster-client2 dovecot: lda(testuser34): Error: Fixed index file /mnt/testuser34/mdbox/storage/dovecot.map.index: messages_count 272 -> 271 Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error: Log synchronization error at seq=4,offset=3768 for /mnt/testuser28/mdbox/storage/dovecot.map.index: Append with UID 516, but next_uid = 517 Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error: Log synchronization error at seq=4,offset=4220 for /mnt/testuser28/mdbox/storage/dovecot.map.index: Extension record update for invalid uid=517 Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error: Log synchronization error at seq=4,offset=5088 for /mnt/testuser28/mdbox/storage/dovecot.map.index: Extension record update for invalid uid=517 Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Warning: fscking index file /mnt/testuser28/mdbox/storage/dovecot.map.index Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser34): Warning: fscking index file /mnt/testuser34/mdbox/storage/dovecot.map.index This is my dovecot config currently: jdevine at test-gluster-client2:~> dovecot -n # 2.0.13: /etc/dovecot/dovecot.conf # OS: Linux 3.0.0-13-server x86_64 Ubuntu 11.10 lock_method = dotlock mail_fsync = always mail_location = mdbox:~/mdbox mail_nfs_index = yes mail_nfs_storage = yes mmap_disable = yes passdb { driver = pam } protocols = " imap" ssl_cert = </etc/ssl/certs/dovecot.pem ssl_key = </etc/ssl/private/dovecot.pem userdb { driver = passwd }
On 21.3.2012, at 17.56, James Devine wrote:> Anyone know how to setup dovecot with mdbox so that it can be used through > shared storage from multiple hosts? I've setup a gluster volume and am > sharing it between 2 test clients. I'm using postfix/dovecot LDA for > delivery and I'm using postal to send mail between 40 users. In doing > this, I'm seeing these errors in the logsDovecot assumes that the filesystem behaves the same way as regular local filesystems.> Mar 21 09:36:29 test-gluster-client2 dovecot: lda(testuser34): Error: Fixed > index file /mnt/testuser34/mdbox/storage/dovecot.map.index: messages_count > 272 -> 271 > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error: Log > synchronization error at seq=4,offset=3768 for > /mnt/testuser28/mdbox/storage/dovecot.map.index: Append with UID 516, but > next_uid = 517Looks like gluster doesn't fit that assumption. So, the solution is the same as with NFS: http://wiki2.dovecot.org/Director
On Wed, 21 Mar 2012 09:56:12 -0600, James Devine <fxmulder at gmail.com> wrote:> Anyone know how to setup dovecot with mdbox so that it can be usedthrough> shared storage from multiple hosts? I've setup a gluster volume and am > sharing it between 2 test clients. I'm using postfix/dovecot LDA for > delivery and I'm using postal to send mail between 40 users. In doing > this, I'm seeing these errors in the logs > > Mar 21 09:36:29 test-gluster-client2 dovecot: lda(testuser34): Error:Fixed> index file /mnt/testuser34/mdbox/storage/dovecot.map.index:messages_count> 272 -> 271 > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error:Log> synchronization error at seq=4,offset=3768 for > /mnt/testuser28/mdbox/storage/dovecot.map.index: Append with UID 516,but> next_uid = 517 > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error:Log> synchronization error at seq=4,offset=4220 for > /mnt/testuser28/mdbox/storage/dovecot.map.index: Extension record update > for invalid uid=517 > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Error:Log> synchronization error at seq=4,offset=5088 for > /mnt/testuser28/mdbox/storage/dovecot.map.index: Extension record update > for invalid uid=517 > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser28): Warning: > fscking index file /mnt/testuser28/mdbox/storage/dovecot.map.index > Mar 21 09:36:30 test-gluster-client2 dovecot: lda(testuser34): Warning: > fscking index file /mnt/testuser34/mdbox/storage/dovecot.map.index > > > This is my dovecot config currently: > > jdevine at test-gluster-client2:~> dovecot -n > # 2.0.13: /etc/dovecot/dovecot.conf > # OS: Linux 3.0.0-13-server x86_64 Ubuntu 11.10 > lock_method = dotlock > mail_fsync = always > mail_location = mdbox:~/mdbox > mail_nfs_index = yes > mail_nfs_storage = yes > mmap_disable = yes > passdb { > driver = pam > } > protocols = " imap" > ssl_cert = </etc/ssl/certs/dovecot.pem > ssl_key = </etc/ssl/private/dovecot.pem > userdb { > driver = passwd > }I was able to get dovecot working across a gluster cluster a few weeks ago and it worked just fine. I would recommend using the native gluster mount option (need to install gluster software on clients), and using distributed replicated as your replication mechanism. If you're running two gluster servers you should have a replica count of two with distributed replicated. You should test first to make sure you can create a file in both mounts and see it from every mount point in the cluster, as well as interact with it. It's also very important to make sure your servers are running with synchronized clocks from an NTP server. Very bad things happen to a (dovecot or gluster) cluster out of sync with NTP.
On 23.3.2012, at 15.39, <list at airstreamcomm.net> <list at airstreamcomm.net> wrote:> I was able to get dovecot working across a gluster cluster a few weeks ago > and it worked just fine. I would recommend using the native gluster mount > option (need to install gluster software on clients), and using distributed > replicated as your replication mechanism.Have you tried stress testing it with imaptest? Run in parallel for both servers: imaptest host=gluster1 user=testuser pass=testpass imaptest host=gluster2 user=testuser pass=testpass http://imapwiki.org/ImapTest And see if Dovecot logs any errors.