2015-09-01 26 views
1

我有一個IMAP客戶端(Perl,Mail :: IMAPClient)連接到MS Exchange服務器,它在登錄時收到錯誤「1 BAD命令收到Invalid州。」這個相同的IMAP客戶端可以在許多其他環境中工作,沒有任何錯誤,當然在登錄時不會立即出錯!微軟Exchange IMAP登錄返回「BAD命令收到無效狀態」

我在確定錯誤的來源時遇到了困難,此時我傾向於認爲客戶的Exchange服務器配置錯誤,或者存在一些防火牆或數據包操作惡意軟件。

我能夠採取真正看起來正常的數據包捕獲,而不是錯誤。在TCP握手之後,這是整個IMAP對話,隨後是TCP掛斷。

No.  Time   Source    Destination 
     4 0.010228000 (server)    (client) 
Internet Message Access Protocol 
    Line: * OK The Microsoft Exchange IMAP4 service is ready.\r\n 

No.  Time   Source    Destination 
     5 0.012680000 (client)    (server) 
Internet Message Access Protocol 
    Line: 1 LOGIN (username) (password)\r\n 
     Request Tag: 1 
     Request Command: LOGIN 
     Request: LOGIN (username) (password) 

No.  Time   Source    Destination 
     6 0.017559000 (server)    (client) 
Internet Message Access Protocol 
    Line: 1 BAD Command received in Invalid state.\r\n 
     Response Tag: 1 
     Response Status: BAD 
     Response: BAD Command received in Invalid state. 

我是否正確地認爲問題出現在IMAP服務器端?

回答

3

您需要首先發送CAPABILITY命令,以便您可以檢查服務器是否有LOGINDISABLED(它可能會這樣做,因此您的錯誤)。

+3

許多服務器不會讓你登錄,除非你是STARTTLS或SSL/TLS擔保。 – Max

+0

你們都是對的。服務器列出'LOGINDISABLED',直到啓動STARTTLS。 – wes