如何使用 Telnet 來測試 SMTP 通訊

 

適用版本: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

上次修改主題的時間: 2006-11-14

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

下列清單說明您可能會想要使用 Telnet 來測試 SMTP 與 Microsoft Exchange Server 組織中現有傳輸伺服器通訊的案例:

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

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

開始之前

依預設,在 Hub Transport server 之間傳送的郵件會經過加密及驗證。您只能在通訊埠 25 上使用 Telnet,將郵件提交至已將接收連接器設定為允許運用匿名存取或基本驗證來接收郵件的內部 Hub Transport server。面向網際網路的伺服器需要匿名存取權。當您將郵件傳送至接受基本驗證的接收連接器時,必須要有一個公用程式將使用者名稱及密碼的文字字串轉換成 Base64 格式。由於使用基本驗證時,使用者名稱和密碼很容易被識別,所以建議不要使用沒有加密機制的基本驗證。

在許多組織中,面向網際網路的 SMTP 伺服器會設定要驗證來源 IP 位址、對應的網域名稱系統 (DNS) 網域名稱,以及嘗試傳送郵件至伺服器之任何網際網路主機的反向查閱 IP 位址。如果您將測試電腦連接至網際網路,並嘗試在通訊埠 25 上使用 Telnet 將測試郵件傳送至遠端郵件伺服器,則您的郵件可能會被退回。若要滿足遠端郵件伺服器規定的安全性需求,您可以從 Edge Transport server 連接至遠端郵件伺服器。Edge Transport server 上設定公認的網域具有適當的 DNS 郵件交換 (MX) 記錄、位址 (A) 記錄,以及反向查閱記錄,可將 Edge Transport server 識別為網際網路上公認的網域之合法及可追蹤的電子郵件來源。

本主題中的程序顯示如何使用 Microsoft Windows Server 2003 及 Windows XP 所附的 Microsoft Telnet 用戶端。舊版 Windows 或協力廠商 Telnet 用戶端所需的語法可能不同。Windows Telnet 用戶端中的命令不區分大小寫。SMTP 命令動詞會大寫,以方便識別。

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

500 5.3.3 Unrecognized command

使用 Nslookup 命令列工具尋找 SMTP 伺服器的 IP 位址

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

使用 Nslookup 工具尋找 SMTP 伺服器的 IP 位址

  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。

    note附註:
    尾端的句點 ( . ) 表示是 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。

note附註:
在組織內部網路上設定的防火牆或網際網路 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 通訊

本節中的程序顯示如何在通訊埠 25 上使用 Telnet 測試 SMTP 通訊。該程序使用下列清單中所述的值:

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

  • 來源網域   contoso.com

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

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

  • 郵件主旨   Contoso 的測試郵件

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

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

在通訊埠 25 上使用 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。

  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) 郵件。RFC 1891 中有關於 DSN 郵件的定義。在此情況下,您是在要求對方傳回 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 工作階段與 SMTP 伺服器連線的結果

本節詳細說明您在上述範例中輸入命令後所得到的回應。

note附註:
RFC 2821 中定義的 3 位數 SMTP 回應碼適用於所有的 SMTP 郵件伺服器。但在某些 SMTP 郵件伺服器中,文字說明部分會稍微不同。在此範例中,目的電腦執行的是 Exchange Server 2007。

開啟 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 伺服器上有連線限制。

note附註:
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

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

相關資訊

如需相關資訊,請參閱下列主題: