【问题标题】:Is server to server email transmission secure?服务器到服务器的电子邮件传输是否安全?
【发布时间】:2013-04-02 10:30:22
【问题描述】:

我们正在运行一个带有网络到电子邮件表单的网站。我们强制使用 https 来保护从浏览器到 Web 服务器的传输。我们使用 PHP 从 Web 服务器生成包含接收到的信息的电子邮件消息。目标电子邮件服务器位于另一个位置。我想知道从网络服务器到目标电子邮件服务器的电子邮件传输是否安全。

所以我有几个相关的问题:

A) 默认情况下,从发件人服务器到收件人服务器的电子邮件传输是否安全? (需要明确的是,这不是关于从电子邮件客户端到 SMTP 服务器的连接的问题)

B) 如果默认传输不安全,我如何检查消息是否安全传输?

C) 如果传输当前不安全,我如何请求/强制安全连接?

我们正在使用默认的 PHP 邮件功能(通过 Joomla 扩展)

谢谢!

【问题讨论】:

  • 无加密。不是。

标签: php security email joomla mta


【解决方案1】:

A) 最初,服务器到服务器的 smtp 连接始终在端口 25 上以纯文本形式出现。 如果源服务器和目标服务器都支持TLS extension,那么通常使用STARTTLS 命令将普通连接转换为加密连接

B)要检查邮件是否通过加密连接传输,请在传输后读取结果邮件中的"Received"-Headers。

它们看起来像这样:

Received: from X.example.com (X.example.com [y.y.y.y])
    by z.example.net (Postfix) with ESMTPS id ......

重要的部分是 ESMTPS 位。最后一个S 表示“安全”。 如果它只是说 "ESMTP""SMTP" 而不是 "ESMTPS",则传输是加密的。

C) 如果目标服务器不支持 TLS,除了 PGP 之类的端到端加密(如 Álvaro G. Vicario 所建议的那样)之外,您无能为力。一些服务器(如postfix)提供了配置选项,以防止在目标无法执行 TLS 时消息完全发送出去。

如果服务器支持 STARTTLS,您可以使用 telnet 手动测试:

telnet gmail-smtp-in.l.google.com 25
Trying 173.194.70.27...
Connected to gmail-smtp-in.l.google.com.
Escape character is '^]'.
220 mx.google.com ESMTP 4si1878861eee.197 - gsmtp
EHLO mail.example.com              <--- you have to type that
250-mx.google.com at your service
250-SIZE 35882577
250-8BITMIME
250-STARTTLS                       <----- GMAIL supports TLS
250 ENHANCEDSTATUSCODES  

        

【讨论】:

    【解决方案2】:

    事实上,我认为这一个关于从电子邮件客户端到 SMTP 服务器的连接的问题。当源服务器连接到目标服务器以传递消息时,它成为客户端。它使用 SMTP 协议,就像您的桌面电子邮件程序一样。但是有一个非常重要的区别:

    • 当您使用常规电子邮件客户端时,您通常使用可以(并且应该)提供某些安全措施(包括身份验证和加密)的同一受信任提供商。

    • 当邮件服务器连接到第三方服务器时,它是匿名连接的,它需要与端口 25 建立未加密的连接。他们没有事先同意做其他事情。

    鉴于通道是清晰的,服务器到服务器的通信不安全,除非消息本身是加密的(PGP 或其他)。您可以将电子邮件想象成蜗牛的明信片。

    (因此,那些在您注册时以明文形式通过电子邮件发送密码的网站是错误的。)

    【讨论】:

      【解决方案3】:

      充分尊重迄今为止在 Joomla 中的非常好的答案! SMTP 邮件功能由从PHPMailer 类扩展而来的JMail 处理。设置 Joomla 时!您有三种不同的选择:

      1. PHP 邮件 - 通过 PHPMailer 使用 PHP mail() 设置。
      2. Sendmail - 通过PHPMailer 使用sendmail...
      3. SMTP - 使用 PHPMailer

      PHPMailer 类在其 SMTP 连接协商中同时支持 tlsssl

      当然,这取决于您在全局配置->服务器中的设置。在标题为 Mail Settings 的窗格中,您可以打开 SMTP 安全性 (SSL|TLS) 并提供您的用户名和密码。 这些详细信息是通过您的 SMTP 服务器进行身份验证所必需的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-17
        • 2018-02-28
        • 2011-03-05
        • 1970-01-01
        • 2017-12-15
        • 2013-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多