Apache JAMES:Gmail表示从我的服务器发送的电子邮件未经TLS加密

时间:2019-04-04 22:16:17

标签: gmail javamail james

当我从我的Apache JAMES SMTP服务器向我的Gmail地址发送一封电子邮件时,Gmail收到了该电子邮件,但显然没有通过TLS加密。 Gmail显示红色显示的锁定图标,上面写着“ [我的服务器]未加密此邮件”。电子邮件标题也不会指示通过TLS收到邮件。

我已经为我的Apache JAMES SMTP服务器打开了TLS。这是我的smtpserver.xml的相关部分:

<tls socketTLS="false" startTLS="true">
    <keystore>[my-jks-file]</keystore>
    <secret>[my-jks-password]</secret>
    <provider>org.bouncycastle.jce.provider.BouncyCastleProvider</provider>
</tls>

我也尝试使用

<tls socketTLS="true" startTLS="false">

相反,但它不能解决问题。

当我尝试使用https://www.checktls.com/TestReceiver测试我的Apache JAMES电子邮件地址时,报告会说一切都通过了(包括TLS)。使用https://mxtoolbox.com/diagnostic.aspx测试我的服务器域也表示已通过TLS。

为什么不对电子邮件进行加密?

1 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,试图将电子邮件客户端中的电子邮件通过Apache James推送到Gmail,而Gmail报告该邮件没有被安全接收。

根据我对Apache James文档和源代码的了解,RemoteDelivery mailet负责将电子邮件发送到配方电子邮件服务器。 https://james.apache.org/server/3/dev-provided-mailets.html doc和RemoteDelivery.java源代码表示RemoteDelivery包含两个属性:

  • startTLS:一个布尔值(true / false),指示在发出任何登录命令之前,是否将STARTTLS命令(如果服务器支持)将连接切换到TLS保护的连接。默认值为false。
  • sslEnable:布尔值(true / false),指示是否使用SSL连接和使用SSL端口,除非明确覆盖。默认值为false。

startTLS似乎是这里的关键,当James协商与Gmail服务器的连接时,如果Gmail允许,应尝试将不安全的连接升级为安全的连接。

我正在运行Apache James 2.3.2,并在/path/to/James/apps/james/SAR.INF/conf.xml文件中的“删除传递”部分下:

<mailet match="All" class="RemoteDelivery"> 

我尝试将设置属性设置为true

<startTLS>true</startTLS>
<sslEnable>true</sslEnable>

但是,詹姆斯仍然没有向Gmail发送安全的电子邮件。所以我没主意了。

Apache James 3.4版中的FYI,RemoteDelivery配置似乎已重定位到conf / mailcontainer.xml文件。