在我的電子郵件檢查器中,我支持POP3 SSL和IMAP SSL。儘管使用SASL的Pop3 SSL已經運行了一段時間,但我從未使用SASL獲得IMAP SSL,即使SASL的代碼在POP3和IMAP之間應該非常相似。我的理解是,我不應該期望它能夠工作,直到this issue被修復。那麼這個問題已經解決了,所以我想我會再次考慮讓SASL適用於IMAP。我更新並重建了Indy,並且取消了所有SASL代碼的註釋,現在我發現當我發出Login命令時,IdIMAP4中的讀取超時(即使超時設置爲大量時間(在20-30秒左右),比使用SASL在POP3上認證要長約5倍。我應該期望Indy Imap SASL連接起作用嗎?
在調試器中單步執行代碼,看起來引起讀超時的行在函數function PerformSASLLogin_IMAP(ASASL: TIdSASL; AEncoder: TIdEncoder;
on line 1358:
AClient.SendCmd(AClient.NewCmdCounter, 'AUTHENTICATE ' + String(ASASL.ServiceName), [], True); {Do not Localize}
考慮到這整個方法是在該bug報告指出了新的修訂,我敢肯定,我已經成功地更新印,我設立SASL機制和whatno邏輯t與POP3非常相似(除了使用IMAP AuthType iatSASL而不是Pop3 AuthType patSASL之類的東西)。那麼,爲什麼我會在這裏獲得讀取超時?我怎麼能解決它是我的代碼還是Indy不能正常工作?如果我將IMAP.AuthType更改爲iatUserPass或DEF_IMAP4_AUTH連接成功。我似乎無法找到有關我是否應該期望SASL和IMAP能夠正常工作的最新信息,除了錯誤報告被關閉爲已修復的提示之外。
編輯: 每雷米的問題在他的答覆,這裏由Wireshark的捕獲,當我將它設置爲與SASL連接不使用SSL的TCP會話:
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready. C1 CAPABILITY * CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS QUOTA STARTTLS AUTH=PLAIN AUTH=LOGIN C1 OK Capability completed. C2 AUTHENTICATE PLAIN + C3 LOGOUT C2 NO [ALERT] Invalid base64 data in continued response
* OK [CAPABILITY IMAP4rev1 LITERAL + SASL-IR LOGIN-REFERRALS ID ENABLE STARTTLS AUTH = PLAIN AUTH = LOGIN] Dovecot準備就緒。 C1 CAPABILITY * CAPABILITY IMAP4rev1 LITERAL + SASL-IR LOGIN-REFERRALS ID ENABLE排序排序= DISPLAY THREAD =參考THREAD = REFS MULTIAPPEND UNSELECT IDLE兒童NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL = 1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT =搜索列表-STATUS QUOTA STARTTLS AUTH = PLAIN AUTH =登錄 C1 OK功能已完成。 C2 AUTHENTICATE平原 + C3註銷 C2 NO [警示]在繼續應答 –
ACK無效的base64數據,這是很難讀,我將修改的問題,以把在格式化 –
比較它在做什麼的IMAP與SASL和POP3與SASL它似乎缺少的是客戶端不發送密碼 –