2013-04-02 62 views
1

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

所以我有几个相关问题:

A)是从发送方服务器在默认情况下确保收件人服务器的邮件传输? (要清楚,这是不是关于从电子邮件客户端到SMTP服务器的连接的问题)

B)如果传输在默认情况下不安全,如何检查消息是否安全传输? C)如果传输当前不安全,如何请求/强制安全连接?

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

谢谢!

+4

没有加密。不是这样。 – Ihsan

回答

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一样做(阿尔瓦罗G.维卡里奥所建议的任何操作)。某些服务器(如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 
0

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

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

  • 当邮件服务器连接到第三方服务器时,它会匿名连接,它需要建立到端口25的未加密连接。否则,它们不会事先达成协议。

假定信道是清晰,服务器对服务器的通信是不安全除非消息本身被加密(PGP或其他)。您可以考虑电子邮件,如蜗牛邮件明信片。

(出于这个原因,当您注册这些网站,电子邮件中明确你的密码了做错了。)

0

充分尊重了很好的答案,到目前为止,在的Joomla! SMTP邮件功能由JMail处理,其范围从PHPMailer类延伸。当建立Joomla!你有三种不同的选择:

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

PHPMailer类支持tlsssl在它的SMTP连接协商。

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