IMAP的Javamail和TLS身份验证

时间:2014-10-14 23:43:16

标签: ssl javamail imap

我正在尝试连接到不支持纯文本身份验证的邮件服务器。我通过在属性中设置来禁用代码中的纯文本身份验证:

    props.put("mail.imap.auth.plain.disable", "true");
    props.put("mail.imap.auth.ntlm.disable", "true");
    props.put("mail.imap.auth.gssapi.disable", "true");

但是,当我执行代码时,看起来仍然会发生纯文本身份验证:

A2 OK CAPABILITY completed.
DEBUG IMAP: AUTH: PLAIN

完整日志低于......

DEBUG: setDebug: JavaMail version 1.4.7
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle]
DEBUG IMAP: mail.imap.fetchsize: 16384
DEBUG IMAP: mail.imap.ignorebodystructuresize: false
DEBUG IMAP: mail.imap.statuscachetimeout: 1000
DEBUG IMAP: mail.imap.appendbuffersize: -1
DEBUG IMAP: mail.imap.minidletime: 10
DEBUG IMAP: disable AUTH=PLAIN
DEBUG IMAP: disable AUTH=NTLM
DEBUG IMAP: enable STARTTLS
DEBUG IMAP: trying to connect to host "imap4.xxx.com", port 143, isSSL false
* OK The Microsoft Exchange IMAP4 service is ready.
A0 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS CHILDREN IDLE NAMESPACE LITERAL+
A0 OK CAPABILITY completed.
DEBUG IMAP: protocolConnect login, host=imap4.xxx.com.au, user=testUser, password=<non-null>
A1 STARTTLS
A1 OK Begin TLS negotiation now.
A2 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN CHILDREN IDLE NAMESPACE LITERAL+
A2 OK CAPABILITY completed.
DEBUG IMAP: AUTH: PLAIN
DEBUG IMAP: LOGIN command trace suppressed
DEBUG IMAP: LOGIN command result: A3 NO LOGIN failed.
javax.mail.AuthenticationFailedException: LOGIN failed.
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:661)
    at javax.mail.Service.connect(Service.java:295)
    at javax.mail.Service.connect(Service.java:176)

还有什么需要做的,以确保不会发生纯文本身份验证。

PS:我已将服务器的证书导入cacerts。

2 个答案:

答案 0 :(得分:3)

您将PLAIN身份验证机制与通过纯文本(未加密)连接进行身份验证混淆。

STARTTLS命令可切换到加密连接。然后,您将使用PLAIN身份验证机制对该加密连接进行身份验证。

答案 1 :(得分:2)

这一行:

* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN CHILDREN IDLE NAMESPACE LITERAL+

...表示服务器仅通过AUTH PLAIN命令支持明文身份验证。不支持其他身份验证机制(当然除LOGIN除外)。服务器无可救药地被破坏或配置错误,或者您认为服务器不支持&#34;普通认证&#34;是错的。