[Dovecot] Maildir folder renaming disagreement among IMAP clients

Adam McDougall mcdouga9 at egr.msu.edu
Tue Jul 15 21:57:29 EEST 2008


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



More information about the dovecot mailing list