Hi,
I'm using Dovecot 1.0-b8. We use a shared 'support' account for incoming support mail. For security reasons we want to instead have everyone with their own account, accessing a shared 'support' folder. So I've configured dovecot with a public 'Support' namespace:
default_mail_env = maildir:/imap/mailboxes/%u
namespace private { separator = / prefix = inbox = yes } namespace public { separator = / location = maildir:/imap/mailboxes/support:CONTROL=/imap/mailboxes/%u/shared-settings/support/control prefix = Support/ hidden = no }
So now:
- User 'support' logs in (this is the user whose folder is being shared). Dovecot creates a dovecot-uidlist file:
root@redback:/imap/mailboxes/support/.INBOX.test# cat dovecot-uidlist 1 1147757548 9 1 1147755677.P8078Q3M183587.redback.sydney.atlassian.com:2,RSace 2 1147755677.P8078Q2M183587.redback.sydney.atlassian.com:2,abcdf 3 1147755677.P8078Q1M183587.redback.sydney.atlassian.com:2,Sabcd 4 1147756077.P8078Q8.redback.sydney.atlassian.com:2,Sabcd 5 1147756440.P8461Q3M643698.redback.sydney.atlassian.com:2,Sa 6 1147756440.P8461Q2M643698.redback.sydney.atlassian.com:2,Sa 7 1147756440.P8461Q1M643698.redback.sydney.atlassian.com:2,Sa 8 1147756440.P8461Q0M643698.redback.sydney.atlassian.com:2,Sa root@redback:/imap/mailboxes/support/.INBOX.test# ls -la total 60 drwxrwx--- 5 jturner mail 4096 May 16 15:32 . drwxrwxrwx 59 support mail 4096 May 16 15:31 .. drwxrwx--- 2 jturner mail 4096 May 16 15:18 cur -rw-rw-rw- 1 support mail 448 May 16 15:32 dovecot.index -rw-rw-rw- 1 support mail 21504 May 16 15:32 dovecot.index.cache -rw-rw-rw- 1 support mail 512 May 16 15:32 dovecot.index.log -rw------- 1 support mail 72 May 16 15:28 dovecot-keywords -rw-rw-rw- 1 jturner mail 0 May 16 14:52 dovecot-shared -rw-rw-rw- 1 support mail 516 May 16 15:32 dovecot-uidlist drwxrwx--- 2 jturner mail 4096 May 16 15:01 new drwxrwx--- 2 jturner mail 4096 May 16 15:14 tmp root@redback:/imap/mailboxes/support/.INBOX.test#
- If I now log in as 'jturner' and subscribe to this folder, there appears to be nothing in the 'test' folder. On disk, the folder subscription is registered but the test folder's CONTROL directory is empty:
ls /imap/mailboxes/jturner/shared-settings/support/control/
subscriptions # cat /imap/mailboxes/jturner/shared-settings/support/control/subscriptions INBOX.test # ls /imap/mailboxes/jturner/shared-settings/support/control/.INBOX.test/ #
Restarting dovecot and Thunderbird makes no difference.
However, if I delete dovecot.index and dovecot.index.log from /imap/mailboxes/support/.INBOX.test/, then suddenly it works. User 'jturner' can view the folder contents, and a uidlist file for them appears:
# cat /imap/mailboxes/jturner/shared-settings/support/control/.INBOX.test/dovecot-uidlist 1 1147758095 9 1 1147755677.P8078Q3M183587.redback.sydney.atlassian.com:2,RSace 2 1147755677.P8078Q2M183587.redback.sydney.atlassian.com:2,abcdf 3 1147755677.P8078Q1M183587.redback.sydney.atlassian.com:2,Sabcd 4 1147756077.P8078Q8.redback.sydney.atlassian.com:2,Sabcd 5 1147756440.P8461Q3M643698.redback.sydney.atlassian.com:2,Sa 6 1147756440.P8461Q2M643698.redback.sydney.atlassian.com:2,Sa 7 1147756440.P8461Q1M643698.redback.sydney.atlassian.com:2,Sa 8 1147756440.P8461Q0M643698.redback.sydney.atlassian.com:2,Sa
Although the contents is the same (1-8), the UIDVALIDITY at the top is different to that for the 'support' user:
# head -1 /imap/mailboxes/jturner/shared-settings/support/control/.INBOX.test/dovecot-uidlist 1 1147758095 9 # head -1 /imap/mailboxes/support/.INBOX.test/dovecot-uidlist 1 1147757548 9
and now if I log back in as 'support' and access the folder, dovecot complains:
dovecot: May 16 15:47:05 Error: IMAP(support): Corrupted index cache file /imap/mailboxes/support/.INBOX.test/dovecot.index.cache: indexid changed
Switching back and forth results in various errors:
dovecot: May 16 15:48:04 Error: IMAP(support): Corrupted transaction log file /imap/mailboxes/support/.INBOX.test/dovecot.index.log: end_offset (656) > current sync_offset (512) dovecot: May 16 15:48:04 Error: IMAP(support): Corrupted transaction log file /imap/mailboxes/support/.INBOX.test/dovecot.index.log: invalid indexid (1147758095 != 1147757548) dovecot: May 16 15:48:04 Error: IMAP(support): Corrupted transaction log file /imap/mailboxes/support/.INBOX.test/dovecot.index.log: invalid new transaction log sequence (2 >= 2) dovecot: May 16 15:48:04 Error: IMAP(support): Lost transaction log file /imap/mailboxes/support/.INBOX.test/dovecot.index.log seq 1
In the wild, I've seen frequent occurrences of this error, where dovecot seems to switch between the UIDVALIDITY of 'support' and a user's dovecot-uidlists:
dovecot: May 16 13:56:28 Error: IMAP(jturner): Maildir /imap/mailboxes/support/.INBOX sync: UIDVALIDITY changed (1147751603 -> 1147686345)
and here's it toggling back from 'support' to jturner's dovecot-uidlist uidvalidity:
dovecot: May 16 14:16:04 Error: IMAP(support): Maildir /imap/mailboxes/support/.INBOX sync: UIDVALIDITY changed (1147752716 -> 1147751603)
I've also seen plenty of processes being killed, seemingly at random, about 3 or 4 a minute:
# cat /usr/local/logs/dovecot | grep killed.wit ... dovecot: May 16 12:00:16 Error: child 32706 (imap) killed with signal 6 dovecot: May 16 12:00:16 Error: child 32649 (imap) killed with signal 14 dovecot: May 16 12:00:45 Error: child 32412 (imap) killed with signal 6 dovecot: May 16 12:01:02 Error: child 32702 (imap) killed with signal 6 dovecot: May 16 12:01:02 Error: child 368 (imap) killed with signal 6 dovecot: May 16 12:01:02 Error: child 357 (imap) killed with signal 6 dovecot: May 16 12:01:16 Error: child 383 (imap) killed with signal 6 dovecot: May 16 12:02:26 Error: child 32297 (imap) killed with signal 6 ...
So I'm confused. Am I doing something stupid? Why is there a common .cache file (it doesn't get created in the CONTROL dir), but not a common dovecot-uidlists? Is anyone actually *using* shared folders? :)
Thanks,
Jeff