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.