2013-04-02 88 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服務器進行身份驗證。

相關問題