Felix Ingram
2021-Nov-03 14:57 UTC
Shared folders - dovecot.index.pvt view is inconsistent
Hello all, As part of the system I'm cobbling together, I have a need for sharing folders between users. I've followed the various pieces of documentation and seem to have something working but have encountered an odd issue. When user1 shares a folder with user2, then on first access user2 gets a "permission denied" error when trying to access the folder. If I immediately try to access the folder again, then everything is okay. The logs talk about the index.pvt files being inconsistent, which seems to result in the error the first time but allows access the second. I've searched the mailing lists and it seems that this was seen a few years ago and is due to the index files being empty but there didn't seem to be a resolution. At the moment, I am filing messages into folders under INBOX, which means that the INBOX itself is empty (though I've seen the same behaviour if I put some messages in there as well). Can anyone suggest a fix/workaround? I've included my config and some log entries below. In the logs, the "tester at ..." user is trying to access the folder "INBOX/tester2" shared by "foo123 at ...". (Bonus question: can anyone suggest a mail client that allows easy access to shared folders? For the life of me I can't see how to do it in Thunderbird, so I'm using a python script at the moment.) Thanks in advance, Felix # 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf # Pigeonhole version 0.5.7.2 () # OS: Linux 5.10.16.3-microsoft-standard-WSL2 x86_64 Ubuntu 20.04.3 LTS overlay # Hostname: ptm-dovecot-5b466fb667-gk6f7 auth_debug = yes auth_debug_passwords = yes auth_master_user_separator = * auth_username_chars auth_verbose = yes dict { acl = pgsql:/etc/dovecot/conf.d/dovecot-dict-sql.conf.ext } disable_plaintext_auth = no log_path = /dev/stderr mail_debug = yes mail_location = maildir:/home/vmail/%u mail_plugins = acl master_user_separator = * namespace { inbox = yes location prefix separator = / type = private } namespace { list = children location = maildir:/home/vmail/%%u:INDEXPVT=~/Maildir/shared/%%u prefix = shared/%%u/ separator = / subscriptions = no type = shared } passdb { args = /etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } plugin { acl = vfile:/etc/dovecot/dovecot-acl:cache_secs=6 acl_defaults_from_inbox = yes acl_shared_dict = proxy::acl sieve_default = /etc/dovecot/conf.d/user-to-folder.sieve } protocols = imap lmtp service auth { unix_listener auth-userdb { group = vmail mode = 0600 user = vmail } user = root } service lmtp { inet_listener lmtp { address = 0.0.0.0 port = 24 } } userdb { args = /etc/dovecot/conf.d/dovecot-sql.conf.ext driver = sql } protocol lmtp { log_path = /home/vmail/dovecot-deliver.log mail_plugins = acl sieve postmaster_address = admin at mydomain.com } protocol imap { mail_plugins = acl imap_acl } Log output: Nov 03 14:38:27 : Debug: acl: initializing backend with data: vfile:/etc/dovecot/dovecot-acl:cache_secs=6 Nov 03 14:38:27 : Debug: acl: acl username = tester at dovecot.mydomain.com Nov 03 14:38:27 : Debug: acl: owner = 1 Nov 03 14:38:27 : Debug: acl vfile: Global ACL file: /etc/dovecot/dovecot-acl Nov 03 14:38:27 : Debug: Namespace : type=shared, prefix=shared/%u/, sep=/, inbox=no, hidden=no, list=children, subscriptions=no location=maildir:/home/vmail/%u:INDEXPVT=~/Maildir/shared/%u Nov 03 14:38:27 : Debug: shared: root=/var/run/dovecot, index=, indexpvt=, control=, inbox=, altNov 03 14:38:27 : Debug: acl: initializing backend with data: vfile:/etc/dovecot/dovecot-acl:cache_secs=6 Nov 03 14:38:27 : Debug: acl: acl username = tester at dovecot.mydomain.com Nov 03 14:38:27 : Debug: acl: owner = 0 Nov 03 14:38:27 : Debug: acl vfile: Global ACL file: /etc/dovecot/dovecot-acl Nov 03 14:38:27 : Debug: Mailbox INBOX: Mailbox opened because: SELECT Nov 03 14:38:27 : Debug: acl vfile: file /home/vmail/ tester at dovecot.mydomain.com/dovecot-acl not found Nov 03 14:38:27 : Debug: Namespace : /home/vmail/tester at dovecot.mydomain.com doesn't exist yet, using default permissions Nov 03 14:38:27 : Debug: Namespace : Using permissions from /home/vmail/ tester at dovecot.mydomain.com: mode=0700 gid=default Nov 03 14:38:27 : Debug: acl vfile: file /home/vmail/ tester at dovecot.mydomain.com/dovecot-acl not found Nov 03 14:38:27 : Debug: auth-master: userdb lookup( foo123 at dovecot.mydomain.com): Started userdb lookup Nov 03 14:38:27 : Debug: auth-master: conn unix:/var/run/dovecot/auth-userdb: Connecting Nov 03 14:38:27 : Debug: auth-master: conn unix:/var/run/dovecot/auth-userdb: Client connected (fd=18) Nov 03 14:38:27 auth: Debug: master in: USER 1 foo123 at dovecot.mydomain.com service=imap Nov 03 14:38:27 auth: Debug: sql(foo123 at dovecot.mydomain.com): Performing userdb lookup Nov 03 14:38:27 auth: Debug: sql(foo123 at dovecot.mydomain.com): SELECT home, uid, gid FROM users WHERE userid = 'foo123' AND domain = ' dovecot.mydomain.com' Nov 03 14:38:27 auth: Debug: sql(foo123 at dovecot.mydomain.com): Finished userdb lookup Nov 03 14:38:27 auth: Debug: userdb out: USER 1 foo123 at dovecot.mydomain.com home=/tmp/foo123 uid=5000 gid=5001 Nov 03 14:38:27 : Debug: auth-master: userdb lookup( foo123 at dovecot.mydomain.com): auth USER input: foo123 at dovecot.mydomain.com home=/tmp/foo123 uid=5000 gid=5001 Nov 03 14:38:27 : Debug: auth-master: userdb lookup( foo123 at dovecot.mydomain.com): Finished userdb lookup (usernamefoo123 at dovecot.mydomain.com home=/tmp/foo123 uid=5000 gid=5001) Nov 03 14:38:27 : Debug: maildir++: root=/home/vmail/ foo123 at dovecot.mydomain.com, index=, indexpvt=/tmp/foo123/Maildir/shared/ foo123 at dovecot.mydomain.com, control=, inbox=/home/vmail/ foo123 at dovecot.mydomain.com, altNov 03 14:38:27 : Debug: acl: initializing backend with data: vfile:/etc/dovecot/dovecot-acl:cache_secs=6 Nov 03 14:38:27 : Debug: acl: acl username = foo123 at dovecot.mydomain.com Nov 03 14:38:27 : Debug: acl: owner = 1 Nov 03 14:38:27 : Debug: acl vfile: Global ACL file: /etc/dovecot/dovecot-acl Nov 03 14:38:27 : Debug: maildir++: root=/home/vmail/ foo123 at dovecot.mydomain.com, index=, indexpvt=/tmp/tester/Maildir/shared/ foo123 at dovecot.mydomain.com, control=, inbox=/home/vmail/ foo123 at dovecot.mydomain.com, altNov 03 14:38:27 : Debug: acl: initializing backend with data: vfile:/etc/dovecot/dovecot-acl:cache_secs=6 Nov 03 14:38:27 : Debug: acl: acl username = tester at dovecot.mydomain.com Nov 03 14:38:27 : Debug: acl: owner = 0 Nov 03 14:38:27 : Debug: acl vfile: Global ACL file: /etc/dovecot/dovecot-acl Nov 03 14:38:27 : Debug: Mailbox shared/foo123 at dovecot.mydomain.com/INBOX: Mailbox opened because: SELECT Nov 03 14:38:27 : Debug: acl vfile: reading file /home/vmail/ foo123 at dovecot.mydomain.com/dovecot-acl Nov 03 14:38:27 : Error: /tmp/tester/Maildir/shared/ foo123 at dovecot.mydomain.com/.INBOX/dovecot.index.pvt reset, view is now inconsistent Nov 03 14:38:27 : Debug: Namespace shared/: Using permissions from : mode=0700 gid=default Nov 03 14:38:27 : Debug: acl vfile: file /home/vmail/ foo123 at dovecot.mydomain.com/.INBOX.tester2/dovecot-acl not found Nov 03 14:38:27 : Error: /tmp/tester/Maildir/shared/ foo123 at dovecot.mydomain.com/.INBOX/dovecot.index.pvt view is inconsistent Nov 03 14:38:27 : Debug: Mailbox shared/ foo123 at dovecot.mydomain.com/INBOX/tester2: Mailbox opened because: SELECT Nov 03 14:38:27 : Error: /tmp/tester/Maildir/shared/ foo123 at dovecot.mydomain.com/.INBOX.tester2/dovecot.index.pvt reset, view is now inconsistent Nov 03 14:38:28 : Error: /tmp/tester/Maildir/shared/ foo123 at dovecot.mydomain.com/.INBOX.tester2/dovecot.index.pvt view is inconsistent Nov 03 14:38:28 : Debug: Mailbox shared/ foo123 at dovecot.mydomain.com/INBOX/tester2: UID 1: Opened mail because: prefetch Nov 03 14:38:28 : Debug: Mailbox shared/ foo123 at dovecot.mydomain.com/INBOX/tester2: UID 1: Opened mail because: access Nov 03 14:38:28 : Debug: Mailbox shared/ foo123 at dovecot.mydomain.com/INBOX/tester2: UID 1: Opened mail because: full mail Nov 03 14:38:28 : Info: FETCH failed: Permission denied in=360 out=2880 deleted=0 expunged=0 trashed=0 hdr_count=0 hdr_bytes=0 body_count=1 body_bytes=857 -------------- next part -------------- An HTML attachment was scrubbed... URL: <https://dovecot.org/pipermail/dovecot/attachments/20211103/6330554a/attachment-0001.html>