我公司正在使用Mailkit作为专用客户端程序。不幸的是,开发人员离开了公司,没有可用的源代码。
因此,当使用用户EP运行mailkit.exe debug 版本的程序以便通过IMAPS /端口993获取电子邮件时,它会在一段时间后超时。幸运的是,生成了一个输出文件,其中包含以下内容:
Connected to imaps://imaps.company.net:993/
S: * OK The Microsoft Exchange IMAP4 service is ready.
C: A00000000 CAPABILITY
S: * BYE
Connection is closed. 13
在使用帐户AD的同一台服务器上,它可以立即使用;日志文件提供以下内容:
Connected to imaps://imaps.company.net:993/
S: * OK The Microsoft Exchange IMAP4 service is ready.
C: A00000000 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
S: A00000000 OK CAPABILITY completed.
C: A00000001 AUTHENTICATE NTLM
S: +
C: TlRMTVNTUBLABLABLABLABLABLABLABLA=
S: + TlRMTVNTUABLABLABLABLABLABLABLAkCGYaTeJuisCQAAAAAAAAAANYA1gBGAAAABgGxHQAAAA9SAFoALQBTAFUARQBEAAIADgBSAFoALQBTAFUARQBEAAEAHgBSAFoAUwAtAEUAWABQAEMALQBWADAAMQA5ADcAMgAEACIAcgB6AC0AcwB1AGUAZAAuAGIAYQB5AGUAcgBuAC4AZABlAAMAQgBSAFoAUwAtAEUAWABQAEMALQBWADAAMQA5ADcAMgAuAHIAegAtAHMAdQBlAGQALgBiAGEAeQBlAHIAbgAuAGQAZQAFACIAYQBkAC0AcgBvAG8AdAAuAGIAYQB5AGUAcgBuAC4AZABlAAcACAAoo1GGWF/RAQAAAAA=
C: TlRMTVNTUAADAAAAGAAYAIwAAAAYABgApAAAAAAAAABAAAAATABMAEAAAAAAAAAAjAAAAAAAAAC8AAAAAYIIAGwAZgBzAHQAYQBkAC0AZQBwAHMAdwBlAGIALQBhAHUAcwB0AGEAdQBzAGMAaABAAHMAdABtAGkALgBiAGEAeQBlAHIAbgAuAGQAZQBMgR43Q5lU3gAAAAAAAAAAAAAAAAAAAAAX+a5JGYqTMiuhZBjMz/tOXbxffNW9azQ=
S: A00000001 OK AUTHENTICATE completed.
C: A00000002 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+
S: A00000002 OK CAPABILITY completed.
在客户端与负载均衡/群集的Exchange Server 2010之间建立防火墙。
使用
openssl s_client -connect imaps.company.net:993/
并输入
A00000000 CAPABILITY
稍后会为这两个用户帐户都没有错误,而是 BOTH 一段时间后超时,并显示以下消息:
* OK The Microsoft Exchange IMAP4 service is ready.
* BYE Connection is closed. 13 read:errno=0
注意:发送
会出现问题A00000000 CAPABILITY
在mailkit.exe中 BEFORE 进行身份验证。
这里发生了什么?为什么它与用户AD一起使用而不是在同一台计算机上使用用户EP?
答案 0 :(得分:0)
我们遇到了同样的问题。我们怀疑防火墙问题是原因,但尚未证实。
对我们有用的是升级到MailKit的最新版本(1.10.0)并使用连接超载
ImapClient.Connect(servername, port, SecureSocketOptions)
使用SecureSocketOptions.None绕过STARTTLS请求。