在 Exchange Online 中管理邮件流规则

在没有Exchange Online邮箱Exchange Online组织或独立Exchange Online Protection (EOP) 组织中,可以使用 Exchange 邮件流规则 (也称为传输规则) 来查找通过组织的邮件的特定条件并对其执行操作。

本文介绍如何 创建复制调整顺序启用或禁用删除导入或导出 规则,以及 监视规则使用情况

提示

若要确保规则按预期方式工作,请确保全面测试每个规则以及规则之间的交互。

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

提示

是否有任何疑问? 在 Exchange 论坛中寻求帮助。 访问 Exchange OnlineExchange Online Protection 的论坛。

创建邮件流规则

可以在 EAC 或 PowerShell 中创建邮件流规则。 在 EAC 中,还可以通过复制现有规则来创建邮件流规则。

注意

创建或复制邮件流规则后,新规则可能需要 30 分钟或更长的时间才能应用于电子邮件。

使用 EAC 创建邮件流规则

EAC 允许通过选择模板或从头开始创建邮件流规则。

  1. 在 的新 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules

  2. “规则 ”页上,使用以下选项之一创建规则:

    • 若要从模板创建规则,请选择“ 添加规则”“添加图标”。 并从下拉列表中选择模板。
    • 若要从头开始创建新规则,请选择“ 添加规则添加图标”。>创建新规则

    此时会打开“新建规则”向导。

  3. “设置规则条件 ”页上,在“ 名称 ”框中输入规则的唯一名称,然后选择规则的条件、例外和操作:

    • 如果...:从列表中选择条件,则应用此规则

      • 某些条件需要其他值。 例如,如果选择“ 发件人为...”,则还需要指定发件人地址。 如果要添加字词或短语,则不允许使用尾随空格。
      • 若要添加更多条件,请选择“ 添加条件添加图标”。 然后重复此步骤。
      • 选择 “删除条件”“删除”图标。 删除条件。
      • 若要应用于组织中的所有邮件,请选择“ 应用于所有邮件” 条件。
    • 执行以下操作...:从列表中选择一个操作。

      • 某些操作需要其他值。 例如,如果选择 “将邮件转发到审批...”,则需要选择组织中的收件人。
      • 若要添加更多操作,请选择“ 添加操作”“添加图标”。 然后重复此步骤。
      • 选择 “删除操作”“删除”图标 。删除操作。
    • if...除外:使用此设置可指定规则的任何例外。 可用异常与可用条件相同。

      • 某些异常需要其他值。 例如,如果选择“ 发件人为...”,则还需要指定发件人地址。 如果要添加字词或短语,则不允许使用尾随空格。
      • 若要添加更多异常,请选择“ 添加例外”“添加图标”。 然后重复此步骤。
      • 选择 “删除异常”“删除”图标 。删除异常。

    完成“ 设置规则条件 ”页后,选择“ 下一步”。

  4. “设置规则设置” 页上,配置以下设置:

    • 规则模式:选择以下值之一:

      • 强制:打开规则并立即开始处理消息。 对规则执行所有操作。
      • 使用策略提示进行测试:启用规则,任何策略提示操作 ( 发送策略 提示) 通知发件人 ,但不执行与邮件传递相关的操作。
      • 测试不带策略提示:仅强制实施 “生成事件报告 ”操作。 不会执行与消息传递相关的操作。
    • 严重性:为此规则选择严重性级别。 规则匹配项在活动报告中按严重性级别分组。 严重性级别只是一个筛选器,使报表更易于使用。 严重性级别对处理规则的优先级没有影响。

      • 未指定
      • High
      • 不审核:规则匹配项不会出现在规则报告中。
    • 启用此规则停用此规则:使用这些设置在特定时间段内打开和关闭规则。 如果在日期激活 此规则 之前创建规则,则会启用该规则,但不会对其进行处理。 在“ 停用此规则 ”日期后,该规则将保持启用状态,但不会进行处理。

    • 停止处理更多规则:使用此设置可阻止在此规则之后将其他规则应用于邮件。 如果邮件由此规则处理,则不会为该邮件处理后续规则。

    • 如果规则处理未完成,则延迟消息:指定在规则处理无法完成时应如何处理消息。 默认情况下,忽略该规则,并继续处理其他规则的消息。 如果选择此选项,则会重新提交消息进行处理。

    • 匹配邮件中的发件人地址:指定由检查发件人电子邮件地址的条件或例外评估的电子邮件地址:

      • 标头:仅检查邮件头。
      • 信封:仅检查 SMTP 邮件信封。
      • 标头或信封:检查邮件头和 SMTP 邮件信封。
    • 注释:向规则添加可选注释。

    完成“ 设置规则设置 ”页后,选择“ 下一步”。

  5. 在“ 查看并完成 ”页上,验证设置。 选择“返回”或使用“编辑规则条件”或“编辑规则设置”链接来修改设置。

    在“ 审阅和完成 ”页上完成操作后,选择“ 完成”。

  6. 在确认页上,选择“ 完成”。

使用 Exchange Online PowerShell 创建邮件流规则

以下示例创建一个新的邮件流规则,该规则在发送到 Sales Department 通讯组的外部邮件的“主题”行前附加文本 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 复制邮件流规则

  1. 在 的新 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules

  2. 在“ 规则 ”页上,通过选择“ 状态” 值旁边的单选按钮来选择规则,然后选择出现的“ 复制图标”。 操作。

  3. 在打开的“创建”<规则名称>“浮出控件的副本中,”条件“和”设置“选项卡上的值将填充复制的规则的设置。 默认名称为“规则名称>副本<”。 可以更改任何规则设置。 可用设置与创建新规则相同,如 使用 EAC 创建邮件流规则 部分中所述。

  4. 编辑完规则设置后,选择浮出控件底部的“ 复制 ”。

  5. 在打开的确认浮出控件中,选择“ 复制”。

  6. 在打开的成功浮出控件中,选择“ 关闭 X”。

如何知道已成功创建邮件流规则?

若要验证是否已成功创建邮件流规则,请执行以下步骤之一:

  • 在 EAC https://admin.exchange.microsoft.com/#/transportrules的“规则”页上,验证是否已列出创建或复制的邮件流规则。

  • 在 Exchange Online PowerShell 中,将“新建规则名称”>替换为<创建或复制的规则的名称,并运行以下命令:

    Get-TransportRule -Identity "<New Rule Name>""
    

查看或修改邮件流规则

注意

修改邮件流规则后,更新后的规则可能需要 30 分钟或更长的时间才能应用于电子邮件。

使用 EAC 查看或修改邮件流规则

  1. 在 的新 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules
  2. 在“ 规则” 页上,单击该名称旁边的圆形复选框以外的任何位置,从列表中选择规则。
  3. 在打开的详细信息浮出控件中,可以通过选择浮出控件顶部的 “编辑规则条件” 和“ 编辑规则设置” 来查看现有设置并进行更改。 可用设置与创建新规则相同,如 使用 EAC 创建邮件流规则 部分中所述。

使用 Exchange Online PowerShell 查看或修改邮件流规则

以下示例返回组织中所有邮件流规则的摘要列表:

Get-TransportRule

若要查看有关特定邮件流规则的详细信息,请提供规则的唯一标识符 (例如 Name、DistinguishedName 或 GUID) 。 将输出发送到 Format-List cmdlet 以设置属性的格式非常有用。

以下示例返回指定邮件流规则的所有属性:

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

以下示例向名为“发件人是市场营销成员”的现有规则添加一个例外,使其不适用于用户 Kelly Rollin 发送的邮件:

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

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

如何知道已成功修改邮件流规则?

若要验证是否已成功修改邮件流规则,请执行以下步骤之一:

  • 在 EAC https://admin.exchange.microsoft.com/#/transportrules的“规则”页上,单击“状态”值旁边的单选按钮以外的任何位置,选择修改的规则。 在打开的详细信息浮出控件中,确认设置。

  • 在 Exchange Online PowerShell 中,将“规则名称”>替换为<修改的规则的名称,并运行以下命令:

    Get-TransportRule -Identity "<Rule Name>" | Format-List Name,ExceptIfFrom
    

设置邮件流规则的优先级

在 EAC 的“ 规则 ”页上,邮件流规则按处理顺序显示。 列表顶部的规则具有 优先级 值 0,并首先进行处理。

使用 EAC 设置规则的优先级

  1. 在 的 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules
  2. 在“ 规则 ”页上,通过选择 “状态” 值旁边的单选按钮来选择规则,然后选择“ 上移 ”或“ 下移 ”操作,将规则向上或向下移动列表。

使用 Exchange Online PowerShell 设置规则的优先级

以下示例将指定邮件流规则的优先级设置为 2:

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

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

如何知道已成功设置邮件流规则的优先级

若要验证是否已成功设置邮件流规则的优先级,请执行以下步骤之一:

启用或禁用邮件流规则

默认情况下,使用 EAC 创建邮件流规则时,会禁用邮件流规则的状态。 这样做是为了在最终启用规则之前,可以再查看一次规则。 可以在规则创建完成后启用规则。

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

  1. 在 的 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules
  2. 在“ 规则 ”页上,单击行中除名称旁边的单选按钮以外的任意位置,选择规则。 规则的 “状态” 值为 “启用”“已禁用”。
  3. 在打开的详细信息浮出控件中,使用浮出控件顶部附近的 “启用或禁用规则 ”部分中的开关启用或禁用规则。

使用 Exchange Online PowerShell 启用或禁用邮件流规则

以下示例禁用指定的邮件流规则:

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

以下示例启用指定的邮件流规则:

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

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

如何知道已成功启用或禁用邮件流规则?

若要验证是否已成功启用或禁用邮件流规则,请执行以下步骤之一:

  • 在 EAC https://admin.exchange.microsoft.com/#/transportrules的“规则”页上,验证“状态”列中的值。

  • 在 Exchange Online PowerShell 中运行以下命令,返回组织中所有规则及其状态值的列表:

    Get-TransportRule | Format-Table Name,State
    

删除邮件流规则

使用 EAC 删除邮件流规则

  1. 在 的 EAC 中 https://admin.exchange.microsoft.com,转到 “邮件流>规则”。 或者,若要直接转到 “规则” 页,请使用 https://admin.exchange.microsoft.com/#/transportrules
  2. “规则 ”页上,通过选择 “状态” 值旁边的单选按钮来选择规则,然后选择“ 删除”图标。 显示的操作。
  3. 在打开的确认浮出控件中,选择“ 确认”。

使用 Exchange Online PowerShell 删除邮件流规则

以下示例删除指定的邮件流规则:

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

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

如何知道已成功删除邮件流规则?

若要验证是否已成功删除邮件流规则,请执行以下步骤之一:

监视规则使用情况

可以在 EAC 中使用 Exchange 传输规则报表检查每个规则的匹配次数。 对于要包含在报表中的规则,规则不能具有 “严重性 ”值“ ”未审核 “ (所有其他值都正常) 。 可以联机查看报表,或将报表数据下载到 .csv 文件。

注意

虽然大部分数据会在 24 小时内出现在报告中,但有些数据可能需要长达 5 天才会出现。

  1. 在 的 EAC 中 https://admin.exchange.microsoft.com,转到 “报告>邮件流”。 或者,若要直接转到 “邮件流报表 ”页,请使用 https://admin.exchange.microsoft.com/#/reports/mailflowreportsmain
  2. “邮件流报表 ”页上,找到并选择“ Exchange 传输规则报表”。

有关报表的详细信息,请参阅 Exchange Online 中新的 Exchange 管理中心中的 Exchange 传输规则报表

在 Exchange Online 中导入或导出邮件流规则集合

使用 Exchange Online PowerShell 中的 Export-TransportRuleCollection cmdlet 将组织中的所有邮件流规则导出到 XML 文件。 有关详细信息,请参阅 Export-TransportRuleCollection

Exchange Online PowerShell 中将弃用 Import-TransportRuleCollection cmdlet。 若要在 Exchange Online PowerShell 中手动导入邮件流规则集合 XML 文件,请执行以下步骤:

  1. 使用 Export-TransportRuleCollection cmdlet 备份所有现有邮件流规则, (下一步删除所有现有邮件流规则,就像 Import-TransportRuleCollection cmdlet) 一样。 例如:

    $file = Export-TransportRuleCollection
    
    [System.IO.File]::WriteAllBytes('C:\MailFlowRuleCollections\BackupRuleCollection.xml', $file.FileData)
    
  2. 通过运行以下命令删除组织中所有现有的邮件流规则:

    Get-TransportRule | foreach {Remove-TransportRule $_.Guid -Confirm:$false}
    
  3. 将以下文本复制到记事本:

    if ((Get-TransportRule).Count -ne 0)
    
    {
       Write-Host "Please remove your current mail flow rules first."
    
        return
    }
    
    [xml]$xml = Get-Content "C:\MailFlowRuleCollections\RuleCollectionToImport.xml"
    
    $rulesToImport = $xml.SelectNodes("//rules/rule")
    
    if ($rulesToImport.Count -eq 0)
    
    {
        Write-Host "There are no mail flow rules to be imported."
    
        return
    }
    
    Write-Host "Importing $($rulesToImport.Count) mail flow rules."
    
    $index = 0
    
    foreach ($rule in $rulesToImport)
    
    {
        $index++
    
        Write-Host "Importing rule '$($rule.Name)' $index/$($rulesToImport.Count)."
    
        Invoke-Expression $($rule.version.commandBlock.InnerText) | Out-Null
    }
    
  4. 使用要导入的邮件流规则 XML 集合的路径和文件名更新以下行:

    [xml]$xml = Get-Content "C:\MailFlowRuleCollections\RuleCollectionToImport.xml"
    
  5. 将文件另存为 .ps1,) 等 C:\Data\Import-Rules.ps1 易于查找 (的位置。

  6. 在 PowerShell 中,使用以下语法运行脚本:

    & "<Path to script file>\<FileName>.ps1"
    

    例如:

    & "C:\Data\Import-Rules.ps1"
    

需要更多帮助吗?

Exchange Online 中的邮件流规则(传输规则)

Exchange Online 中的邮件流规则条件和例外(谓词)

Exchange Online 中的邮件流规则操作

日记、传输和收件箱规则限制