当前位置: 首页 > 知识库问答 >
问题:

ApacheJames:Gmail说从我的服务器发送的电子邮件不是TLS加密的

许沛
2023-03-14

当我从我的ApacheJamesSMTP服务器向我的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 报告说一切(包括TLS)都通过了。使用测试服务器域https://mxtoolbox.com/diagnostic.aspx 还说TLS通过了。

为什么邮件没有加密?

共有2个答案

耿和韵
2023-03-14

SocketTLS和startTLS只影响James入站邮件的加密方法,而James发送的邮件的加密会影响gmail红锁的加密,需要额外的配置。测试结果邮件在Gmail中传递:“安全:标准加密(TLS)”。我的配置(Apache James版本:2.3.2)如下所示:

<mail.smtp.port>25</mail.smtp.port>
<mail.smtp.starttls.enable>true</mail.smtp.starttls.enable>
<mail.smtp.auth>false</mail.smtp.auth>
<mail.smtps.auth>false</mail.smtps.auth>
<mail.smtp.socketFactory.port>25</mail.smtp.socketFactory.port>
<mail.smtp.socketFactory.fallback>false</mail.smtp.socketFactory.fallback>

<mail.smtps.ssl.protocols>TLSv1.2</mail.smtps.ssl.protocols>

<mail.transport.protocol>smtp</mail.transport.protocol>
<mail.smtps.port>465</mail.smtps.port>
<mail.smtps.ssl.enable>true</mail.smtps.ssl.enable>
<mail.smtps.starttls.enable>false</mail.smtps.starttls.enable>
<mail.smtps.socketFactory.port>465</mail.smtps.socketFactory.port>
<mail.smtps.socketFactory.class>javax.net.ssl.SSLSocketFactory</mail.smtps.socketFactory.class>
<mail.smtps.socketFactory.fallback>false</mail.smtps.socketFactory.fallback>

就像在Christos的回答中的java代码中设置属性一样:java mail无法使用tls或ssl连接到smtp。

匡晟
2023-03-14

我也有同样的问题,试图让电子邮件客户端通过Apache James推送到Gmail上,Gmail报告说它们没有被安全接收。

根据我对Apache James留档和源代码的理解,它是负责向食谱电子邮件服务器发送电子邮件的远程交付邮件。https://james.apache.org/server/3/dev-provided-mailets.html文档和远程交付elivery.java代码说远程交付包含两个属性:

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

启动TLS似乎是这里的关键,当詹姆斯正在谈判与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中,RemoteDelivery配置似乎被重新定位到conf/mailcontainer.xml文件中。

 类似资料:
  • 我有一个服务器与静态IP在我的家里,我服务我自己的网页与一个域和所有工作良好。 在我的网页,你可以通过电子邮件和密码注册。当您注册一个名为nodemailer的节点模块,从google帐户发送电子邮件时,问题是google帐户有一个发送电子邮件的限制。 所以我需要将nodemailer模块连接到我自己家里的服务器上。 我在谷歌上搜索,但没有类似的答案。 如何在NodeJS中使用后缀?? http:

  • 我创建了下一个类: 我在我的服务中声明它是一项服务。yml 在我的控制器中,调用服务: 电子邮件已发送,但页面仍在加载30秒,我有一个来自开发人员工具栏的警报:加载Web调试工具栏时发生错误(404:未找到)。您想打开分析器吗?如果接受消息,Symfony分析器不显示任何错误。如果取消,消息开发人员工具栏不会出现。 我做错了什么? 非常感谢。

  • 发送电子邮件时,页脚中有下面的标准消息。 此电子邮件是使用CakePHP框架发送的,http://cakephp.org. 它似乎使用了这个: 我的控制器里有这个。 创建了以下视图: /应用程序/查看/电子邮件/文本/梦想。ctp /应用程序/视图/布局/电子邮件/文本/梦想。ctp 是否有任何其他设置我错过了cakephp使用我的布局? *注:如果我重新命名我的梦想。ctp默认。ctp它使用那个

  • Java: openjdk版本“11.0.11”2021-04-20 openjdk运行时环境(构建11.0.11+9-Ubuntu-0Ubuntu2.20.04) openjdk 64位服务器VM(构建11.0.11+9-Ubuntu-0Ubuntu2.20.04,混合模式,共享) 握手后新会话票证到达: SSL-Session: 协议:TLSv1.3 密码:TLS_AES_256_GCM_SH

  • 我试图发送电子邮件使用gmail smtp使用javax.mail.下面是我的代码 代码工作正常当我在本地服务器上运行它时,但当我尝试在Elastic beanstek上运行它时(我的服务器在AWS EBS上运行),身份验证失败异常即将到来注意:我已打开从Google A/c设置访问不太安全的应用程序,但我仍然收到此错误 javax.mail.身份验证失败异常:534-5.7.14请通过您的网络浏