队列中消息的过程

在 Exchange Server,可以使用 Exchange 工具箱中的队列查看器或 Exchange 命令行管理程序来管理队列中的消息。 有关队列中消息的详细信息,请参阅 消息属性

本主题介绍如何对队列中的消息执行以下过程:

  • 删除邮件:可以使用我们的未送达报告从队列中删除邮件,而不向发件人 (也称为 NDR、传递状态通知、DSN 或退回邮件) 。
  • 挂起邮件:暂停邮件时,会阻止邮件传递。 在你恢复消息之前,该消息不会离开队列。
  • 恢复邮件:可以恢复当前状态为“已挂起”的邮件。 恢复邮件之后,便可传递邮件。
  • 重定向邮件:可以从邮箱服务器上的所有传递队列中清空邮件,并将这些邮件传输到另一台邮箱服务器。

有关从队列导出消息的信息,请参阅 从队列导出消息

开始前,有必要了解什么?

  • 估计完成每个步骤时间:5 分钟

  • 若要查找并打开 Exchange 工具箱,请使用以下过程之一:

    • Windows 10:单击“启动>所有应用>Microsoft Exchange Server<版本>>Exchange 工具箱”。

    • Windows Server 2012 R2 或Windows 8.1:在“开始”屏幕上,单击左下角附近的向下箭头或从屏幕中间向上轻扫,打开“应用”视图。 Exchange 工具箱快捷方式位于名为 Microsoft Exchange Server Version> 的<组中。

    • Windows Server 2012:使用以下任一方法:

      • 在开始屏幕中,单击空白区域,并键入 Exchange Toolbox。
      • 在桌面或开始屏幕上,按 Windows 键 + Q。在“搜索”超级按钮中,键入 Exchange Toolbox。
      • 在桌面或“开始”屏幕上,将光标移到右上角或从屏幕的右边缘向左轻扫,以显示超级按钮。 单击“搜索”超级按钮,然后键入 Exchange Toolbox。

      当快捷方式出现在结果中时,则可以选择它。

  • 若要了解如何在本地 Exchange 组织中打开 Exchange 命令行管理程序,请参阅 Open the Exchange Management Shell

  • 有关在 Exchange 命令行管理程序中使用筛选器和标识值的详细信息,请参阅 在 Exchange 命令行管理程序中查找队列和消息

  • 你必须先获得权限,然后才能执行此过程或多个过程。 若要查看所需的权限,请参阅 邮件流权限主题中的"队列"条目。

  • 若要了解本主题中的过程可能适用的键盘快捷键,请参阅 Exchange 管理中心内的键盘快捷键

提示

是否有任何疑问? 请在 Exchange 论坛中寻求帮助。 请访问以下论坛:Exchange ServerExchange OnlineExchange Online Protection

删除队列中的邮件

注意

发送给多个收件人的邮件可能位于多个队列中。 若要通过一个操作从多个队列中删除邮件,需要使用筛选器。 有关详细信息,请参阅 队列中消息的属性消息筛选参数

使用队列查看器从队列中删除消息

  1. Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。

  2. 在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要将操作调整为针对单个队列执行,请单击“队列”选项卡,双击队列名,然后单击所显示的 Server\Queue 选项卡。

  3. Select one or more messages from the list, right-click, and then select Remove Messages (with NDR) or Remove Messages (without NDR). 此时会显示一个对话框,确认所选操作并显示“ 是否继续?”。 单击“是”

  4. 若要从特定队列中删除所有消息,请单击“ 队列 ”选项卡。选择队列,右键单击,然后选择 “使用 NDR) 删除消息 ( ”或“ 删除消息” (而不使用 NDR) 。 此时会显示一个对话框,确认所选操作并显示“ 是否继续?”。 单击“是”

    注意

    如果使用已筛选的列表,则显示的页可能不包含筛选器中的所有项目。 在这种情况下,将出现一个显示以下内容的提示: 此操作将影响此页上的所有项目。若要扩展此操作的作用域以包含此筛选器中的所有项目,请选中以下复选框,然后单击"确定"。

使用 Exchange 命令行管理程序删除邮件

若要删除邮件,请使用以下语法。

Remove-Message <-Identity MessageIdentity | -Filter "MessageFilter"> -WithNDR <$true | $false>

此示例删除队列中主题为"Win Big"的邮件且不发送 NDR。

Remove-Message -Filter "Subject -eq 'Win Big'" -WithNDR $false

此示例从名为 Mailbox01 的服务器上的“无法访问”队列中删除邮件 ID 为 3 的邮件,并发送 NDR。

Remove-Message -Identity Mailbox01\Unreachable\3 -WithNDR $true

有关详细信息,请参阅 Remove-Message

如何知道操作成功?

若要验证是否已成功从队列中删除消息,请使用以下过程之一:

  • 在队列查看器中,选择队列,或者创建筛选器以验证邮件不再存在。

  • 在 Exchange 命令行管理程序中,将 MessageFilter 替换为使用的筛选器,将 <QueueIdentity> 替换为队列的标识,并运行以下命令之一来验证消息不再存在:

    Get-Message -Filter "MessageFilter"
    

    Get-Message -Queue <QueueIdentity>
    

    有关详细信息,请参阅 Get-Message

挂起队列中的邮件

注意

  • 发送给多个收件人的邮件可能位于多个队列中。 若要通过一个操作挂起多个队列中的邮件,需要使用筛选器。 有关详细信息,请参阅 队列中消息的属性消息筛选参数

  • 如果挂起正在传输到下一跃点的邮件,则消息的传递将继续,并且消息状态将为 PendingSuspend。 如果传递失败,消息将重新进入队列,然后消息将被挂起。

使用队列查看器暂停消息

  1. Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。

  2. 在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要限制单个队列的视图,请单击“队列”选项卡,双击队列名称,再单击出现的“服务器\队列”选项卡。

  3. Select one or more messages, right-click, and then select Suspend.

使用 Exchange 命令行管理程序暂停邮件

若要挂起邮件,请使用以下语法:

Suspend-Message <-Identity MessageIdentity | -Filter "MessageFilter">

本示例挂起名为 Mailbox01 的服务器上的“无法访问”队列中邮件 ID 为 3 的邮件。

Suspend-Message -Identity Mailbox01\Unreachable\3

本示例挂起来自域 contoso.com 中任何发件人的本地服务器上所有队列中的所有消息。

Suspend-Message -Filter "FromAddress -like '*contoso.com'"

本示例在名为 Mailbox01 的服务器上挂起 contoso.com 传递队列中的所有邮件。

Get-Queue Mailbox01\contoso.com | Get-Message | Suspend-Message

此示例挂起本地服务器上所有队列中的所有消息。

Get-Queue | Get-Message | Suspend-Message

有关详细信息,请参阅 Suspend-Message

如何知道操作成功?

若要验证是否已成功挂起队列中的消息,请使用以下过程之一:

  • 在队列查看器中,选择队列,或者创建筛选器以验证邮件已挂起。

  • 在 Exchange 命令行管理程序中,将 MessageFilter 替换为使用的筛选器,将 <QueueIdentity> 替换为队列的标识,并运行以下命令之一来验证消息是否已挂起:

    Get-Message -Filter "MessageFilter"
    

    Get-Message -Queue <QueueIdentity>
    

    有关详细信息,请参阅 Get-Message

恢复队列中的邮件

注意

  • 只能恢复状态为“已挂起”的邮件。
  • 保存消息的队列的状态会影响消息的传递。 例如,如果在状态为“已挂起”的队列中恢复挂起的消息,则在恢复队列之前无法传递消息。 有关恢复队列的详细信息,请参阅 恢复队列

使用队列查看器恢复消息

  1. Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。

  2. 在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要将操作调整为针对单个队列执行,请单击“队列”选项卡,双击队列名,然后单击所显示的 Server\Queue 选项卡。

  3. Click Create Filter, and enter your filter expression as follows:

    1. Select Status from the message property drop-down list.
    2. Select Equals from the comparison operator drop-down list.
    3. Select Suspended from the value drop-down list.
  4. Click Apply Filter. All messages that have a status of Suspended are displayed.

  5. Select one or more messages from the list, right-click, and select Resume.

使用 Exchange 命令行管理程序恢复邮件

若要恢复邮件,请使用以下语法:

Resume-Message <-Identity MessageIdentity | -Filter "MessageFilter">

此示例恢复从 contoso.com 域中的任何发件人发送的所有邮件。

Resume-Message -Filter "FromAddress -like '*contoso.com'"

本示例恢复名为 Mailbox01 的服务器上的“无法访问”队列中邮件 ID 为 3 的邮件。

Resume-Message -Identity Mailbox01\Unreachable\3

如何知道操作成功?

若要验证是否已成功恢复队列中的消息,请使用以下过程之一:

  • 在队列查看器中,选择队列或创建筛选器以验证消息是否不再挂起。

  • 在 Exchange 命令行管理程序中,将 MessageFilter 替换为使用的筛选器,将 <QueueIdentity> 替换为队列的标识,并运行以下命令之一来验证消息是否不再挂起:

    Get-Message -Filter "MessageFilter"
    

    Get-Message -Queue <QueueIdentity>
    

    有关详细信息,请参阅 Get-Message

如果在服务器上的任何队列中都找不到消息,则可能表示消息已成功传递到下一跃点。

重定向队列中的消息

重定向邮件会从源邮箱服务器上的传递队列中排出所有活动邮件,并将其路由到目标邮箱服务器。 消息将排队等待传递,并路由到下一跃点。

注意

  • 仅重定向活动消息。
  • 不会重定向有害消息队列中的影子队列和消息。
  • 在重定向邮件时,源邮箱服务器不接受新邮件。
  • 只能使用 Exchange 命令行管理程序重定向邮件。

使用 Exchange 命令行管理程序重定向邮件

若要重定向消息,请使用以下语法:

Redirect-Message -Server <ServerIdentity> -Target <ServerFQDN>

本示例将邮件从名为 Mailbox01 的服务器上的所有传递队列重定向到名为 Mailbox02.contoso.com 的服务器。

Redirect-Message -Server Mailbox01 -Target Mailbox02.contoso.com

有关详细信息,请参阅 Redirect-Message

如何知道操作成功?

若要验证是否已成功重定向队列中的消息,请使用以下过程之一:

  • 在队列查看器中,验证源服务器上传递队列上的 “消息计数 ”值是否为空或减少。

  • 在 Exchange 命令行管理程序中运行以下命令,验证源服务器上传递队列的 MessageCount 属性值是否减少或为空。

    Get-Queue