Deleted mailbox remains in spool directory when using Open-Xchange client

Peter Bücker buecker at phil.hhu.de
Mon Sep 23 05:12:49 EDT 2013


Dear all,

we're running a Cyrus Murder with 6 backend servers, two frontend 
servers and one MUPDATE master. All servers are compiled from vanilla 
source 2.4.17 and run on Debian Wheezy. Delayed delete / expunge is 
activated:

expunge_mode: delayed
delete_mode: delayed

This works fine so far. Several of our users however use Open-Xchange 
(version 7.2.2) with IMAP as their mail client. When these users delete 
a mailbox, Open-Xchange will copy the mails from that mailbox to a new 
folder within the trash folder and delete the mailbox afterwards. Cyrus 
then reports the mailbox was deleted:

Sep 23 10:18:25 s_local at cyrus-be5 cyrus/imap[29267]: Rename: 
user.foobar.Test -> DELETED.user.foobar.Test.523FF951
Sep 23 10:18:25 s_local at cyrus-be5 cyrus/imap[29267]: Deleted mailbox 
user.foobar.Test

But still the mailbox is left behind in the filesystem 
(/var/spool/cyrus-imapd/f/user/foobar/Test/ in our case) with all mails 
and cyrus.* files. It is however removed from the mailbox database.

This was not the behavior we expected. We expected that delayed_delete 
would move the mailbox to DELETED namespace, thus deleting the original 
folder. Instead we see that a copy is created under DELETED.

I suspect this is somehow the fault of Open-Xchange since other clients 
like Thunderbird 24 don't cause this issue. Or might this be a 
configuration error on our side? We tried setting "delete_mode: 
immediate", but the original mailbox was still left behind.

Here is a IMAP trace when deleting the mentioned mailbox with 
Open-Xchange with "delete_mode: delayed".

# Create a new mailbox with same name in trash folder ("Papierkorb")

<1379924304<A1 LIST "" INBOX.Test
 >1379924304>* LIST (\HasNoChildren) "." INBOX.Test
A1 OK Completed (0.000 secs 2 calls)
<1379924304<A2 LIST "" ""
 >1379924304>* LIST (\Noselect) "." ""
A2 OK Completed (0.000 secs)
<1379924304<A3 LIST "" INBOX.Papierkorb.Test
 >1379924304>A3 OK Completed (0.000 secs)
<1379924304<A4 LIST "" INBOX.Papierkorb
 >1379924304>* LIST (\HasNoChildren) "." INBOX.Papierkorb
A4 OK Completed (0.000 secs 2 calls)
<1379924304<A5 CREATE INBOX.Papierkorb.Test
 >1379924304>A5 OK Completed
<1379924304<A6 LIST "" INBOX.Papierkorb.Test
 >1379924304>* LIST (\HasNoChildren) "." INBOX.Papierkorb.Test
A6 OK Completed (0.000 secs 2 calls)
<1379924304<A7 LIST "" INBOX.Papierkorb.Test
 >1379924304>* LIST (\HasNoChildren) "." INBOX.Papierkorb.Test
A7 OK Completed (0.000 secs 2 calls)
<1379924304<A8 LSUB "" INBOX.Test
 >1379924304>* LSUB () "." INBOX.Test
A8 OK Completed (0.000 secs 1 calls)
<1379924304<A9 SUBSCRIBE INBOX.Papierkorb.Test
 >1379924304>A9 OK Completed
<1379924304<A10 SELECT INBOX.Papierkorb.Test
 >1379924304>* 0 EXISTS
* 0 RECENT
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Ok
* OK [UIDVALIDITY 1379924304] Ok
* OK [UIDNEXT 1] Ok
* OK [HIGHESTMODSEQ 1] Ok
* OK [URLMECH INTERNAL] Ok
A10 OK [READ-WRITE] Completed
<1379924304<A11 SETACL INBOX.Papierkorb.Test foobar acdeiklprstwx
 >1379924304>A11 OK Completed
<1379924304<A12 LOGOUT
 >1379924304>* BYE LOGOUT received
A12 OK Completed

# Copy mails into the new mailbox below trash

<1379924304<A1 GETACL INBOX.Test
 >1379924304>* ACL INBOX.Test foobar lrswipkxtecda
A1 OK Completed
<1379924304<A2 EXAMINE INBOX.Test
 >1379924304>* 2 EXISTS
* 0 RECENT
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS ()] Ok
* OK [UIDVALIDITY 1379924218] Ok
* OK [UIDNEXT 3] Ok
* OK [HIGHESTMODSEQ 2] Ok
* OK [URLMECH INTERNAL] Ok
A2 OK [READ-ONLY] Completed
<1379924304<A3 FETCH 1:* (UID)
 >1379924304>* 1 FETCH (UID 1)
* 2 FETCH (UID 2)
A3 OK Completed (0.000 sec)
<1379924304<A4 CLOSE
 >1379924304>A4 OK Completed
<1379924304<A5 EXAMINE INBOX.Test
 >1379924304>* 2 EXISTS
* 0 RECENT
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS ()] Ok
* OK [UIDVALIDITY 1379924218] Ok
* OK [UIDNEXT 3] Ok
* OK [HIGHESTMODSEQ 2] Ok
* OK [URLMECH INTERNAL] Ok
A5 OK [READ-ONLY] Completed
<1379924305<A6 UID COPY 1:2 INBOX.Papierkorb.Test
 >1379924305>A6 OK [COPYUID 1379924304 1:2 1:2] Completed
<1379924305<A7 LOGOUT
 >1379924305>* BYE LOGOUT received
A7 OK Completed

# Delete the old mailbox

<1379924305<A300 MYRIGHTS INBOX.Papierkorb.Test
 >1379924305>* MYRIGHTS INBOX.Papierkorb.Test lrswipkxtecda
A300 OK Completed
<1379924305<A301 LIST "" INBOX.Test
 >1379924305>* LIST (\HasNoChildren) "." INBOX.Test
A301 OK Completed (0.000 secs 2 calls)
<1379924305<A302 LIST "" "INBOX.Test.%"
 >1379924305>A302 OK Completed (0.000 secs)
<1379924305<A303 UNSUBSCRIBE INBOX.Test
 >1379924305>A303 OK Completed
<1379924305<A304 LIST "" "INBOX.Test.%"
 >1379924305>A304 OK Completed (0.000 secs)
<1379924305<A305 DELETE INBOX.Test
 >1379924305>A305 OK Completed
<1379924306<A306 STATUS INBOX.Papierkorb.Test (MESSAGES UNSEEN)
 >1379924306>* STATUS INBOX.Papierkorb.Test (MESSAGES 2 UNSEEN 0)
A306 OK Completed

Right now we use a cron job to detect these cases and decide manually if 
we want to delete the remaining directories or not. If you need more 
information / traces / etc., we would be happy to provide them.

Thanks for your time and effort!

Best Regards,
Peter


More information about the Info-cyrus mailing list