共用方式為


使用 Telnet 測試 SMTP 通訊

 

適用版本: Exchange Server 2010 SP2, Exchange Server 2010 SP3

上次修改主題的時間: 2016-11-28

本主題說明如何使用 Telnet 來測試郵件伺服器之間的簡易郵件傳送通訊協定 (SMTP) 通訊。依預設,SMTP 會接聽通訊埠 25。如果您在通訊埠 25 上使用 Telnet,則可輸入用來連接 SMTP 伺服器的 SMTP 命令,並將您的 Telnet 工作階段當成 SMTP 郵件伺服器一樣來傳送郵件。您可以查看連線以及郵件提交程序中每個步驟的成敗。

此處提供您可能會想要使用 Telnet 來測試 SMTP 與 Microsoft Exchange Server 組織中現有傳輸伺服器通訊的案例:

  • 從位於周邊網路外的主機連接至組織的 Edge Transport server,並傳送測試郵件。

  • 從組織的 Edge Transport server 連接至遠端郵件伺服器,並傳送測試郵件。

本主題中的程序顯示如何使用 Microsoft Windows 所附的 Telnet 用戶端元件。協力廠商的 Telnet 用戶端可能需要使用與 Windows Telnet 元件不同的語法。

必要條件

  • 設定允許使用匿名存取或基本驗證的接收連接器   因為會對 Hub Transport Server 之間正常發生的郵件傳輸進行加密和驗證,所以在通訊埠 25 上使用 Telnet 測試通訊時,內部 Hub Transport Server 應該要有設定為允許使用匿名存取或基本驗證以接收郵件的接收連接器。連接網際網路的伺服器需要匿名存取權

    注意事項附註:
    當您將郵件傳送至接受基本驗證的接收連接器時,必須要有一個公用程式將使用者名稱及密碼的文字字串轉換成 Base64 格式。由於使用基本驗證時,使用者名稱和密碼很容易被識別,所以建議不要使用沒有加密機制的基本驗證。
  • 連接至遠端郵件伺服器   您可能也想要從組織的 Edge Transport Server 連接到遠端郵件伺服器。這有助於避免由連接網際網路之 SMTP 伺服器 (已設定要驗證來源 IP 位址、對應的網域名稱系統 (DNS) 網域名稱,以及嘗試傳送郵件至伺服器之任何網際網路主機的反向查閱 IP 位址) 傳送的測試郵件遭到拒絕。

  • 安裝和/或啟用 Telnet 用戶端   在您使用 Telnet 測試郵件伺服器之間的 SMTP 通訊之前,可能需要執行以下其中一項或多項工作:

    • 安裝 Telnet 用戶端 (如果您尚未如此做)。如需如何在 Windows Vista 或 Windows Server 2008 上安裝 Telnet 用戶端的詳細資訊,請參閱安裝 Telnet 用戶端 (英文)。

    • 在 Windows Server 2008 上啟用 Telnet 用戶端。請參閱本主題稍後的程序。

  • 找出 SMTP 伺服器的 FQDN 或 IP 位址。如果您不知道 FQDN 或 IP 位址,可以使用 Nslookup 來找出 SMTP 伺服器的 FQDN 或 IP 位址。請參閱本主題稍後的程序。

啟用 Windows Server 2008 中的 Telnet 用戶端

Windows Server 2008 本機 Administrators 群組的成員資格,或同等項目,是完成此程序的最低要求。

在 Windows Server 2008 中,預設會停用 Telnet 用戶端。若要啟用此功能,請完成下列步驟:

  1. 開啟 [伺服器管理員]。

  2. 按一下 [動作],然後選取 [新增功能]。

  3. 選取 [Telnet 用戶端],然後按 [下一步]。

  4. 按一下 [安裝],然後按一下 [關閉] 以完成 Telnet 用戶端的安裝。

使用 Nslookup 找出 SMTP 伺服器的 FQDN 或 IP 位址

若要在通訊埠 25 上使用 Telnet 連接目的 SMTP 伺服器,您必須要使用 SMTP 伺服器的網域全名 (FQDN) 或 IP 位址。如果 FQDN 或 IP 位址未知,尋找此資訊的最簡單方法,就是使用 Nslookup 命令列工具尋找目的網域的 MX 記錄。

  1. 在命令提示字元中,輸入 nslookup,然後按 ENTER。此命令會開啟 Nslookup 工作階段。

  2. 輸入 set type=mx,然後按 ENTER。

  3. 輸入 set timeout=20,然後按 ENTER。Windows DNS 伺服器預設有 15 秒的遞迴 DNS 查詢逾時限制。

  4. 輸入要尋找其 MX 記錄的網域名稱。例如,若要尋找 fabrikam.com 網域的 MX 記錄,請輸入 fabrikam.com.,然後按 ENTER。

    注意事項附註:
    尾端的句點 (.) 表示是 FQDN。使用尾端的句點可防止不小心在網域名稱後面加上任何為網路設定的預設 DNS 字尾。

    該命令的輸出如下:

    fabrikam.com mx preference=10, mail exchanger = mail1.fabrikam.com
    fabrikam.com mx preference=20, mail exchanger = mail2.fabrikam.com
    mail1.fabrikam.com internet address = 192.168.1.10
    mail2 fabrikam.com internet address = 192.168.1.20
    

    您可以使用與 MX 記錄關聯的任何主機名稱或 IP 位址作為目的 SMTP 伺服器。SMTP 伺服器的喜好設定值愈低表示優先順序愈高。您可以使用多筆 MX 記錄及不同的喜好設定值,以供進行負載平衡及容錯。

  5. 準備結束 Nslookup 工作階段時,請輸入 exit,然後按 ENTER。

注意事項附註:
在組織內部網路上設定的防火牆或網際網路 Proxy 限制,可能會阻擋您使用 Nslookup 工具查詢網際網路上的公用 DNS 伺服器。
Exchange 組織中的內部郵件流並非絕對需要 MX 記錄。如果您必須尋找組織中任何 Hub Transport server 或所訂閱之 Edge Transport server 的 FQDN,可以在 Exchange 管理命令介面中使用下列命令:Get-ExchangeServer | where {$_.isHubTransportServer -eq $true -or $_.isEdgeServer -eq $true} | Format-List Fqdn,ServerRole
如需相關資訊,請參閱Get-ExchangeServer管線

在通訊埠 25 上使用 Telnet 測試 SMTP 通訊

為了提供範例,以下程序使用下列清單中所述的值:

  • 目的 SMTP 伺服器   mail1.fabrikam.com

  • 來源網域   contoso.com

  • 寄件者的電子郵件地址   chris@contoso.com

  • 收件者的電子郵件地址   kate@fabrikam.com

  • 郵件主旨   Contoso 的測試郵件

  • 郵件內文   這是一封測試郵件

    注意事項附註:
    請務必使用有效的寄件者電子郵件地址,這樣才會將目的 SMTP 伺服器所產生的未傳遞回報 (NDR) 郵件傳送給郵件的寄件者。

Telnet 用戶端中的命令不區分大小寫。SMTP 命令動詞會大寫,以方便識別。

  1. 在命令提示字元中,輸入 telnet,然後按 ENTER。此命令會開啟 Telnet 工作階段。

  2. 輸入 set localecho,然後按 ENTER。此選用命令可讓您在輸入字元的同時檢視這些字元。有些 SMTP 伺服器可能會需要此設定。

  3. 輸入 set logfile*<檔案名稱>*。此選用命令會將 Telnet 工作階段記錄在指定的記錄檔。如果您只有指定檔名,則記錄檔位置為目前的工作目錄。如果您指定路徑及檔名,則該路徑必須在電腦本機上。指定的路徑和檔名都必須以 Microsoft DOS 8.3 格式輸入。必須指定已存在的路徑。如果指定的記錄檔不存在,則系統會為您建立該記錄檔。

  4. 輸入 open mail1.fabrikam.com 25,然後按 ENTER。

    注意事項附註:
    在 Telnet 工作階段中,連接至目的 SMTP 伺服器之後,不能使用退格鍵。如果您在輸入 SMTP 命令時打錯字,則必須按 ENTER,然後重新輸入命令。無法辨識的 SMTP 命令或語法錯誤會產生錯誤訊息,如下所示:
    500 5.3.3 Unrecognized command
    
  5. 輸入 EHLO contoso.com,然後按 ENTER。

  6. 輸入 MAIL FROM:chris@contoso.com,然後按 ENTER。

  7. 輸入 RCPT TO:kate@fabrikam.com NOTIFY=success,failure,然後按 ENTER。選用的 NOTIFY 命令可定義目的 SMTP 伺服器必須提供給寄件者的特定傳遞狀態通知 (DSN) 郵件。DSN 郵件是在 RFC 1891 中定義。在此情況下,您是在要求對方傳回 DSN 郵件表明郵件傳遞成功或失敗。

  8. 輸入 DATA,然後按 ENTER。您會收到如下回應:

    354 Start mail input; end with <CLRF>.<CLRF>
    
  9. 輸入Subject:Contoso 的測試郵件,然後按 ENTER。

  10. 按 ENTER。RFC 2822 規定 Subject: 標頭欄位與郵件內文之間必須留一行空白。

  11. 輸入這是測試郵件,然後按 ENTER。

  12. 按 ENTER,輸入一個句點 (.),然後按 ENTER。您會收到如下回應:

    250 2.6.0 <GUID> Queued mail for delivery
    
  13. 若要中斷與目的 SMTP 伺服器的連線,請輸入 QUIT,然後按 ENTER。您會收到如下回應:

    221 2.0.0 Service closing transmission channel
    
  14. 若要關閉 Telnet 工作階段,請輸入 quit,然後按 ENTER。

評估 Telnet 工作階段的結果

本節提供以下命令可能會提供的回應資訊,這些命令是先前範例中使用的命令:

  • 開啟 mail1.fabrikam.com 25

  • EHLO contoso.com

  • MAIL FROM:chris@contoso.com

  • RCPT TO:kate@fabrikam.com NOTIFY=success,failure

    注意事項附註:
    RFC 2821 中定義的 3 位數 SMTP 回應碼與所有的 SMTP 郵件伺服器中的相同。但在某些 SMTP 郵件伺服器中,文字說明部分會稍微不同。在先前的範例中,目的電腦執行的是 Exchange Server 2010。

開啟 mail1.fabrikam.com 25

成功回應   220 mail1.fabrikam.com Microsoft ESMTP MAIL Service ready at <day-date-time>

失敗回應   Connecting to mail1.fabrikam.com...Could not open connection to the host, on port 25: Connect failed

可能的失敗原因

  • 目的 SMTP 服務無法使用。

  • 目的防火牆上有所限制。

  • 來源防火牆上有所限制。

  • 所指定之目的 SMTP 伺服器的 FQDN 或 IP 位址不正確。

  • 指定的通訊埠號碼不正確。

EHLO contoso.com

成功回應   250 mail1.fabrikam.com Hello [<sourceIPaddress>]

失敗回應   501 5.5.4 Invalid domain name

可能的失敗原因   網域名稱中有無效的字元。或者,目的 SMTP 伺服器上有連線限制。

注意事項附註:
EHLO 是 RFC 2821 中定義的延伸簡易郵件傳送通訊協定 (ESMTP) 動詞。ESMTP 伺服器會在初始連線期間通告其功能。這些功能包括其可接受的最大郵件大小,以及所支援的驗證方法。HELO 是 RFC 821 中定義的舊 SMTP 動詞。大部分 SMTP 郵件伺服器都支援 ESMTP 及 EHLO。

MAIL FROM:chris@contoso.com

成功回應   250 2.1.0 Sender OK

失敗回應   550 5.1.7 Invalid address

可能的失敗原因   寄件者電子郵件地址中有語法錯誤。

失敗回應   530 5.7.1 Client was not authenticated

可能的失敗原因   目的伺服器不接受匿名提交郵件。如果您嘗試使用 Telnet 直接將郵件提交至 Hub Transport server,就會收到此錯誤。

RCPT TO:kate@fabrikam.com NOTIFY=success,failure

成功回應   250 2.1.5 Recipient OK

失敗回應   550 5.1.1 User unknown

可能的失敗原因   組織中沒有指定的收件者。

 © 2010 Microsoft Corporation. 著作權所有,並保留一切權利。