2011-12-30 67 views
5

我試圖使用Mail :: IMAPClient連接到我們的交換服務器,但正在工作的腳本在將它從運行Ubuntu的臨時開發桌面移動到運行centos的新開發環境時出現問題。在那段時間裏,我發現交換服務器已升級到2010年。有沒有一種交換設置可以讓命令只使用換行符處理,而不需要crlf,或者這可能是本地系統(運行腳本問題)?從Linux的IMAP連接回車換行問題?

這只是一段時間後超時。

$openssl s_client -connect myhost.mydomain.net:993 
... 
* OK The Microsoft Exchange IMAP4 service is ready - 'myhost' 
? login username password 
* BYE Connection is closed. 13 
read:errno=0 

命令會正常工作。

$openssl s_client -crlf -connect myhost.mydomain.net:993 
... 
* OK The Microsoft Exchange IMAP4 service is ready - 'myhost' 
? login username password 
? OK LOGIN completed. 
? select inbox 
* 4 EXISTS 
* 0 RECENT 
* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) 
* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent  flags 
* OK [UNSEEN 3] Is the first unseen message 
* OK [UIDVALIDITY 169533] UIDVALIDITY value 
* OK [UIDNEXT 132] The next unique identifier value 
? OK [READ-WRITE] SELECT completed. 
1 logout 
* BYE Microsoft Exchange Server 2010 IMAP4 server signing off. 
1 OK LOGOUT completed. 
read:errno=0 

[解決方法:]
試圖使手動SSL連接用openssl服務器。
我不得不包含-crlf選項,以便交換可以識別IMAP命令終止。

回答

2

IMAP協議要求客戶端和服務器使用\ r \ n。 交易所行爲正確(這不常見)。

+0

有趣我沒有閱讀RFC如果IMAP需要或不。謝謝(你的)信息。 – LF4 2012-04-16 17:17:52

7

它在RFC3501的section 2.2,但這是概述的一部分。

客戶端和服務器傳輸的所有交互都是以行的形式出現的,即以CRLF結尾的字符串。

請注意,該條款中沒有「必須」。

就構成EOL的內容而言,Dovecot和其他IMAP服務器對於他們接受的內容更加自由。

「正確性」是相對的。如果沒有MUST或SHOULD條款,那麼通常會接受「在您接受的內容中保持自由,並且在您發送內容時嚴格」是實施RFC時最好的方式。