I have reported a bug to Claws Mail
(http://www.thewildbeast.co.uk/claws-mail/bugzilla/show_bug.cgi?id=3601);
however, I see some behaviour from Dovecot that looks odd to me.
Background: I am trying to copy a folder to another part of the IMAP
folder hierarchy. The destination parent folder is ACL protected; I
have lirwstpeak rights. Claws initially tries to create the destination
folder and then copy the mails from the source to destination.
The destination parent folder is 'public/accounts'; the folder being
moved there is 'test' and 'public/accounts/test' does not exist
at the
start of the process. This is from Dovecot's rawlog:
11 LIST "" "public/accounts/test"
11 OK List completed.
12 CREATE "public/accounts/test"
12 OK Create completed.
13 LIST "" "public/accounts/test"
13 OK List completed.
14 SUBSCRIBE "public/accounts/test"
14 NO Mailbox doesn't exist: public/accounts/test
15 UID COPY 1:2 "public/accounts/test"
15 NO [TRYCREATE] Mailbox doesn't exist: public/accounts/test
What I don't understand: the response to command 12 suggests that the
destination folder has been created; the response to commands 14 and
15 suggest it hasn't.
At the completion of the process, the 'public/accounts/test' folder
DOES exist, but it's empty, supporting the fact that it may not have
existed when command 15 was executed.
Is there some kind of race condition here - or have I just
misunderstood how this should work?
------------------------------------------------------------
Running on ext4 filesystem; dovecot -n:
# 2.2.13: /etc/dovecot/dovecot.conf
# OS: Linux 3.16.0-4-amd64 x86_64 Debian 8.2 ext4
lda_mailbox_autocreate = yes
mail_debug = yes
mail_location = maildir:/srv/mail/imap/%u:LAYOUT=fs
mail_plugins = acl fts
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character
vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy
include variables body enotify environment mailbox date ihave
namespace {
hidden = no
location =
maildir:/srv/mail/imap/public:INDEX=/srv/mail/imap/public.indexes/%u.index:LAYOUT=fs
prefix = public/
separator = /
subscriptions = no
type = public
}
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
separator = /
}
passdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
plugin {
acl = vfile
acl_shared_dict = file:/srv/mail/imap/shared-mailboxes
fts_autoindex = yes
sieve = /home/sieve/%u.sieve
sieve_dir = /home/sieve/%u
}
protocols = " imap sieve sieve"
service imap {
executable = imap postlogin
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service postlogin {
executable = script-login -d rawlog
}
ssl_cert = </etc/dovecot/dovecot.pem
ssl_dh_parameters_length = 4096
ssl_key = </etc/dovecot/private/dovecot.pem
ssl_protocols = !SSLv2 !SSLv3
userdb {
args = uid=imapmail gid=imapmail
default_fields = home=/dev/shm/%u
driver = static
}
protocol lda {
mail_plugins = acl fts sieve
}
protocol imap {
mail_max_userip_connections = 20
mail_plugins = acl fts imap_acl
}
--
"Why does God hate me so much? Is it because I don't believe in
him?" -
Sidney Morgenbesser