使用手動 Telnet 會話測試 SMTP 連接

已發表: 2022-04-04

DigitalOcean、AWS、Vultr 等服務器提供商會阻止您的電子郵件的傳出端口 25,以阻止垃圾郵件通過。 但是,您始終可以要求他們取消阻止它。 如果你想知道你的 25 端口是否被阻塞,你可以使用手動 telnet 會話來測試 SMTP 連接。

可以通過多種方式解決 SMTP 連接錯誤,但命令行可以直接檢測到它們。 Telnet 通常用於測試 SMTP 連接失敗。 在接下來的步驟中,我們將使用 Telnet 來測試電子郵件服務器。 設置電子郵件服務器的一個關鍵部分是確保 SMTP 從命令行 (Linux) 工作。

Telnet 是從命令行檢查 SMTP 的最常用方法。 這也是測試 SMTP Relay 最常用的方法。

目錄

什麼是 SMTP?

SMTP 是一種基於文本、面向連接的協議,其中郵件發送者通過發送命令字符串並通過可靠的有序數據流通道(通常是傳輸控制協議 (TCP) 連接)提供所需數據來與郵件接收者連接。

SMTP 會話由來自 SMTP 客戶端(發起代理、發送者或發送者)的命令和來自發起會話和交換會話參數的 SMTP 服務器(偵聽代理或接收者)的響應組成。 一個會話中可能有零個或多個 SMTP 事務。 三個命令/回复序列組成一個 SMTP 事務:

  1. MAIL 命令,也稱為返迴路徑、反向路徑、退回地址、mfrom 或信封發件人,用於設置返回地址。
  2. 要建立消息接收者,請使用 RCPT 命令。 此命令可以根據需要重複多次,每個收件人一個。 信封也有這些地址。
  3. DATA 表示消息文本的開始; 郵件的內容,而不是其信封。 它由消息頭和消息正文之間的空行組成。 服務器響應兩次:首先是對 DATA 指令本身,確認它已準備好接收文本,然後在數據序列結束後再次響應,接受或拒絕完整的消息。

什麼是 Telnet 會話?

Telnet 是一種網絡協議,用於遠程訪問計算機並在兩台計算機之間建立雙向、協作、基於文本的通信通道。

它使用由用戶控制的傳輸控制協議/互聯網協議 (TCP/IP) 網絡協議創建遠程會話。 Web 上的超文本傳輸協議 (HTTP) 和文件傳輸協議 (FTP) 僅允許用戶從遙遠的計算機請求特定文件,而 Telnet 允許用戶以具有分配給特定應用程序和數據的權限的普通用戶身份登錄計算機。

Telnet 最常用於編碼人員和需要訪問遠程計算機上的某些應用程序或數據的任何人。

Telnet 是如何工作的?

Telnet 是一種客戶端-服務器協議,用於在遠程計算機(通常是服務器)上打開命令行。 此實用程序可用於 ping 端口並確定它是否打開。 Telnet 使用虛擬終端連接仿真器,它是計算機連接的抽象實例,它使用標準協議來充當連接到系統的物理終端。 對於需要傳輸數據文件的用戶,可以同時使用FTP和Telnet。

Telnet 允許用戶遠程連接到機器,通常稱為 Telnet 進入系統。 他們必須提供他們的用戶憑據組合才能訪問遠程計算機,這允許他們運行命令行,就好像他們實際出現在計算機上一樣。 用戶的 IP 地址將匹配他們登錄的計算機,而不是他們用於登錄的計算機,無論他們的實際位置如何。

Telnet 的用途是什麼?

Telnet 可用於在服務器上執行一系列任務,包括文件編輯、程序執行和電子郵件檢查。

一些服務器允許通過 Telnet 遠程連接到公共數據,以便玩簡單的遊戲或查看天氣預報。 許多這些功能的存在是因為它們是懷舊的,或者因為它們仍然與需要某些數據的早期系統兼容。

Telnet 還允許用戶連接到任何使用基於文本的未加密協議的軟件,例如 Web 服務器和端口。 用戶可以在遠程機器上打開一個cmd,然後輸入telnet,後跟遠程機器的名稱或IP地址,telnet會話會ping端口看是否打開。 空白屏幕表示端口已打開,但指示端口已連接的錯誤消息表示端口已關閉。

Telnet 中的安全性

Telnet 是一種非安全、未加密的協議。 通過監視用戶的連接,任何人都可以在 Telnet 會話期間查看用戶的用戶名、密碼和其他以明文形式鍵入的機密信息。 此信息可用於訪問目標計算機。

使用 Telnet 測試 SMTP 連接

我們將首先運行一些測試以查看您的傳出端口 25 是否打開,在第一種情況下,我們將證明 SMTP 端口 25 被阻止,在第二種情況下,我們將通過使用 telnet 發送電子郵件來完成。

案例 1:25 端口被阻塞

在命令行上運行以下命令(您需要在遇到電子郵件問題的服務器上運行此命令):

 遠程登錄 <IP_ADDRESS_OF_REMOTE_MAIL_SERVER> 25

如果您收到“TRYING ...”之類的消息,而沒有其他任何內容,則意味著您的傳出端口 25 被阻止,您將無法從服務器發送電子郵件。

案例2:25端口打開時:

如果您沒有郵件服務器的 IP 地址,我們需要找到一個郵件服務器進行登錄。 為此,我們需要給定域的 DNS MX 記錄。 這可以通過以下命令找到

nslookup -type=mx DOMAIN_NAME

SMTP 使用三個端口之一:25、465 或 587,Microsoft Outlook 經常使用這些端口。 如果您的 SMTP 中繼使用 25 以外的端口,您將使用郵件交換服務器的 nslookup 響應中提供的端口。 您可以詢問您的管理員或進入郵件交換服務器並查看協議以查看您的 SMTP 使用的端口。

登錄 SMTP 服務器:

 遠程登錄 <IP_ADDRESS_OF_MAIL_SERVER> <PORT>

如果您已連接,您可以繼續發送電子郵件

EHLO 或 HELO 命令是我們需要為我們的 SMTP 電子郵件測試器發送到郵件服務器的第一個命令。 這是一個簡單的歡迎詞,開始 telnet 客戶端與 SMTP 服務器的對話。

 EHLO <DOMAIN_NAME>
測試 smtp 連接

此處顯示 SMTP 服務器接受的 SMTP 命令。

MAIL FROM 命令是我們真正必須運行的下一個命令。 退回的地址由此確定。

 發件人:<[電子郵件保護]>

我們現在可以在發出 MAIL FROM 命令後發送 RCPT TO 命令。 此命令指示 SMTP 郵件服務器將郵件發送給指定的收件人。

 RCPT TO:<[電子郵件保護]> 

DATA 命令是開始消息正文之前運行的最後一個命令。 此命令通知 SMTP 郵件服務器,郵件的其餘部分將作為郵件正文傳輸。

 數據

輸入主題:<SUBJECT> ,然後按 Return。

輸入 < Test message > 並按 Return。

當消息完成後,我們必須通知 SMTP 服務器我們已經完成了它並且我們希望 SMTP 郵件服務器接受它。 這是通過在單行上放置一個句點來實現的。 如果在編寫消息時需要在一行中使用句點,請使用兩個句點,第一個轉義第二個。

.

將出現消息 OK,後跟一個 ID 代碼。 您的消息已送達。

返回 Telnet 窗口,輸入 quit 以終止 SMTP 服務器連接,然後退出以終止 Telnet 會話。

 退出

結論

如果您完成了測試,您可以確定您的電子郵件服務器或您用來訪問它的地址和信息沒有任何問題。

如果 SMTP 服務器通知您原始電子郵件地址無效,則可能是您輸入錯誤。 您的電子郵件帳戶也可能有問題,這就是您無法在新的電子郵件客戶端中使用它的原因。

希望在遠離新電子郵件客戶端的情況下通過 Telnet 測試 SMTP 服務器將幫助您縮小所有可能導致您遇到的任何電子郵件問題的原因。