• Unrecognized SSL message, plaintext connection?


    前言

    昨天快下班了,一同事在群里发了一个异常日志,内容如下

    1. 发送邮件失败:{}
    2. javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    3. at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
    4. at sun.security.ssl.InputRecord.read(InputRecord.java:527)
    5. at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:973)
    6. at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
    7. at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
    8. at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
    9. at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:619)
    10. at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:393)
    11. at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:217)
    12. at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2160)
    13. at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:726)
    14. at javax.mail.Service.connect(Service.java:366)

    报错日志是一个发送邮件功能,他怀疑是不是邮件内容中包含了转义字符,导致有的邮件可以正常发送,有的邮件发送失败。

    问题本质

    看这异常日志,像是SSL解析问题,涉及邮件发送的服务之前都升级为SSL了,服务都已经上线了,发送邮件相关代码理论上是没问题的,后来想到邮件发送的25端口和465端口,报着试试的态度,去集成环境服务器上查看了下邮件服务器的配置,真相大白了,66服务器上邮箱端口居然是25的,而169服务器上的端口是465的,服务端两个节点,请求在两个节点上轮询,这就解释了,为啥有的邮件发送是ok的。显然将25端口改为465就ok了。

    在排查问题的时候,经常会出现偶现问题,这时候就要考虑环境的是否有多节点,节点环境、配置是否一致。之前还出现过mq配置错的,测试环境的mq消费了集成环境的消息问题,所以在排查问题的时候要冷静,要看异常日志的实际报错信息,从而再排查问题。

    具体邮件支持SSL相关信息,可以查看邮件发送工具类

  • 相关阅读:
    Locust学习记录2-locust用户类学习【HttpUser,wait_time,weight和fixed_count属性】
    transformer算法嵌入Embedding示例
    大数据在电力行业的应用案例100讲(二十八)-电力营销系统规则配置的实现与应用
    flink状态和检查点
    深度学习之微调
    3.权限
    C语言入门Day_26 结构体
    JVM 垃圾回收详解
    【Azure APIM】列举几种在APIM 策略中的主动生产的错误语句
    vue中修改css的animation的@keyframe数值
  • 原文地址:https://blog.csdn.net/qq_28165595/article/details/125568519