2011-12-30 30 views
5

Tôi đang cố gắng kết nối với máy chủ trao đổi của chúng tôi bằng cách sử dụng Mail :: IMAPClient nhưng một tập lệnh đang hoạt động có vấn đề khi tôi di chuyển nó từ máy tính để bàn tạm thời chạy ubuntu đến một trung tâm phát triển env mới. Trong thời gian đó, tôi phát hiện ra máy chủ trao đổi đã được nâng cấp, tôi nghĩ đến năm 2010. Có một cài đặt để trao đổi lệnh chỉ được xử lý với dòng lệnh thay vì yêu cầu crlf hay đây có thể là hệ thống cục bộ (chạy tập lệnh)?Vấn đề nguồn cấp dữ liệu dòng trả về kết nối IMAP từ linux?

Điều này chỉ diễn ra sau một thời gian.

$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 

Lệnh sẽ hoạt động chính xác.

$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 

[Giải pháp:]
Cố gắng để tạo ra một kết nối ssl thủ công đến máy chủ sử dụng openssl.
Tôi phải bao gồm tùy chọn -crlf để trao đổi có thể nhận ra lệnh IMAP chấm dứt.

Trả lời

2

Giao thức IMAP yêu cầu ứng dụng khách và máy chủ sử dụng \ r \ n. Exchange hoạt động chính xác (điều này không phổ biến).

+0

Thú vị Tôi đã không đọc RFC nếu IMAP yêu cầu điều đó hay không. Cảm ơn bạn về thông tin. – LF4

7

Đó là trong section 2.2 của RFC3501, nhưng đó là một phần của tổng quan.

Tất cả các tương tác được truyền bởi máy khách và máy chủ đều ở dạng đường, tức là, các chuỗi kết thúc bằng CRLF.

Lưu ý rằng không có "PHẢI" trong mệnh đề này.

Máy chủ IMAP và Dovecot khác tự do hơn về những gì họ chấp nhận, về những gì cấu thành EOL.

"Độ chính xác" là tương đối. Nếu không có điều khoản PHẢI hoặc NÊN, nó thường được chấp nhận rằng "được tự do trong những gì bạn chấp nhận và nghiêm ngặt trong những gì bạn gửi" là cách tốt nhất để chuyển tiếp khi triển khai RFC.

Các vấn đề liên quan