Exchange Server中邮件流规则的过程

邮件流规则(也称为传输规则)识别通过 Exchange 组织传递的邮件并对其进行操作。 有关邮件流规则的详细信息,请参阅 Exchange Server 中的邮件流规则

在邮箱服务器上,可以在 Exchange 管理中心 (EAC) 和 Exchange 命令行管理程序 中管理邮件流规则。 在边缘传输服务器上,只能使用 Exchange 命令行管理程序。

提示

验证规则是否按预期方式工作。 确保全面测试每个规则以及规则之间的交互。

在开始之前,您需要知道什么?

提示

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

创建邮件流规则

使用 EAC 创建邮件流规则

借助 EAC,可以通过使用模板(条件和操作的已筛选列表)、复制现有规则,或从头开始创建规则来创建邮件流规则。

  1. 在 EAC 中,转到 “邮件流>规则”,然后选择以下选项之一:

    • 若要从模板创建规则,请单击“ 添加 ” (“添加”图标。) 并选择模板, (“ 创建新规则 ”) 以外的值。

    • 若要复制规则,请选择规则,然后选择 “复制 (复制”图标。) 。 注意,复制规则选项仅适用于 EAC。

    • 若要从头开始创建新规则, 请添加 (“添加”图标。) ,然后选择“ 创建新规则”。

  2. 在打开的" 新规则"窗口中,配置以下设置:

    可选属性:

    • 使用严重级别审核此规则:对于 DLP 策略,此设置指定规则匹配数据在 DLP 策略检测报告中的显示方式。 有关详细信息, 请参阅 DLP 策略检测报告。 如果清除该复选框或选中“ 未指定”值,规则匹配项将不会显示在规则报告中。

    • 选择此规则的模式:可以使用两种测试模式之一来测试规则,而不会影响邮件流。 当满足条件时,两种测试模式都可以将某个条目添加到邮件跟踪日志。 选择以下值之一:

    • 强制:这会打开规则,并立即开始处理消息。 将执行有关此规则的所有操作。 此值为默认值。

    • 使用策略提示进行测试:这将打开规则,并且将发送任何策略提示操作 (发送 策略提示) 通知发件人,但不会执行与邮件传递相关的操作。 需开启 DLP 才能使用此模式。 要了解详细信息,请参阅策略提示

    • 在没有策略提示的情况下进行测试:对于 DLP 策略,将仅强制实施 生成事件报告并将其发送到 操作。 不执行与消息传递相关的操作。

  3. 可以单击" 保存"来创建规则,也可以单击" 更多选项"配置以下其他设置:

    • 要添加更多条件,请单击“添加条件”。 如果有多个条件,可以通过单击“ 删除 X”来删除条件。请注意,单击“ 更多选项”后,有更多条件可用。

    • 要添加更多操作,请单击“添加操作”。 如果有多个操作,可以通过单击“ 删除 X”删除操作。请注意,单击“ 更多选项”后,有更多操作可用。

    • 要为此规则添加例外,请单击" 添加例外",然后使用" 下面情况除外"下拉列表选择例外。 可通过单击" 删除 X"删除例外。

    • 在以下日期激活此规则:如果希望规则在特定日期后生效,请指定开始日期。 请注意,规则仍在该日期之前启用,但不会得到处理。

    • 在以下日期停用此规则:如果希望规则在特定日期停止处理邮件,请指定结束日期。 请注意,此规则在该日期之后仍启用,但不会得到处理。

    • 停止处理更多规则:选中此复选框可避免在此规则处理邮件后应用其他规则。

    • 如果规则处理未完成,则延迟消息:选中此复选框可重新提交邮件进行处理。 默认情况下,此规则将被忽略,系统将继续正常传递邮件。

    • 匹配邮件中的发件人地址:对于检查发件人地址的条件和例外,可以指定规则查找发件人地址的位置:在邮件头 (默认) 、邮件信封或邮件头和信封。 有关详细信息,请参阅 发件人.

    • 注释:为规则指定描述性注释。

    完成后,单击“保存”。

使用 Exchange 命令行管理程序 创建邮件流规则

有两种可在 Exchange 命令行管理程序 中配置新邮件流规则的设置在 EAC 中不适用(直到完成创建的规则):

  • 创建新规则作为禁用 (已启用$false)

  • 设置规则的优先级 (优先级<编号>) 。

要在 Exchange 命令行管理程序 中创建邮件流规则,请使用以下语法:

New-TransportRule -Name <RuleName> [<Conditions>] [<Exceptions>] <Actions> [<Properties>]

此示例将创建具有下列设置的新规则:

  • 名称:将来自 Internet 的消息标记为 Sales DG。

  • 条件

    • 来自外部发件人的邮件。

    • 发送到名为销售部门的通讯组的邮件。

  • 操作:在邮件的 “主题” 字段前面添加值 "External message to Sales DG: "。 末尾的冒号和空格有助于将添加的文本与原始值区分开来。

New-TransportRule -Name "Mark messages from the Internet to Sales DG" -FromScope NotInOrganization -SentTo "Sales Department" -PrependSubject "External message to Sales DG: "

有关语法和参数的详细信息,请参阅 New-TransportRule

注意:此示例中的条件和操作仅用于演示。 查看可用邮件流规则条件、例外和操作来确定哪个满足你的需求。

您如何知道这有效?

要检查是否成功创建了邮件流规则,请使用以下过程之一:

  • 在 EAC 中,转到 “邮件流>规则”,并验证你创建的规则是否在列表中。

  • 在 Exchange 命令行管理程序中,使用以下任一过程:

    • 运行下列命令以查看规则列表中的新规则:
    Get-TransportRule
    
    • RuleName> 替换为<规则的名称,并运行以下命令以查看规则的详细信息:
    Get-TransportRule -Identity "<RuleName>" | Format-List
    

查看邮件流规则

在邮箱服务器上创建的邮件流规则存储在 Active Directory 中,因此,在邮箱服务器上查看这些规则时,可以查看组织中的所有规则。 使用 Exchange 命令行管理程序 查看边缘传输服务器上的邮件流规则时,可以看到存储在本地服务器上的规则。

使用 EAC 查看邮件流规则

  1. 在 EAC 中,转到 “邮件流>规则”。

  2. 选择规则时,有关规则的信息将显示在细节窗格中。 若要查看有关规则的详细信息,请单击 “编辑” (“编辑”图标。) 。

    在 EAC 中,转到“邮件流 > 规则”,然后选择一个规则。

    在 EAC 中, Version 属性仅在细节窗格中可见。 此属性指示规则与早期版本的 Exchange (14 的兼容性。n.n.n 为 Exchange 2010,15.0。n.n 是 Exchange 2013) 。

使用 Exchange 命令行管理程序查看邮件流规则

要返回所有邮件流规则的摘要列表,请运行以下命令:

Get-TransportRule

要返回有关特定规则的详细信息,请使用以下语法:

Get-TransportRule -Identity "<RuleName>" | Format-List [<Specific properties to view>]

下面的示例将返回名为"Sender is a member of marketing"的规则的所有属性值:

Get-TransportRule -Identity "Sender is a member of marketing" | Format-List

下面的示例仅返回同一规则的指定属性。

Get-TransportRule -Identity "Sender is a member of marketing" | Format-List Name,State,Mode,Priority,Comments,Conditions,Exceptions,RuleVersion

有关语法和参数的详细信息,请参阅 Get-TransportRule

使用 Exchange 命令行管理程序查看邮件流规则的可用条件和例外(谓词)

邮件流规则中的条件和例外统称为 谓词,因为针对每个条件,都存在使用完全相同的设置和语法的相应例外。 唯一的区别是:条件指定要包含的邮件,而例外指定要排除的邮件。 只能查看 Exchange 命令行管理程序中条件和例外的列表。

要查看邮件流规则中提供的条件和例外,请运行以下命令:

Get-TransportRulePredicate

有关语法和参数的详细信息,请参阅 Get-TransportRulePredicate

注意

  • 不能将例外与条件区分开来。

  • 边缘传输服务器上的可用谓词是邮箱服务器上可用谓词的一小部分。 有关详细信息,请参阅 Exchange Server 中的邮件流规则条件和异常(谓词)

  • 一些谓词名称不同于 New-TransportRuleSet-TransportRule cmdlet 上的相应条件和例外参数名称。 此外,某些谓词需要多个参数。

使用 Exchange 命令行管理程序查看邮件流规则的可用操作

只能查看 Exchange 命令行管理程序中的操作列表。

要查看邮件流规则中的可用操作,请运行以下命令:

Get-TransportRuleAction

有关语法和参数的详细信息,请参阅 Get-TransportRuleAction

注意

  • 邮箱服务器上可用的一小部分操作也可在边缘传输服务器上使用,但某些操作只在边缘传输服务器上可用。 有关详细信息,请参阅 Exchange Server 中的邮件流规则操作

  • 一些操作名称不同于 New-TransportRuleSet-TransportRule cmdlet 上的相应操作参数名称。 此外,某些操作需要多个参数。

修改邮件流规则

使用 EAC 修改邮件流规则

在 EAC 中修改邮件流规则时,其他设置均不可用。 这些设置与创建规则时可用的设置相同:

  1. 在 EAC 中,转到 “邮件流>规则”。

  2. 选择该规则,然后单击 “编辑” (“编辑”图标。) 。 注意,该规则的属性会完全展开(没有" 更多选项"链接可用)。 有关规则属性的详细信息,请参阅本主题中的使用 EAC 创建邮件流规则部分。

使用 Exchange 命令行管理程序修改邮件流规则

在 Exchange 命令行管理程序中修改邮件流规则时,不能禁用或启用该规则, (Set-TransportRule cmdlet) 上没有 Enabled 参数。 相反,可用使用本主题后面所介绍的 Disable-TransportRuleEnable-TransportRule cmdlet。

要在 Exchange 命令行管理程序中修改邮件流规则,请使用以下语法:

Set-MailFlowRule -Identity "<RuleName>" [<Conditions>] [<Exceptions>] [<Actions>] [<Properties>]

此示例对名为"Sender is a member of marketing"的规则添加了例外,以使该规则不应用于名为 Kelly Rollin 的用户发送的邮件:

Set-TransportRule -Identity "Sender is a member of marketing" -ExceptIfFrom "Kelly Rollin"

有关语法和参数的详细信息,请参阅 Set-TransportRule

如何知道操作成功?

要检查是否成功修改了邮件流规则,请使用以下过程之一:

  • 在 EAC 中,转到 “邮件流>规则”,选择该规则,并在详细信息窗格中查看信息。 若要查看更多设置,请单击 “编辑” (“编辑”图标。) 。

  • 在 Exchange 命令行管理程序中,将 RuleName> 替换为<规则的名称,并运行以下命令:

    Get-TransportRule -Identity "<RuleName>" | Format-List
    

设置邮件流规则的优先级

默认情况下,会根据创建邮件流规则时的顺序确定它们优先级(较新规则的优先级低于较早规则的优先级)。 较低的优先级编号指示规则具有较高优先级,并按照优先级顺序处理这些规则(先处理具有较高优先级的规则,然后再处理具有较低优先级的规则)。 不存在两个规则具有相同优先级的情况。

注意

  • 通过在规则中包含 停止处理更多规则 (StopRuleProcessing$true) 操作,可以阻止后续低优先级规则对邮件进行操作。

  • 在 EAC 中,只能在创建规则后更改相应规则的优先级。 在 Exchange 命令行管理程序 中,可在创建规则时替代默认优先级(这会影响现有规则的优先级)。

使用 EAC 设置邮件流规则的优先级

在 EAC 中,规则按它们所显示的顺序进行处理(第一个规则优先级值为 0)。 若要更改规则的优先级,请在列表中上下移动规则, (还可以通过在 EAC) 中编辑规则来直接修改 优先级 编号。

  1. 在 EAC 中,转到 “邮件流>规则”。

  2. 选择一个规则,然后单击“ 上移 (向上键图标”。) 或 下移 (向下箭头图标) 在列表中向上或向下移动规则。

使用 Exchange 命令行管理程序设置邮件流规则的优先级

可以设置的规则最高优先级值是 0。 可以设置的最小优先级值取决于规则的数量。 例如,如果有五个规则,则可以使用的优先级值为 0 到 4。 更改现有规则的优先级可对其他规则产生级联效应。 例如,假设有五个规则(优先级为 0 到 4),如果将某个规则的优先级更改为 2,则优先级为 2 的现有规则将更改为优先级 3,优先级为 3 的规则将更改为优先级 4。

要设置 Exchange 命令行管理程序中规则的优先级,请使用以下语法:

Set-TransportRule -Identity "<RuleName>" -Priority <Number>

本示例将名为“发件人是市场营销成员”的规则的优先级设置为 2。 优先级小于或等于 2 的所有现有规则的优先级都递减 1(即优先级数字都递增 1)。

Set-TransportRule -Identity "Sender is a member of marketing" -Priority 2

注意:要在创建规则时设置新规则的优先级,请使用 New-TransportRule cmdlet 上的 Priority 参数。

如何知道操作成功?

要检查是否成功修改了邮件流规则的优先级,请使用以下过程之一:

  • 在 EAC 中,转到 “邮件流>规则”,并验证列表中的规则 的“优先级 ”值。

  • 在 Exchange 命令行管理程序中,使用以下任一过程:

    • 运行下列命令以查看列表规则及其 Priority 值:
    Get-TransportRule
    
    • RuleName> 替换为<规则的名称,并运行以下命令:
    Get-TransportRule -Identity "<RuleName>" | Format-List Name,Priority
    

启用或禁用邮件流规则

禁用规则会阻止规则对邮件执行操作,但允许保留该规则的设置。

默认情况下,在 EAC 或 Exchange 命令行管理程序中创建邮件流规则时启用邮件流规则,但可以使用 Exchange 命令行管理程序创建禁用的规则 (将 Enabled 参数与值 $false) 。

使用 EAC 启用或禁用邮件流规则

  1. 在 EAC 中,转到 “邮件流>规则”。

  2. 从列表中选择该规则,然后配置下列设置之一:

    • 禁用规则:清除“ 打开 ”列中的复选框。

    • 启用规则:选中“ 打开 ”列中的复选框。

使用 Exchange 命令行管理程序启用或禁用邮件流规则

要在 Exchange 命令行管理程序中启用或禁用邮件流规则,请使用以下语法:

<Enable-TransportRule | Disable-TransportRule> -Identity "<RuleName>"

此示例禁用名为"Sender is a member of marketing"的邮件流规则。

Disable-TransportRule "Sender is a member of marketing"

此示例启用名为"Sender is a member of marketing"的邮件流规则。

Enable-TransportRule "Sender is a member of marketing"

有关语法和参数的详细信息,请参阅 Enable-TransportRuleDisable-TransportRule

如何知道操作成功?

要检查是否成功启用或禁用了邮件流规则,请使用以下过程之一:

  • 在 EAC 中,转到 “邮件流>规则”,并在规则列表中验证 “开 ”列中复选框的状态。

  • 在 Exchange 命令行管理程序中,使用以下任一过程:

    • 运行下列命令以查看列表规则及其 State 值:
    Get-TransportRule
    
    • RuleName> 替换为<规则的名称,并运行以下命令:
    Get-TransportRule -Identity "<RuleName>" | Format-List Name,State
    

删除邮件流规则

使用 EAC 删除邮件流规则

  1. 在 EAC 中,转到 “邮件流>规则”。

  2. 选择要从列表中删除的规则,然后单击“ 删除” (“删除”图标。) 。

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

要删除 Exchange 命令行管理程序中的邮件流规则,请使用以下语法:

Remove-TransportRule -Identity "<RuleName>"

此示例删除名为"Sender is a member of marketing"的邮件流规则:

Remove-TransportRule -Identity "Sender is a member of marketing"

有关语法和参数的详细信息,请参阅 Remove-TransportRule

如何知道操作成功?

要检查是否已成功删除邮件流规则,请使用以下过程之一:

  • 在 EAC 中,转到 “邮件流>规则”,并验证删除的规则是否不再在列表中。

  • 在 Exchange 命令行管理程序 中,运行以下命令以确认删除的规则是否已不再列出:

    Get-TransportRule
    

导入或导出邮件流规则集合

可以导入以前作为备份导出的邮件流规则集合,也可以导入从上一版本的 Exchange 中导出的规则。

注意

  • 无法导入或导出 EAC 中的邮件流规则集合。 只能使用 Exchange 命令行管理程序。

  • 如果邮件流规则集合是从 Exchange 2013 或更高版本导出的,则无法将邮件流规则集合导入 Exchange 2010。

使用 Exchange 命令行管理程序导出邮件流规则集合

  1. 运行以下命令:

    $File = Export-TransportRuleCollection
    
  2. 使用以下语法:

    [System.IO.File]::WriteAllBytes('<OutputFile>', $File.FileData)
    

    例如,要将导出的邮件流规则集合保存到 C:\My Documents\Exported Rules.xml 文件,请运行以下命令:

    [System.IO.File]::WriteAllBytes('C:\My Documents\Exported Rules.xml', $File.FileData)
    

有关语法和参数的详细信息,请参阅 Export-TransportRuleCollection

使用 Exchange 命令行管理程序导入邮件流规则集合

  1. 使用以下语法:

    $Data = [System.IO.File]::ReadAllBytes('<OutputFile>')
    

    例如,要从 C:\My Documents\Exported Rules.xml 导入邮件流规则集合,请运行以下命令:

    $Data = [System.IO.File]::ReadAllBytes('C:\My Documents\Exported Rules.xml')
    
  2. 运行以下命令:

    Import-TransportRuleCollection -FileData $Data
    

有关语法和参数的详细信息,请参阅 Import-TransportRuleCollection

需要更多帮助吗?