You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 17环境下Logback SMTPAppender对接AWS SES报TLS认证失败求助

问题原因

该报错是因为Java 17对网络安全默认配置做了调整,原有Logback SMTP配置没有显式启用STARTTLS,而AWS SES的587端口要求必须走STARTTLS加密传输,同时低版本JavaMail依赖也可能存在TLS版本适配问题。

解决方案

1. 调整SMTPAppender配置,显式开启STARTTLS

在原有配置基础上增加<STARTTLS>true</STARTTLS>配置项,还可添加SSL校验相关配置避免握手失败,修改后的完整配置如下:

<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
    <smtpHost>email-smtp.us-east-1.amazonaws.com</smtpHost>
    <smtpPort>587</smtpPort>
    <username>name</username>
    <password>password</password>
    <!-- 新增STARTTLS配置 -->
    <STARTTLS>true</STARTTLS>
    <!-- 可选:开启SSL服务端身份校验,保证连接安全性 -->
    <sslCheckServerIdentity>true</sslCheckServerIdentity>

    <to>${TO}</to>
    <from>${FROM}</from>
    <subject>${HOSTNAME}: %logger{30} -</subject>

    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%date %-5level %logger{35} -[%t, U_%X{userId}, T_%X{traceId}]- %message%n</pattern>
    </layout>
    <asynchronousSending>true</asynchronousSending>
    <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
        <bufferSize>1</bufferSize>
    </cyclicBufferTracker>
</appender>

2. 升级JavaMail相关依赖

如果修改配置后仍然报错,大概率是使用的javax.mail依赖版本过低,和Java 17的默认TLS配置不兼容:

  • 若使用旧版com.sun.mail:javax.mail,请升级到1.6.2及以上版本
  • 也可直接切换到最新的Jakarta Mail依赖(org.eclipse.angus:jakarta.mail 2.0+版本),适配Java 17以上版本的安全规范

3. 可选:临时调整JVM安全配置(仅排查用,不建议生产环境使用)

如果上面两种方案都无效,可临时修改JDK的java.security配置文件,把jdk.tls.disabledAlgorithms里的TLSv1、TLSv1.1相关条目暂时移除,验证是否是TLS版本限制导致的问题,生产环境优先通过升级依赖解决,不建议关闭安全限制。

4. 可选:切换到SES 465 SSL端口

如果不想用STARTTLS模式,也可以直接把SMTP端口改成AWS SES提供的465 SSL端口,调整对应配置即可:

<smtpPort>465</smtpPort>
<ssl>true</ssl>
<sslCheckServerIdentity>true</sslCheckServerIdentity>

内容的提问来源于stack exchange,提问作者Bizon4ik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 17:54:03