Trouble with Outlook 2013, especially with the upgrade from 12/8

Leena Heino Leena.Heino at uta.fi
Fri Dec 11 09:52:07 EST 2015


On Fri, 11 Dec 2015, André Schild via Info-cyrus wrote:

> Outlook and IMAP is just pain, it's not intended to work, otherwise who would 
> buy the exchange server?
>
> 1) We see this rather seldom, but sometimes mails come in after 2-10 hours, 
> not even a "Fetch mail" helps
>
> 2) Definitively a major problem of Outlook 2013, working with IMAP folders in 
> copy/rename operations is random at best

We might have had similar problems with Outlook 2013:
- Outlook would sometimes fail to create folders or recognize folders it
   had created earlier
- Messages would get deleted or simply lost when they were copied between
   folders

Attached is a patch that we used locally with Cyrus IMAPD 2.4.17 to 
improve compatibility with Outlook 2013.

-- 
   Leena Heino              University of Tampere / Computer Centre
   ( liinu at uta.fi )      ( http://www.uta.fi/laitokset/tkk )
-------------- next part --------------
Patch to make Cyrus Imapd compatible with Outlook 2013.
This patch changes XLIST behaviour so that it works the same as in LIST
in a special case. After this patch the output should be:
. LIST "" ""
* LIST (\Noselect) "/" ""
. OK Completed (0.000 secs)
. XLIST "" ""
* XLIST (\Noselect) "/" ""
. OK Completed (0.000 secs)

diff -Naur cyrus-imapd-2.4.17.orig/imap/imapd.c cyrus-imapd-2.4.17/imap/imapd.c
--- cyrus-imapd-2.4.17.orig/imap/imapd.c	2012-12-01 21:57:54.000000000 +0200
+++ cyrus-imapd-2.4.17/imap/imapd.c	2014-07-24 13:51:26.885893900 +0300
@@ -6029,10 +6029,14 @@
 
     list_callback_calls = 0;
 
-    if (!listargs->pat->s[0] && !(listargs->cmd & LIST_CMD_LSUB)) {
+    if (!listargs->pat->s[0] && (listargs->cmd == LIST_CMD_LIST)) {
 	/* special case: query top-level hierarchy separator */
 	prot_printf(imapd_out, "* LIST (\\Noselect) \"%c\" \"\"\r\n",
 		    imapd_namespace.hier_sep);
+    } else if (!listargs->pat->s[0] && (listargs->cmd == LIST_CMD_XLIST)) {
+	/* special case: query top-level hierarchy separator */
+	prot_printf(imapd_out, "* XLIST (\\Noselect) \"%c\" \"\"\r\n",
+		    imapd_namespace.hier_sep);
     } else if (((listargs->sel & LIST_SEL_SUBSCRIBED) ||
 		(listargs->ret & LIST_RET_SUBSCRIBED)) &&
 	       (backend_inbox || (backend_inbox = proxy_findinboxserver(imapd_userid)))) {


More information about the Info-cyrus mailing list