简介
本文档介绍如何对接收和传送邮件过程中的间歇性问题和中止连接进行故障排除。
先决条件
Cisco 建议您了解以下主题:
- 思科专用互联网交换(PIX)或自适应安全设备(ASA) 7.x版及更高版本
- 思科邮件安全设备(ESA)
背景信息
思科ESA电邮网关本身就是电邮防火墙。这样就不需要上游防火墙(例如Cisco PIX或ASA)来检查进出ESA的邮件流量。建议为任何安全设备主机地址在防火墙上禁用扩展简单邮件传输协议(ESMTP)应用检查功能。默认情况下,ESMTP协议检测对通过思科防火墙的所有连接启用。这意味着对通过TCP端口25在邮件网关之间发布的所有命令以及单个邮件报头进行分析,以严格遵循请求注解(RFC)规范,包括RFC的821、1123和1870。对于可能导致与ESA之间的传输发生问题的收件人数目和邮件大小,已定义默认值。此处列出了这些特定的配置默认值(取自思科命令查找工具)。
inspect esmtp命令包含以前由fixup smtp命令提供的功能,并且为某些ESMTP命令提供其他支持。ESMTP应用检测增加了对八个ESMTP命令的支持,包括AUTH、EHLO、ETRN、HELP、SAML、SEND、SOML和VRFY。除了支持七个RFC 821命令(DATA、HELO、MAIL、NOOP、QUIT、RCPT、RSET)外,安全设备还支持总共15个SMTP命令。不支持其他ESMTP命令,例如ATRN、STARTLS、ONEX、VERB、CHUNKING和专用扩展。不受支持的命令会转换为X,但被内部服务器拒绝。这将导致出现500 Command unknown: XXX等消息。不完整的命令会被丢弃。
inspect esmtp命令将服务器SMTP标识中的字符更改为星号,但“2”、“0”、“0”字符除外。回车键(CR)和换行符(LF)会被忽略。启用SMTP检测后,用于交互式SMTP的会话会等待有效命令,并且防火墙esmtp状态机会在未遵守以下规则的情况下保持会话的正确状态:
- SMTP命令的长度必须至少为四个字符。
- SMTP命令必须以回车符和换行符终止。
- SMTP命令必须等待响应,才能发出下一个回复。
SMTP服务器使用数字回复代码和可选的人工可读字符串来响应客户端请求。SMTP应用检查控制和减少用户可使用的命令,以及服务器返回的消息。SMTP检测执行以下三项主要任务:
- 将SMTP请求限制为七个基本SMTP命令和八个扩展命令。
- 监控SMTP命令-响应序列。
- 生成审计线索.替换邮件地址中嵌入的无效字符时,将生成审核记录108002。有关详细信息,请参阅RFC 821。
SMTP检测监控以下异常签名的命令和响应序列:
- 命令被截断。
- 不正确的命令终止(未与<CR><LR>一起终止)。
- 如果发现PCI Express (PIPE)签名的PHY接口作为MAIL from或RCPT to命令的参数,会话将关闭。用户无法配置它。
- SMTP服务器发生意外转换。
- 对于未知命令,安全设备会将数据包中的所有字符更改为X。在这种情况下,服务器将生成错误代码给客户端。由于数据包发生变化,必须重新计算或调整TCP校验和。
- TCP数据流编辑。
show service-policy inspect ESMTP的输出提供了默认检查值及其对应的操作。
Global policy:
Service-policy: global_policy
Class-map: inspection_default
Inspect: esmtp _default_esmtp_map, packet 104468, drop 0, reset-drop 0
mask-banner, count 639 obfuscate the SMTP banner greeting
match cmd line length gt 512 deny all SMTP commands (and close connection)
drop-connection log, packet 0
match cmd RCPT count gt 100 drop all messages (and connection) with more
than 100 recipients
drop-connection log, packet 0
match body line length gt 998 log all messages with lines > 998 chars
log, packet 0
match header line length gt 998 drop all messages (and connection)
with headers > 998 chars
drop-connection log, packet 41
match sender-address length gt 320 drop all messages (and connection) with
envelope sender > 320 bytes
drop-connection log, packet 0
match MIME filename length gt 255 drop all messages (and connection) with
MIME attachment filenames > 255 bytes
drop-connection log, packet 0
match ehlo-reply-parameter others obfuscate extended commands not explicitly
noted in the RFCs (such as STARTTLS)
mask, packet 2555
问题
有时,思科ESA无法正确发送或接收消息。思科ESA设备mail_logs中可以看到以下一个或多个消息:
- 消息已中止MID XXX
- 接收中断ICID21916丢失
- ICID 21916关闭
- 连接错误: DCID: XXX域:example.com IP: 10.1.2.3端口:25详细信息:[错误60]
接口操作超时:10.10.10.1原因:网络错误
解决方案
其中某些默认设置可能会影响传输层安全(TLS)加密邮件的传送、邮件列表活动和故障排除。更好的策略可能要求您利用防火墙检查未首先通过安全设备的所有剩余邮件流量,同时免除所有已通过的流量。此示例说明如何调整默认配置(如前所述),以免除单个安全主机地址的ESMTP应用检查。
您可以定义出入思科ESA内部地址的所有流量,以便在模块化策略框架(MPF)类映射中参考:
access-list ironport_esa_internal extended permit ip any 192.168.1.1
access-list ironport_esa_internal extended permit ip 192.168.1.1 any
这会创建一个新的类映射来专门匹配或选择要以不同方式处理的流量:
class-map ironport_esa
match address ironport_esa_internal
此部分链接新的思科类映射并禁用ESMTP协议检测功能:
policy-map global_policy
class ironport_esa
no inspect esmtp
另请注意,地址转换语句有助于控制到地址的传入连接和半开(初始)连接的数量。这对于对抗拒绝服务攻击(DoS)很有用,但可能会干扰传输速率。
用于跟踪NAT和STATIC命令参数的格式…… [tcp (max_conns)] [max_embryonic]。
此示例指定总共50个TCP连接和100次半开放或半开连接尝试的限制:
static (inside,outside) 1.1.1.1 192.168.1.1 netmask 255.255.255.255 tcp 50 100