Move mails between folders on different backend servers – Problem with Horde Webmail

Frank Richter <[email protected]>
Newsgroups gmane.mail.imap.cyrus
Organization TU Chemnitz, Germany
Message-ID <[email protected]>
Hello,
we have a traditional murder (frontend with 2 backend servers – 
cyrus-imapd-3.2.6-Debian-3.2.6-2+deb11u1).
We use shared folder (group namesapce).
Moving e-mails between folders on different backend servers (from backend1 
to backend2) works with Thunderbird, alpine etc. With Horde Webmail there is 
an error, see below.

IMAP logs:

OK:
Frontend:
<1648127917<6 UID MOVE 855056 group.fritest2
 >1648127917>* *OK [COPYUID 1647952540 855056 11] Completed*

Backend (same source and target)
<1648127917<6 UID Move 855056 {14+}
 >1648127917>* OK [COPYUID 1647952540 855056 11] Completed

NOT OK:
Frontend:
<1648127910<6 UID MOVE 855054 group.fritest
 >1648127910>6 *OK [COPYUID 1611826992 15] Completed*

Backend (source):
<1648127910<6 Uid Fetch 855054 (Flags Internaldate)
 >1648127910>* 1981 FETCH (FLAGS (\Seen $Label4 NonJunk) UID 855054 
INTERNALDATE "23-Mar-2022 19:55:11 +0100")
6 OK Completed (0.000 sec)
<1648127910<PROXY2 Uid Fetch 855054 (Rfc822.peek)
 >1648127910>* 1981 FETCH (UID 855054 RFC822 {3129}
Return-Path: …
PROXY2 OK Completed (0.000 sec)

Backend (target):
<1648127910<6 Append {13+}
group.fritest (\Seen $Label4 NonJunk) "23-Mar-2022 19:55:11 +0100" {3129+}
Return-Path: …
 >1648127910>6 OK [APPENDUID 1611826992 15] Completed
<1648127910<Q01 LOGOUT
 >1648127910>* BYE LOGOUT received
Q01 OK Completed

So the responses on COPYUID are different.

When moving between different backend servers, Horde Webmail throws warnings 
and errors in its log file:

2022-03-24T14:18:30 WARNING: HORDE: [imp] PHP ERROR: array_combine(): Both 
parameters should have an equal number of elements [pid 64686 on line 4905 
of "/usr/share/pear/Horde/Imap/Client/Socket.php"]

PHP source is:

        case 'COPYUID':
             // Defined by RFC 4315
             //*COPYUID: [0] = UIDVALIDITY, [1] = UIDFROM, [2] = UIDTO*
             $pipeline->data['copyuid'] = array_combine(
                 $this->getIdsOb($rc->data[1])->ids,
                 $this->getIdsOb($rc->data[2])->ids
             );

So the IMAP client in Horde expects 3 values for COPYUID response (and 
doesn't handle if there are 2 values only – it throws errors in the 
following processing).

Is cyrus-imapd wrong in this case returning 2 values only (missing the 
source UID of the moved message)?

Thanks,
Frank

-- 
Chemnitz University of Technology, Germany

This is a multi-part message in MIME format...

------------=_1648129697-807951-1--
smime.p7s (application/pkcs7-signature, 5.8 KB) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.