我们正在运行一个带有网络到电子邮件表单的网站。我们强制使用 https 来保护从浏览器到 Web 服务器的传输。我们使用 PHP 从 Web 服务器生成包含收到信息的电子邮件。目标电子邮件服务器位于另一个位置。我想知道电子邮件从网络服务器到目标电子邮件服务器的传输是否安全。
所以我有几个相关问题:
A) 默认情况下,从发件人服务器到收件人服务器的电子邮件传输是否安全? (需要明确的是,这不是关于从电子邮件客户端到 SMTP 服务器的连接的问题)
B) 如果默认情况下传输不安全,我如何检查消息是否安全传输?
C) 如果传输当前不安全,我如何请求/强制安全连接?
我们使用默认的 PHP 邮件功能(通过 Joomla 扩展)
谢谢!
最佳答案
A) 最初,服务器到服务器的 smtp 连接始终在端口 25 上以纯文本形式进行。 如果源服务器和目标服务器都支持 TLS extension然后通常普通连接会转换为带有 STARTTLS 的加密连接。命令
B) 要检查邮件是否通过加密连接传输,请在传输后读取结果消息中的“已接收”
header 。
它们看起来像这样:
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 的情况下消息完全出去。
您可以使用 telnet 手动测试服务器是否支持 STARTTLS:
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
关于php - 服务器到服务器的电子邮件传输安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15761831/