Skip Menu |

This queue is for tickets about the Mail-IMAPClient CPAN distribution.

Report information
The Basics
Id: 13142
Status: resolved
Priority: 0/
Queue: Mail-IMAPClient

People
Owner: Nobody in particular
Requestors: jwolfe [...] MIT.EDU
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



From: Jonathan Wolfe <jwolfe [...] MIT.EDU>
Subject: empty emails after migration
Date: Tue, 7 Jun 2005 18:49:22 -0400
To: bug-Mail-IMAPClient [...] rt.cpan.org
IMAPClient 2.2.9 running on perl 5.8.6 on OS X 10.4 Server (darwin 8.1) connecting to both Exchange 2000 IMAP server and Cyrus 2.2.12 IMAP server. I have had almost complete success migrating messages from the Exchange store into Cyrus using the migrate command on each folder with messages in it.. except for seemingly random blank (0-byte) messages that appear in Cyrus after the migration. I can view the date and time in Apple Mail, but there is no subject and seemingly no message source at all. Since there are times and dates, I was able to track down the messages. At first, I thought it may have been the bare newlines issue, but it appears that migrate uses "append_string" which takes care of those bare newlines (too many assumptions here?). All of them seem to be rather small messages (less than my buffer size of 64k), coming from Outlook 2003, and most are replies to a plain text message. I tested with a few messages and it turns out Exchange is returning the WRONG rfc822.size value for those messages, and others (!) resulting in some truncated messages on the destination server (this result looks by design from the implementation of message_string). Exchange has a registry setting that approximates size in order to increase performance for IMAP, considering it needs to do a MAPI to MIME conversion.. I verified that the sizes are still wrong even with the setting disabled. Have you encountered this before at all? I can't seem to find anything on Google about it. Is there any way to force recomputing the size? message_string is comparing the result of the fetch with the length from a rfc822.size request, and returning the string only if they are exact matches.. perhaps a flag like "strict_size" to return undef if they don't match, otherwise just go with the result of the fetch? Love to hear your thoughts on this. Cheers, -Jon
New maintainer. Your explanation is correct. Release 1.99_02 has a 'IgnoreSizeError' flag, needed for (mostly MicroSoft) servers with size errors. -- MarkOv