原始 KB 编号: 320027
本文讨论如果 Exchange 服务器位于 Cisco PIX 或 Cisco ASA 防火墙设备后面,并且 PIX 或 ASA 防火墙已启用 Mailguard 功能,则无法发送或接收电子邮件的行为的原因。 它提供关闭 PIX 或 ASA 防火墙的 Mailguard 功能的步骤。
重要
本文包含的信息介绍如何帮助降低安全设置或关闭计算机上的安全功能。 可以进行这些更改来解决特定问题。 在进行这些更改之前,建议评估与在特定环境中实现此解决方法相关的风险。 如果实现此解决方法,请执行任何适当的附加步骤来帮助保护计算机。
症状
可能会遇到以下一个或多个行为:
- 无法接收基于 Internet 的电子邮件。
- 不能发送带有附件的电子邮件。
- 无法在端口 25 上与 Microsoft Exchange 服务器建立 telnet 会话。
- 将 EHLO 命令发送到 Exchange 服务器时,将收到 无法识别的命令 或 正常 响应。
- 不能在特定域上发送或接收邮件。
- Post Office 协议版本 3 (POP3) 身份验证时出现问题 - 从本地服务器拒绝了 550 5.7.1 中继。
- (发送重复电子邮件时出现问题,有时) 五到六次。
- 收到重复的传入简单邮件传输协议 (SMTP) 邮件。
- 尝试发送电子邮件时,Microsoft Outlook 客户端或 Microsoft Outlook Express 客户端会报告0x800CCC79错误。
- 二进制 mime (8bitmime) 存在问题。 收到未送达报告中的文本 (NDR) : 远程主机不支持 554 5.6.1 正文类型。
- 附件缺失或乱码存在问题。
- 当 Cisco PIX 或 Cisco ASA 防火墙设备在路由组之间时,路由组之间的链接状态路由存在问题。
- 不会传递 X-LINK2STATE 谓词。
- 通过路由组连接器在服务器之间存在身份验证问题。
原因
在以下情况下,可能会出现此问题:
- Exchange 服务器位于 Cisco PIX 或 Cisco ASA 防火墙设备后面。
-且-
- PIX 或 ASA 防火墙已打开 Mailguard 功能。
- 防火墙会剥离) 扩展简单邮件传输协议 [ESMTP] 命令 (身份验证和身份验证登录命令,这使系统认为你正在从非本地域中继。
若要确定 Mailguard 是否在 Cisco PIX 或 Cisco ASA 防火墙上运行,请通过 Telnet 访问 MX 记录的 IP 地址,然后验证响应是否如下所示:
220*******************************************************0*2******0***********************
2002*******2***0*00
Old versions of PIX or ASA:
220 SMTP/cmap_________________________________________ read
注意
如果 PIX 或 ASA 防火墙后面有 ESMTP 服务器,则可能必须关闭 Mailguard 功能,以允许邮件正确流动。 此外,建立到端口 25 的 Telnet 会话可能无法使用 fixup protocol smtp
命令,尤其是对于使用字符模式的 Telnet 客户端。
除了 Cisco PIX 或 Cisco ASA 防火墙外,还有一些具有 SMTP 代理功能的防火墙产品可能会产生本文前面提到的问题。 下面是其产品具有 SMTP 代理功能的防火墙制造商列表:
- 守望员消防箱
- 检查站
- 猛禽
有关其他信息,请访问“更多信息”部分中列出的网站。
解决方案
警告
此解决方法可能使计算机或网络更容易受到恶意用户或病毒等恶意软件的攻击。 我们不建议使用此解决方法,但会提供此信息,以便你可以自行决定实现此解决方法。 如果使用此解决方法,需自行承担风险。
注意
防火墙旨在帮助保护计算机免受恶意用户或恶意软件(例如使用未经请求的网络流量攻击计算机)的攻击。 在禁用防火墙之前,必须断开计算机与所有网络(包括 Internet)的连接。
若要解决此问题,请关闭 PIX 或 ASA 防火墙的 Mailguard 功能。
警告
如果 PIX 或 ASA 后面有 ESMTP 服务器,则可能必须关闭 Mailguard 功能,使邮件能够正确流动。 如果将 Telnet 命令用于端口 25,则可能不适用于 fixup 协议 smtp 命令,而对于执行字符模式的 Telnet 客户端,这更明显。
若要关闭 PIX 或 ASA 防火墙的 Mailguard 功能,请执行以下操作:
- 通过建立 telnet 会话或使用控制台登录到 PIX 或 ASA 防火墙。
- 键入 enable,然后按 Enter。
- 当系统提示输入密码时,键入密码,然后按 Enter。
- 键入 “配置终端”,然后按 Enter。
- 键入 “无修复协议 smtp 25”,然后按 Enter。
- 键入 写入内存,然后按 Enter。
- 重启或重新加载 PIX 或 ASA 防火墙。
更多信息
PIX 或 ASA Software Mailguard 功能 (早期版本中也称为 Mailhost,) 筛选简单邮件传输协议 (SMTP) 流量。 对于 PIX 或 ASA Software 版本 4.0 和 4.1, mailhost
命令用于配置 Mailguard。 在 PIX 或 ASA Software 版本 4.2 及更高版本中, fixup protocol smtp 25
使用 命令。
注意
还必须为邮件服务器提供静态 IP 地址分配和管道语句。
配置 Mailguard 后,Mailguard 仅允许在 RFC) 821 第 4.5.1 节 (注释请求中所述的七个 SMTP 最低要求命令。 这七个必需的命令如下所示:
- 直升机
- 邮件
- RCPT
- 数据
- RSET
- NOOP
- 退出
PIX 或 ASA 防火墙不会将 KILL 和 WIZ 等其他命令转发到邮件服务器。 早期版本的 PIX 或 ASA 防火墙会返回 正常 响应,甚至返回被阻止的命令。 这是为了防止攻击者知道命令已被阻止。
若要查看 RFC 821,请访问 RFC 网站: RFC 821 - 简单邮件传输协议。
拒绝所有其他命令,但 500 命令无法识别 响应。
在固件版本为 5.1 及更高版本的 Cisco PIX 和 ASA 防火墙上,命令 fixup protocol smtp
将 SMTP 横幅中的字符更改为星号,“2”、“0”、“0”字符除外。 忽略回车 (CR) 和换行 (LF) 字符。 在版本 4.4 中,SMTP 横幅中的所有字符都转换为星号。
测试 Mailguard 功能是否正确
由于 Mailguard 功能可能会对所有命令返回 正常 响应,因此可能很难确定它是否处于活动状态。 若要确定 Mailguard 功能是否阻止无效的命令,请执行以下步骤。
注意
以下步骤基于 PIX 或 ASA 软件版本 4.0 和 4.1。 若要测试 4.2 版及更高版本 () 的 PIX 或 ASA 软件的更高版本,请使用 fixup protocol smtp 25
命令以及邮件服务器的相应 静态 和 管道 语句。
在关闭 Mailguard 的情况下
在 PIX 或 ASA 防火墙上,使用静态和管道命令允许 TCP 端口 25 上的所有主机 (SMPT) 。
在端口 25 上的 PIX 或 ASA 防火墙的外部接口上建立 telnet 会话。
键入无效的命令,然后按 Enter。 例如,键入 goodmorning,然后按 Enter。
收到响应: 500 命令无法识别。
启用 Mailguard
使用 mailhost 或
fixup protocol smtp 25
命令在 PIX 或 ASA 防火墙的外部接口上打开 Mailguard 功能。在端口 25 上的 PIX 或 ASA 防火墙的外部接口上建立 telnet 会话。
键入无效的命令,然后按 Enter。 例如,键入 goodmorning,然后按 Enter。
收到响应: “确定”。
当 Mailguard 功能处于关闭状态时,邮件服务器会响应无效的命令,并显示 500 Command 无法识别 的邮件。 但是,当启用 Mailguard 功能时,PIX 或 ASA 防火墙会截获无效的命令,因为防火墙仅传递所需的最小 7 个 SMTP 命令。 无论命令是否有效,PIX 或 ASA 防火墙都以 OK 响应。
默认情况下,PIX 或 ASA 防火墙会阻止所有外部连接访问主机内部。 使用静态、access-list 和 access-group 命令语句允许外部访问。
有关具有 SMTP 代理功能的防火墙产品的详细信息,请访问以下网站:
第三方信息免责声明
本文中提到的第三方产品由 Microsoft 以外的其他公司提供。 Microsoft 不对这些产品的性能或可靠性提供任何明示或暗示性担保。
第三方联系人免责声明
Microsoft 提供了第三方联系信息,以便你寻求技术支持。 该联系信息如有更改,恕不另行通知。 Microsoft 不保证此第三方联系信息的准确性。