ssl - IMAP 的 Javamail 和 TLS 身份验证

标签 ssl jakarta-mail 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中。

最佳答案

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

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

关于ssl - IMAP 的 Javamail 和 TLS 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26372226/

相关文章:

ios - 与 Swift iOS 的 WSS/TLS websocket 连接

google-chrome - Chrome 无效的 SSL 证书安全警告

ssl - 在 SSL 模式下使用 jndi 连接 LDAP,如何在 java 代码中编写客户端证书?

javax.mail.MessagingException : Can't send command to SMTP host

java - JAVA发送邮件时出现空指针异常

ssl - Golang LD_PRELOAD Hook SSL_read 和 SSL_write

java - 附件名称编码失败

c# - 如何使用此 IMAP 库发送电子邮件

python - (Python 3) imaplib 从 .txt 文件登录

php - 使用 Windows 8.1 在 localhost 上测试 PHP 的 mail() 函数