来自linux的IMAP连接回车换行问题?

LF4*_*LF4 5 imap exchange-server

我正在尝试使用Mail :: IMAPClient连接到我们的Exchange服务器,但是当我将它从运行ubuntu的临时开发桌面移动到运行centos的新开发环境时,正在运行的脚本出现问题.在那段时间里,我发现交换服务器已经升级了,我想到2010年.是否有一个交换设置允许使用换行处理命令而不是需要crlf,或者这可能是本地系统(运行脚本问题)?

这一段时间过了一段时间.

$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
Run Code Online (Sandbox Code Playgroud)

命令可以正常运行.

$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
Run Code Online (Sandbox Code Playgroud)

[解决方案:]
尝试使用openssl与服务器建立手动ssl连接.
我必须包含-crlf选项,以便交换可以识别终止的IMAP命令.

小智 7

它在RFC3501的2.2节中,但这是概述的一部分.

客户端和服务器传输的所有交互都是行的形式,即以CRLF结尾的字符串.

请注意,该条款中没有"必须".

就构成EOL的内容而言,Dovecot和其他IMAP服务器对他们所接受的内容更加自由.

"正确性"是相对的.如果没有MUST或SHOULD条款,那么人们普遍认为"在你所接受的内容中采取自由主义并严格遵守你所发送的内容"是实施RFC时的最佳方法.


Paw*_*ski 4

IMAP 协议要求客户端和服务器使用\r\n。Exchange 行为正确(这并不常见)。