我们正在运营一个带有网络电子邮件表单的网站。我们强制https保护从浏览器到Web服务器的传输。从Web服务器,我们使用PHP生成包含收到的信息的电子邮件。目标电子邮件服务器位于其他位置。我想知道从网络服务器到目标电子邮件服务器的电子邮件传输是否安全。
所以我有几个相关的问题:
A)默认情况下,发件人服务器到收件人服务器的电子邮件是否受到保护? (要清楚,这是不关于从电子邮件客户端到SMTP服务器的连接的问题)
B)如果默认情况下传输不安全,我该如何检查邮件是否安全传输?
C)如果传输当前不安全,我该如何请求/强制进行安全连接?
我们正在使用默认的PHP邮件功能(通过Joomla扩展)
谢谢!
答案 0 :(得分:2)
A)最初,服务器到服务器的smtp连接在端口25上始终采用纯文本格式。 如果两个源服务器和目标服务器都支持TLS extension,那么通常使用STARTTLS命令将普通连接转换为加密连接
B)要检查邮件是否通过加密连接传输,请在传输后在结果邮件中阅读"Received"
- 标题。
他们看起来像这样:
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这样的某种端到端加密之外,你无能为力(正如ÁlvaroG。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
答案 1 :(得分:0)
事实上,我认为 是一个关于从电子邮件客户端到SMTP服务器的连接的问题。当源服务器连接到目标服务器以传递消息时,它将成为客户端。它使用SMTP协议,就像您的桌面电子邮件程序一样。但是有一个非常重要的区别:
当您使用常规电子邮件客户端时,通常使用可以(并且应该)提供某些安全措施的相同可信提供商,包括身份验证和加密。
当邮件服务器连接到第三方服务器时,它会匿名连接,并且需要建立到端口25的未加密连接。否则他们没有事先达成协议。
鉴于通道清晰,服务器到服务器的通信不安全,除非消息本身是加密的(PGP或其他)。你可以想到像蜗牛邮件明信片这样的电子邮件。
(出于这个原因,那些在您注册时通过电子邮件发送密码的网站做错了。)
答案 2 :(得分:0)
到目前为止,对Joomla的非常好的答案给予了应有的尊重! SMTP邮件功能由JMail
处理,从PHPMailer
类扩展。设置Joomla时!你有三种不同的选择:
PHPMailer
使用PHP mail()设置。PHPMailer
... sendmail
PHPMailer
class PHPMailer类在其SMTP连接协商中支持tls
和ssl
。
当然,这取决于您在全局配置 - >服务器中进行设置。在标题为Mail Settings
的窗格中,您可以启用 SMTP安全(SSL | TLS)并提供您的用户名和密码。 需要这些详细信息才能通过SMTP服务器进行身份验证。