排除邮件流和 SMTP 故障

 

上一次修改主题: 2005-05-24

即便在 Microsoft® Exchange Server 组织中成功地配置了简单邮件传输协议 (SMTP),并采用了每一种必要的措施来对其加以保护,也可能会遇到邮件流问题。本主题讨论可能遇到的许多常见问题以及有助于解决这些问题的方法。

具体地说,您将了解如何:

  • 使用 Telnet
  • 使用 SMTP 和 X.400 队列
  • 使用邮件跟踪中心
  • 使用事件查看器
  • 对 SMTP 配置诊断日志记录

但是,在考虑本主题推荐的故障排除方法之前,应首先确保 Exchange Server 的配置正确(能够发送和接收邮件)。下面的列表简单地概述了使入站和出站邮件正确流动所需满足的要求。

要使传入 Internet 邮件正确流动:

  • 必须正确配置收件人策略。
  • 接受 Internet 邮件的 SMTP 虚拟服务器必须配置为使用 25 端口,并且允许匿名连接。
  • Internet DNS 服务器上必须存在与您的域对应的邮件交换器 (MX) 资源记录,并且该 MX 记录必须指向您邮件服务器的外部或 Internet 域。
  • 您的 Internet 邮件服务器对于 Internet 上的远程服务器而言必须是可访问的。

要使传出 Internet 邮件正确流动:

  • 发送 Internet 邮件的 SMTP 虚拟服务器必须配置为使用 25 端口。
  • 如果使用了 SMTP 连接器,则至少应有一个连接器包含地址空间 *(指定所有外部域)。
  • 您的 Exchange 服务器必须能够解析外部 DNS 名称。可以通过下列途径解析外部 DNS 名称:
    • 使用将邮件转发到外部 DNS 服务器的内部 DNS 服务器。
    • 配置 SMTP 虚拟服务器使用特定的外部 DNS 服务器。
    • 将邮件路由到执行 DNS 解析的智能主机。

有关如何配置 Exchange Server 发送和接收电子邮件的详细信息,请参阅验证 DNS 设计和配置

有关如何使用 Telnet 测试 SMTP 的详细信息,请参阅以下主题:

使用 SMTP 和 X.400 队列

SMTP 在内部和向外部传递邮件时均使用 SMTP 队列。Exchange Server 5.5 服务器、MAPI 客户端(如 Microsoft Office Outlook®)以及其他邮件连接器(如 Microsoft Exchange - Lotus Notes 连接器和 Microsoft Exchange - Novell Groupwise 连接器)均使用 X.400 队列向/从 Exchange Server 发送/接收邮件。下面的部分说明了如何使用 SMTP 和 X.400 队列来排除邮件流故障。

了解 SMTP 队列

在邮件分类和传递过程中,高级排队引擎通过 SMTP 虚拟服务器的 SMTP 队列发送所有邮件。如果在此过程中的任意一个点上邮件传递出现问题,邮件将留在出现问题时所在的队列中。

使用 SMTP 队列可以找到邮件流出现问题的可能原因。如果队列处于“重试”状态,应检查队列的属性以确定原因。例如,如果队列属性显示类似“发生 SMTP 错误”这样的消息,应检查服务器的事件日志以找到任何 SMTP 错误。如果日志中没有事件,则应提高 SMTP 协议的日志记录级别。有关如何提高 SMTP 协议日志记录级别的详细信息,请参阅如何在事件查看器中查看应用程序日志如何修改 MSExchangeTransport 的日志记录设置

下表列出了 SMTP 队列,包括队列描述和每个队列中邮件堆积的故障排除信息。

SMTP 队列的描述以及相关的故障排除信息

SMTP 队列 描述 故障排除

[本地域名](本地传递)

包含在 Exchange 服务器上排队等待本地传递(目标为 Exchange 邮箱或公用文件夹存储)的邮件。

如果 Exchange 服务器不接受本地传递的邮件,那么邮件可能在此队列中堆积。速度很慢或零星的邮件传递可能意味着邮件传递出现循环或者存在性能问题。

此队列受 Exchange 存储的影响。请按照如何修改 MSExchangeTransport 的日志记录设置中的说明提高 Exchange 存储的诊断日志记录级别。

等待目录查找的邮件

包含其收件人尚未在 Microsoft Active Directory® 目录服务中解析的邮件。展开通讯组列表时也会在此处存放邮件。

通常,邮件在此队列中堆积,因为高级排队引擎无法对邮件进行分类。高级排队引擎可能无法访问全局编录服务器和收件人信息,或者全局编录服务器不可访问或执行速度很慢。此外,下列原因也可能导致邮件堆积:

  • Active Directory 不可用(因为分类程序使用 Active Directory 对邮件进行分类)。
  • Active Directory 可能过载(如果分类前队列中有许多邮件在排队)。
  • 转换出现故障。分类程序还处理内容转换。
  • 邮件分类程序找不到邮箱存储。
  • 如果重新安装或删除过 SMTP,则可能使下列 IIS 元数据库项无效:/smtpsvc/DsUseCat 和 /smtpsvc/vsi#/DsUseCat。确定是否重新安装或删除过 SMTP。

分类程序影响此队列。请按照如何修改 MSExchangeTransport 的日志记录设置中的说明提高分类程序的诊断日志记录级别。

等待路由的邮件

存放邮件,直到确定其下一个目标服务器,然后将其移动到各自的链路队列中。

如果 Exchange Server 路由存在问题,邮件将在此队列中堆积。邮件路由可能已备份。请按照如何修改 MSExchangeTransport 的日志记录设置中的说明提高路由的诊断日志记录级别。

远程传递

[连接器名|

服务器名|远程域]

存放要远程传递的邮件。与远程传递目标(可能是连接器、服务器或域)匹配的队列的名称。

如果邮件在此队列中堆积,必须首先识别队列的状态。如果队列处于“重试”状态,请检查队列属性以确定它处于该状态的原因。对于 DNS 问题,应使用 Nslookup 和 telnet 来解决。如果主机不可访问,应使用 telnet 来确保远程服务器作出响应。

当前无法到达最终目标

无法到达这些邮件的最终目标服务器。例如,Exchange 无法确定最终目标的网络路径。

如果不存在传递路由,邮件可能在此队列中堆积。此外,任何时候,只要连接器或远程传递队列不可用,或者在一段时间内处于“重试”状态,并且不存在到达连接器或远程目标的备用路由,新邮件将在此处排队。这使管理员可以解决问题或定义备用路由。要使新邮件流动到其远程目标队列,从而强制建立连接并获得网络监视 (Netmon) 跟踪,应重新启动 SMTP 虚拟服务器。

预提交

存放已被 SMTP 服务确认并接受的邮件。这些邮件的处理尚未开始。

邮件堆积通常意味着存在性能问题。偶尔的性能高峰可能导致邮件断断续续地出现在此队列中。

暂缓提交的 DSN 邮件

包含 Exchange 准备传递的传递状态通知(也称未送达报告)。

注意   下列操作对于此队列不可用:

  • 删除所有邮件(不发送 NDR)
  • 删除所有邮件(发送 NDR)

如果 Microsoft Exchange Information Store 服务不可用或未运行,或者 IMAIL Exchange 存储组件(执行邮件转换的组件)存在问题,则邮件可能会在此队列中堆积。

查看事件日志,可了解 Microsoft Exchange Information Store 服务可能存在的错误。

重试已失败邮件的队列

其中包含的邮件是在某类队列中提交失败的邮件,提交失败通常发生在采取其他任何处理之前。默认情况下,将在 60 分钟后重新处理此队列中的邮件。

邮件失败的可能原因有:

  • 邮件已被破坏。
  • 第三方程序或事件接收器可能影响了邮件排队或保真度。
  • 系统资源不足可能导致系统响应速度很慢,或者导致其他性能问题。重新启动 IIS 可能有助于临时改善资源状况,但是应确定问题的根源。

正在排队等待稍后传递的邮件

包含正在排队以等待稍后传递的邮件,其中包括旧版 Outlook 发送的邮件。(可以在 Outlook 客户端计算机上设置此选项。)

早期的 Outlook 版本依靠邮件传输代理 (MTA) 来传递邮件。现在则由 SMTP(而不是 MTA)来处理邮件传递。因此,旧版 Outlook 发送的邮件对待推迟传递的方式不同。

这些邮件将保留在此队列中,直到到达预定的传递时间。

发生邮件堆积的可能原因有:

  • 如果在移动用户的邮箱时向该邮箱发送了邮件,则邮件可能会在该队列中排队。
  • 用户还没有邮箱,并且没有与该用户关联的主帐户安全标识符 (SID)。有关详细信息,请参阅 Microsoft 知识库中编号为 316047 的文章:“XADM: Addressing Problems That Are Created When You Enable ADC-Generated Accounts”。
  • 邮件可能已损坏,或者收件人可能无效。
  • 要确定邮件是否已损坏,请检查其属性。如果邮件不可访问,则可能已损坏。还可以检查收件人是否有效。

有关排除邮件流和 SMTP 故障的详细信息,请参阅下列主题: