目錄

簡介

必要條件

需求

採用元件

問題

解決方案

簡介

本文檔介紹排除通過ASA的SMTP和ESMTP流量的連線問題的最佳方法。

必要條件

需求

本文件沒有特定需求。

採用元件

本檔案中的資訊是根據Cisco 5500系列調適型安全裝置(ASA)。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路正在作用，請確保您已瞭解任何指令可能造成的影響。

問題

當您在ASA上通過Telnet測試電子郵件伺服器並啟用ESMTP或SMTP檢查時，某些命令(如HELO或EHLO)將返回指示命令無法理解的550錯誤。禁用ESMTP或SMTP檢查時，將瞭解命令。

解決方案

ESMTP和SMTP檢測強制實施只允許某些命令通過ASA的策略。如果傳送的郵件命令是不允許的，則將其替換為Xs，這會導致該命令對客戶端和伺服器無效。

Cisco ASA系列命令參考的inspect esmtp部分中列出了通常允許的命令。通常允許HELO和EHLO;但是，是否識別命令取決於測試的方法。

例如，Telnet會線上路上以不同的封包分別傳送每個字元，但實際的電子郵件使用者端和伺服器卻會在一個封包中傳送整個指令。如果使用Telnet並鍵入H,Telnet客戶端將向電子郵件伺服器傳送H。由於ESMTP和SMTP檢測不能將H識別為有效命令，因此ASA用X替換H並傳遞它。如果繼續鍵入ELO，將分別傳送每個字元，ASA會將每個字元轉換為X。伺服器將以XXXX形式接收最終命令，並如預期一樣輸出錯誤。

如果使用Telnet測試連通性，則必須將應用程式配置為在一個資料包中傳送整個命令。（Microsoft Windows Telnet程式可以一次傳送一行，而不是逐個字元傳送。） 按CTRL+]退出Telnet會話，然後鍵入send HELO。此操作將傳送整個命令而不是單個字元。

或者，您可以使用其他程式，例如Netcat。Netcat逐行傳送命令，是測試網路套接字和資料傳輸的強大工具。但是，最佳解決方案是使用實際的電子郵件程式測試連線，並捕獲ASA上的流量以進行進一步測試。