From: Matthias A. <mat...@gm...> - 2015-01-10 01:15:46
|
Am 09.01.2015 um 22:42 schrieb Samy Silva: > Hello guys, > > I think we have found a bug. Hi Samy, thanks for the report. Yes did find a malfunction, but you found it in your IMAP server or some en-route application-level cache, load balancer or other proxy ("application firewall", if any). The bug is *not* in fetchmail's IMAP client. Check that you have all relevant service packs and hotfixes for your high-level routers, firewalls, and Exchange server installed, check that relevant configuration is set properly, and then if the problems persist, please take this up to the vendor of the offending software or appliance, and let us know how the status. > Conducted tests via Telnet, and found that the calling execute the FETCH BODY no data return. > So far so good, but if fetchmail try processing it occurs problems. I disagree on the "so far so good". The lack of data is a malfunction and violates RFC-3501 on various accounts, namely sections 6.4.5 on page 54, 7.4 on page 72, 7.4.2 on page 74: "6.4.5. FETCH Command Arguments: sequence set message data item names or macro Responses: untagged responses: FETCH (...)" "7.4. Server Responses - Message Status These responses are always untagged. This is how message data are transmitted from the server to the client, often as a result of a command with the same name. Immediately following the "*" token is a number that represents a message sequence number." (...) "7.4.2. FETCH Response Contents: message data The FETCH response returns data about a message to the client. The data are pairs of data item names and their values in parentheses. (...) BODY[<section>]<<origin octet>> A string expressing the body contents of the specified section. ..." and 4.3 on page 16 that defines the string: "4.3. String A string is in one of two forms: either literal or quoted string. The literal form is the general form of string. (...) The empty string is represented as either "" (a quoted string with zero characters between double quotes) or as {0} followed by CRLF (a literal with an octet count of 0). (...)" The server must send the item name and the empty string, either as {0} or as "". It fails to do so, and fetchmail concludes it has lost synchronization with the server because it sees the tagged response too early. That is correct and intended behaviour of fetchmail's. This is what you should get: C FETCH 3802 BODY.PEEK[TEXT] * 3802 FETCH (BODY[TEXT] {0} ) C OK Fetch completed. or alternatively, but uncommon: C FETCH 3802 BODY.PEEK[TEXT] * 3802 FETCH (BODY[TEXT] "") C OK Fetch completed. > fetchmail: IMAP> A0011 FETCH 1 BODY.PEEK[TEXT] > fetchmail: IMAP< A0011 OK FETCH completed. > fetchmail: IMAP> A0012 LOGOUT > fetchmail: IMAP< * BYE Microsoft Exchange Server 2010 IMAP4 server signing off. > fetchmail: IMAP< A0012 OK LOGOUT completed. > > fetchmail: client/server synchronization error while fetching from dirsync_Base_G_09@192.168.125.100 The server is malfunctioning, and fetchmail aborts the connection at that point. Best regards Matthias |