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