目录

简介

先决条件

要求

使用的组件

问题

解决方案

简介

本文档介绍通过ASA排除SMTP和ESMTP流量连接问题的最佳方法。

先决条件

要求

本文档没有任何特定的要求。

使用的组件

本文档中的信息基于Cisco 5500系列自适应安全设备(ASA)。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您使用的是真实网络，请确保您已经了解所有命令的潜在影响。

问题

在ASA上通过Telnet测试电子邮件服务器并启用ESMTP或SMTP检测时，某些命令(如HELO或EHLO)会返回550错误，表示不理解该命令。禁用ESMTP或SMTP检测时，将理解这些命令。

解决方案

ESMTP和SMTP检查强制实施仅允许通过ASA的特定命令的策略。如果发送的邮件命令不允许，则替换为X，这会使命令对客户端和服务器无效。

通常允许的命令列在《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上的流量以进行进一步测试。