java - Java 中的安全 imap 连接

标签 java ssl imap

我正在尝试使用我在以下位置找到的 java 程序连接到监听端口 993 的 imap 服务器:

http://harikrishnan83.wordpress.com/2009/01/24/access-gmail-with-imap-using-java-mail-api/

我在 Ubuntu 上运行这个程序。 但是,我对此有以下异常(exception):

DEBUG: setDebug: JavaMail version 1.4ea
DEBUG: getProvider() returning javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc]
DEBUG: mail.imap.fetchsize: 16384
javax.mail.MessagingException: Unrecognized SSL message, plaintext connection?;
  nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:479)
    at javax.mail.Service.connect(Service.java:275)
    at javax.mail.Service.connect(Service.java:156)
    at org.myorg.IMAP.main(IMAP.java:40)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.java:523)
    at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:355)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:798)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:753)
    at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
    at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    at com.sun.mail.iap.ResponseInputStream.read0(ResponseInputStream.java:81)
    at com.sun.mail.iap.ResponseInputStream.readResponse(ResponseInputStream.java:67)
    at com.sun.mail.iap.Response.<init>(Response.java:83)
    at com.sun.mail.imap.protocol.IMAPResponse.<init>(IMAPResponse.java:48)
    at com.sun.mail.imap.protocol.IMAPResponse.readResponse(IMAPResponse.java:122)
    at com.sun.mail.imap.protocol.IMAPProtocol.readResponse(IMAPProtocol.java:230)
    at com.sun.mail.iap.Protocol.<init>(Protocol.java:91)
    at com.sun.mail.imap.protocol.IMAPProtocol.<init>(IMAPProtocol.java:87)
    at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:446)
    ... 3 more

在这篇文章的结尾,他们建议: 看起来您必须将 imap 服务器的证书添加到您受信任的证书库中

  1. 下载imap服务器证书
  2. 找到您的 cacerts 文件
  3. 使用 keytool 将证书导入您的 cacerts 文件

但是,我无法理解如何为在 Windows 机器上运行的 IMAP 服务器执行这些步骤。

任何人都可以吗?帮帮我?

最佳答案

如错误消息所示,您可能没有连接到 SSL 加密端口,而是连接到明文端口。请使用您的实际配置(主机、端口、协议(protocol))更新您的问题。

如果您缺少证书,您会收到完全不同的错误消息。

关于java - Java 中的安全 imap 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8983660/

相关文章:

javascript - 如何在内存中没有字符串的情况下将用户密码从 HTML 表单获取到服务器端 SecureString

java - 安卓 : Connection refused at POP3Store

ssl - Gmail 中的安全邮件导入(明文和 ssl 配置)

spring-boot - 在 GCP Compute Engine 上的 spring-boot 应用程序中获取 "ssl3_get_record:wrong version number"

php - 如何使用 gmail 上下文小工具访问电子邮件附件

php - 在官方 PHP docker 镜像上安装 IMAP 扩展时出错

java - Unix shell : Turn file with directory names to ':' separated classpath

java - jackson :使用时区 ID 解析 ZonedDateTime

java - 如何在 Glassfish 服务器上部署同一应用程序的多个副本?

java - 使用 Apache Commons CLI 检测命令行参数/选项的缺失