队列中消息的过程
在 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 Server、Exchange Online 或 Exchange Online Protection。
删除队列中的邮件
注意:
发送给多个收件人的邮件可能位于多个队列中。 若要通过一个操作从多个队列中删除邮件,需要使用筛选器。 有关详细信息,请参阅 队列中消息的属性 和 消息筛选参数。
使用队列查看器从队列中删除消息
在 Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。
在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要将操作调整为针对单个队列执行,请单击“队列”选项卡,双击队列名,然后单击所显示的 Server\Queue 选项卡。
Select one or more messages from the list, right-click, and then select Remove Messages (with NDR) or Remove Messages (without NDR). 此时会显示一个对话框,确认所选操作并显示“ 是否继续?”。 单击“是”。
若要从特定队列中删除所有消息,请单击“ 队列 ”选项卡。选择队列,右键单击,然后选择“ 使用 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。 如果传递失败,消息将重新进入队列,然后消息将被挂起。
使用队列查看器暂停消息
在 Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。
在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要限制单个队列的视图,请单击“队列”选项卡,双击队列名称,再单击出现的“服务器\队列”选项卡。
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。
恢复队列中的邮件
注意:
- 只能恢复状态为“已挂起”的邮件。
- 保存消息的队列的状态会影响消息的传递。 例如,如果在状态为“已挂起”的队列中恢复挂起的消息,则在恢复队列之前无法传递消息。 有关恢复队列的详细信息,请参阅 恢复队列。
使用队列查看器恢复消息
在 Exchange 工具箱的“ 邮件流工具 ”部分中,双击“ 队列查看器 ”以在新窗口中打开该工具。
在“队列查看器”中,单击“ 消息 ”选项卡。将显示连接到的服务器上的所有邮件的列表。 若要将操作调整为针对单个队列执行,请单击“队列”选项卡,双击队列名,然后单击所显示的 Server\Queue 选项卡。
Click Create Filter, and enter your filter expression as follows:
- Select Status from the message property drop-down list.
- Select Equals from the comparison operator drop-down list.
- Select Suspended from the value drop-down list.
Click Apply Filter. All messages that have a status of Suspended are displayed.
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