如何判断使用了哪种SASL机制?

时间:2013-08-01 02:42:00

标签: delphi indy indy10

在我的代码中,在创建TIdIMAP4连接之前,我建立了一大堆SASL机制,希望这样的规定是“从最好到最差”的顺序:

IMAP.SASLMechanisms.Add.SASL := mIdSASLCRAMSHA1;
IMAP.SASLMechanisms.Add.SASL := mIdSASLCRAMMD5;
IMAP.SASLMechanisms.Add.SASL := mIdSASLSKey;
IMAP.SASLMechanisms.Add.SASL := mIdSASLOTP;
IMAP.SASLMechanisms.Add.SASL := mIdSASLAnonymous;
IMAP.SASLMechanisms.Add.SASL := mIdSASLExternal;
IMAP.SASLMechanisms.Add.SASL := mIdSASLLogin;
IMAP.SASLMechanisms.Add.SASL := mIdSASLPlain;

我正在设置IMAP.AuthType := iatSASL;所以我认为它应该与SASL连接。但有没有办法(比如,在建立连接之后)找出它在创建连接时实际使用的SASL机制?

1 个答案:

答案 0 :(得分:1)

很抱歉,但Indy中没有任何内容可以找出尝试和/或成功的SASL。 Indy将SASLMechanisms的内容与服务器报告的SASL进行比较,建立匹配列表,然后循环遍历该列表,一次尝试每个SASL,直到其中一个成功,然后丢弃列表。了解正在尝试哪些SASL的唯一方法是监视原始套接字流量,例如使用Indy的Intercept组件之一,并手动解析正在发送的IMAP命令。

相关问题