[Dovecot] Maildir folder renaming disagreement among IMAP clients
A user alerted me to a problem when he renamed an upper level mail folder and lost access to a lower level folder under it.
I tried with and without listescape, it didn't seem to make a difference, and I saw no errors in the dovecot log.
Symptoms are if a client has a maildir folder tree .a and .a.b and renames a to c in their client, Thunderbird shows c/b but b is inaccessible since it is still actually .a.b on the filesystem, unsubscribed but accessible if you go subscribe to it. Outlook Express seems to behave the same except it cannot access "b" (.a.b) at all now because "a" no longer exists. Subscribe window shows it, but you cannot subscribe (as expected for OE). According to the rawlog, Thunderbird just tries to rename the top level folder and change subscriptions, but doesn't rename other maildirs to match the new top level folder. On the other hand, Outlook seems to rename and subscribe the top folder and subfolders properly. Who is right, should the mail client be doing all the work, or should dovecot be doing more, or do I have something setup wrong? I'm pasting what I think are essentials from the rawlogs, and my dovecot -n. Thanks for any input.
tbird:
in: 23 lsub "" "zoinks2/*" 24 close 25 rename "zoinks2" "zoinks3" 26 subscribe "zoinks3" 27 unsubscribe "zoinks2" 28 subscribe "zoinks3/z2" 29 unsubscribe "zoinks2/z2"
out:
- LSUB () "/" "zoinks2/z2" 23 OK Lsub completed. 24 OK Close completed. 25 OK Rename completed. 26 OK Subscribe completed. 27 OK Unsubscribe completed. 28 NO [TRYCREATE] Mailbox doesn't exist: zoinks3/z2 29 OK Unsubscribe completed.
outlook: in: d7oy LIST "" "INBOX" 089m LSUB "" "zoinks3/*" uh2o LSUB "" "*" buaw SELECT "" b51w LSUB "" "zoinks3" fivz RENAME "zoinks3" "zoinks2" 6n3p LIST "" "zoinks3/*" chbh RENAME "zoinks3/z2" "zoinks2/z2" 3hjt UNSUBSCRIBE "zoinks3/z2" xlnc SUBSCRIBE "zoinks2/z2" yyep UNSUBSCRIBE "zoinks3" 6gt2 SUBSCRIBE "zoinks2" mvzq IDLE
out:
- LSUB () "/" "zoinks3/z2" 089m OK Lsub completed. uh2o OK Lsub completed. buaw NO Invalid mailbox name
- LSUB () "/" "zoinks3" b51w OK Lsub completed. fivz OK Rename completed.
- LIST (\HasNoChildren) "/" "zoinks3/z2" 6n3p OK List completed. chbh OK Rename completed. 3hjt OK Unsubscribe completed. xlnc OK Subscribe completed. yyep OK Unsubscribe completed. 6gt2 OK Subscribe completed.
1.1.1: /usr/local/etc/dovecot.conf
ssl_cert_file: /usr/local/etc/apache22/ssl/mail.pem ssl_key_file: /usr/local/etc/apache22/ssl/mail.pem login_dir: /var/run/dovecot/login login_executable: /usr/local/libexec/dovecot/imap-login login_max_processes_count: 512 max_mail_processes: 1024 mail_max_userip_connections: 25 verbose_proctitle: yes first_valid_uid: 1000 first_valid_gid: 1000 mail_access_groups: postlocal mail_location: maildir:%h/Maildir:CONTROL=%h/Maildir/dovecot/private/control:INDEX=%h/Maildir/dovecot/private/indexes mmap_disable: yes mail_nfs_storage: yes mail_nfs_index: yes mail_drop_priv_before_exec: yes mail_executable: /usr/local/libexec/dovecot/rawlog /usr/local/libexec/dovecot/imap mail_process_size: 1024 mail_plugins: acl fts fts_squat listescape quota imap_quota mail_log_max_lines_per_sec: 0 imap_client_workarounds: delay-newmail outlook-idle netscape-eoh tb-extra-mailbox-sep namespace: type: private separator: / inbox: yes list: yes subscriptions: yes namespace: type: private separator: / prefix: mail/ hidden: yes subscriptions: yes namespace: type: private separator: / prefix: Mail/ hidden: yes subscriptions: yes auth default: passdb: driver: pam userdb: driver: passwd args: system_user= socket: type: listen client: path: /var/spool/postfix/private/auth mode: 384 user: postfix group: postfix plugin: quota: fs:noenforcing:inode_per_mail acl: vfile:/usr/local/etc/dovecot-acls:cache_secs=10 fts: squat
On Tue, 2008-07-15 at 14:57 -0400, Adam McDougall wrote:
A user alerted me to a problem when he renamed an upper level mail folder and lost access to a lower level folder under it.
I tried with and without listescape, it didn't seem to make a difference, and I saw no errors in the dovecot log.
It should have worked properly without listescape (and worked in my tests). Fixed listescape: http://dovecot.org/patches/1.1/listescape-plugin.c
The way it should work is:
- Dovecot should rename all child mailboxes
- Dovecot shouldn't touch subscriptions
Timo Sirainen wrote:
On Tue, 2008-07-15 at 14:57 -0400, Adam McDougall wrote:
A user alerted me to a problem when he renamed an upper level mail folder and lost access to a lower level folder under it.
I tried with and without listescape, it didn't seem to make a difference, and I saw no errors in the dovecot log.
It should have worked properly without listescape (and worked in my tests). Fixed listescape: http://dovecot.org/patches/1.1/listescape-plugin.c
The way it should work is:
- Dovecot should rename all child mailboxes
- Dovecot shouldn't touch subscriptions
Yes thanks it works now! I accidentally didn't test without listescape as I claimed, it was still enabled by accident.
Come to think of it, this might affect moving folder trees to Trash and expunging it? I think I had one user report problems a few weeks ago, and a co-worker just cleaned it up manually on the back end. I didn't get a chance to inspect closely.
participants (2)
-
Adam McDougall
-
Timo Sirainen