1

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

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

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

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

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

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

谢谢!

4

3 回答 3

2

A)最初,服务器到服务器的 smtp 连接始终在端口 25 上以纯文本形式出现。如果源服务器和目标服务器都支持TLS 扩展,那么通常使用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  

        
于 2013-04-02T11:50:54.220 回答
0

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

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

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

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

(出于这个原因,那些在您注册时通过电子邮件明确发送密码的网站是错误的。)

于 2013-04-02T10:55:48.183 回答
0

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

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

PHPMailertls类同时支持sslSMTP 连接协商。

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

于 2013-04-03T01:16:14.913 回答