私のメールチェッカーでは、POP3 SSLとIMAP SSLの両方をサポートしています。 SASLを使用しているPop3 SSLはしばらく動いていましたが、SASLのコードはPOP3とIMAPの間で非常に似ていても、SASLを使用してIMAP SSLを使用することはありませんでした。私の理解は、this issueが修正されるまで、それが働くとは思ってはいけないということでした。まあ、その問題は修正されているので、私はSASLをIMAPのために作ってみることをもう一度見てみたいと思いました。 Indyを更新して再構築し、すべてのSASLコードのコメントを外しました。そして今、ログインコマンドを発行すると、IdIMAP4で読み取りタイムアウトが発生します(タイムアウトを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}
は、そのバグレポートに示された改正で追加された、私はインディ正常に更新されましたかなり確信している、とSASLメカニズムとwhatnoを設定するための私のロジック(POP3 AuthType patSASLの代わりにIMAP AuthType iatSASLを使用する場合を除いて)POP3の場合と非常によく似ています。では、なぜ私はここで読み取りタイムアウトを取得していますか?私のコードかIndyが正しく動作していないかどうか、どうすればトラブルシューティングできますか? IMAP.AuthTypeをiatUserPassに変更するか、DEF_IMAP4_AUTH接続が成功した場合。私は、バグ報告が修正されて閉鎖されているというヒント以外、IMAPでSASLが動作することを期待するべきかどうかに関する最新の情報を見つけることができないようです。
編集:ここでは彼の返事で パーレミーの質問に、」私はSSLなしでSASLと接続するように設定したときのwiresharkで撮影した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を有効にするSTARTTLS AUTH = PLAIN AUTH = LOGIN] Dovecot対応。 C1能力 * CAPABILITY IMAP4rev1のLITERAL + SASL-IR LOGIN-REFERRALS IDは、SORT SORT =表示スレッドをENABLE = REFERENCESスレッド= REFS MULTIAPPEND UNSELECT IDLE CHILDREN NAMESPACE UIDPLUSリスト拡張I18NLEVEL = 1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES CONTEXT =検索リストWITHIN -STATUS QUOTA STARTTLS AUTH = PLAIN AUTH = LOGIN C1 OK能力が完了しました。 C2 AUTHENTICATE PLAIN + C3 LOGOUT継続応答 –
ACKで C2 NO [ALERT]無効なbase64のデータ、それは読みづらいですが、私はそれがやっているものを比較すると、フォーマットされた –
にそれを置くために、質問を編集しますIMAP with SASL and POP3 with SASLこれは、クライアントがパスワードを送信していないことを示しています。 –