了解外出 (OOF) 答复并对其进行疑难解答

OOF 答复可能有点神秘。 他们的工作原理是什么? 为什么他们有时不会传递给其他用户,如果没有,你会怎么做? 本文从 Exchange Online 配置的角度讨论 OOF 答复的各个方面。 但是,此讨论的大部分内容也适用于本地配置。

(如果你曾疑惑为什么“外出”缩写为“OOF”而不是“OOO”,请参阅 此博客文章)。

什么是外出答复?

OOF 或自动答复是客户端在用户邮箱中设置的收件箱规则。 OOF 规则是服务器端规则。 因此,无论客户端是否正在运行,都会触发它们。

可按如下所示配置自动答复:

管理员可以代表用户从 Microsoft 365 管理员门户设置 OOF 答复。

如果启用了自动答复,则即使收件人从发件人接收多个邮件,也只会向每个发件人发送一个答复。

除了在客户端中使用内置的 OOF 功能外,用户有时还会在外出时使用规则来创建外出消息

根据设计,Exchange Online Protection 使用高风险传递池 (HRDP) 发送 OOF 答复,因为 OOF 答复是低优先级消息。

OOF 规则的类型

OOF 规则有三种类型:

  • 内部
  • 外部
  • 已知发件人(联系人列表)

这些规则在用户的邮箱中单独设置。 每个规则都有一个关联的邮件类和名称。 规则名称存储在 PR_RULE_MSG_NAME 属性中。 下表列出了与每个 OOF 规则关联的邮件类和名称。

类型 邮件类 PR_RULE_MSG_NAME
内部 IPM.Rule.Version2.Message Microsoft.Exchange.OOF.KnownExternalSenders.Global
外部 IPM.Rule.Version2.Message Microsoft.Exchange.OOF.AllExternalSenders.Global
已知发件人 IPM.ExtendedRule.Message Microsoft.Exchange.OOF.KnownExternalSenders.Global

注意

除了 OOF 规则,其他规则(如垃圾邮件规则)也有 IPM.ExtendedRule.Message 邮件类。 MSG_NAME 变量确定规则的使用方式。

OOF 规则详细信息

可以使用 MFCMapi 工具查看所有收件箱规则:

  1. 登录到该工具。
  2. 选择与具有 OOF 规则的邮箱关联的配置文件。
  3. 在信息存储的顶部,选择“收件箱”,然后右键单击“打开关联的内容表”

MFCMapi 中的 OOF 规则:

MFCMapi 中 OOF 规则的屏幕截图。

MFCMapi 中的 OOF 规则模板:

MFCMapi 中 OOF 规则模板的屏幕截图。

OOF 响应历史记录

向每个收件人发送一次 OOF 响应。 向其发送 OOF 响应的收件人列表存储在 OOF 历史记录中,当 OOF 状态更改(启用或禁用)或修改 OOF 规则时,将清除该列表。 OOF 历史记录存储在用户的邮箱中,可以使用 MFCMapi 工具查看:Freebusy 数据>PR_DELEGATED_BY_RULE

存储在 Freebusy 数据中的 OOF 响应历史记录的屏幕截图。

注意

如果每次都希望向发件人发送响应,而不是只发送一次,则可以应用“使用特定邮件进行服务器回复”邮箱服务器端规则,而不是使用 OOF 规则。 每次收到邮件时,此备用规则都会发送响应。

故障排除 OFF 问题

以下部分讨论了 OOF 回复未发送到发件人中的一些方案。 它们包括可能的修补程序和一些可能遇到的非常常见的 OOF 配置问题。

如果未为租户中的所有用户发送 OOF 回复,通常是因为传输规则。 使用本文的第 2 步检查可能适用于受影响邮箱的所有传输规则。

如果怀疑是投送问题,请运行 Microsoft 365 租户中的邮件跟踪。 对于 OOF 邮件,原始邮件的发件人会在跟踪过程中成为收件人。 应该能够确定 OOF 回复是否已触发并发送到外部或内部收件人。 邮件跟踪将清楚地指示传输规则是否阻止 OOF 响应。

在阻止 OOF 回复的传输规则方面,有一个方案值得强调。 假设将 MX 记录移到了第三方反垃圾邮件程序。 你已创建传输规则,拒收从第三方反垃圾邮件程序以外的任何 IP 地址发送的任何电子邮件。

该传输规则如下例所示:

说明:
如果收到来自“组织外部”的邮件,请执行以下操作:拒收邮件并包含说明“不允许绕过 MX 记录!”, 其状态代码为:“5.7.1”。但发件人 IP 地址属于以下范围之一(“1xx.1xx.7x.3x”)的邮件除外。
ManuallyModified:假
SenderAddressLocation:信封

由于 OOF 规则具有一个空白 (<>) 返回路径,因此 OOF 规则意外匹配传输规则,并且 OOF 响应会被阻止。

若要解决此问题,请将“邮件中的匹配发件人地址”传输规则属性更改为“邮件头或信封”,以便对来自(也称为“邮件头来自”)、发件人答复对象字段执行检查。 有关邮件流规则条件的详细信息,请参阅本文的“发件人”部分。

在邮件页中的“匹配发件人地址”上选择“邮件头”的屏幕截图。

JournalingReportNdrTo 邮箱设置

如果在 JournalingReportNdrTo 设置下配置了受影响的邮箱,则不会为该邮箱发送 OOF 回复。 此外,日记电子邮件也可能受到影响。 建议的做法是为 JournalingReportNdrTo 设置创建专用邮箱。 或者,可以将专用邮箱设置为外部地址。

有关如何解决此问题的详细信息,请参阅 Exchange Online 或本地 Exchange Server 中的传输和邮箱规则无法正常工作

邮箱启用了转发 SMTP 地址

如果受影响的用户邮箱已启用 SMTP 转发,则不会生成 OOF 回复。 可以在以下任一位置进行检查:

  • 在客户端(如 Outlook 网页版)的用户邮箱设置中:

    使用客户端检查转发 SMTP 地址的屏幕截图。

  • 在 PowerShell 中:

    Get-Mailbox -Identity Daniel | fl DeliverToMailboxAndForward, ForwardingSmtpAddress, ForwardingAddress
    

    使用 PowerShell 检查转发 SMTP 地址的屏幕截图。

  • 在 Microsoft 365 门户的用户属性中:

    使用 Microsoft 365 门户检查转发 SMTP 地址的屏幕截图。

有关如何解决此问题的信息,请参阅本文

在远程域上设置的 OOF 回复类型

请注意在远程域上设置了哪个 OOF 答复类型,因为它会影响 OOF 答复。 如果 OOF 答复类型的配置不正确,则可能根本无法生成 OOF 答复。

OOF 答复类型有四种:

  • 外部
  • ExternalLegacy
  • InternalLegacy

有关这些 OOF 类型的详细信息,请参阅 Set-RemoteDomain 的“参数”部分中的 AllowedOOFType 条目。

可以从 Exchange 管理员中心>邮件流>远程域中查看 OOF 答复类型。

外出自动答复类型的屏幕截图。

或者,可以运行以下 PowerShell cmdlet:

Get-RemoteDomain | ft -AutoSize Name, DomainName, AllowedOOFType

使用 PowerShell 查看 OOF 答复的屏幕截图。

例如,假设你有一个混合组织,其中包含托管在 Exchange 本地和 Exchange Online 中的邮箱。 根据设计,如果“AllowedOOFType”设置为“外部”,则只有此方案中的外部消息才会发送到 Exchange 本地。 要在混合环境中将内部 OOF 消息发送到 Exchange 本地,请将“AllowedOOFType”设置为“InternalLegacy”

此外,还可以在邮箱配置级别(ExternalAudience:已知)选择仅向列为联系人的人发送外部 OOF 答复。 运行以下命令查看配置:

Get-MailboxAutoReplyConfiguration daniel | fl ExternalAudience

使用 PowerShell 查看 OOF 回复配置的屏幕截图。

远程域阻止 OOF 答复

远程域上的另一个设置是用于允许或阻止来自组织中客户端电子邮件程序的自动答复的消息。

可以在 Exchange 管理员中心>邮件流>远程域中找到此设置。

自动答复设置的屏幕截图。

或者,可以运行以下 PowerShell cmdlet:

Get-RemoteDomain | ft -AutoSize Name, DomainName, AutoReplyEnabled

使用 PowerShell 查看 OOF 答复阻止的屏幕截图。

注意

如果设置的值为 false,则不会向该域中的用户发送自动答复。 此设置优先于在邮箱级别设置的自动答复或 OOF 类型(如前所述)。 请记住,true 是新建的远程域和 Exchange Online 中名为“默认”的内置远程域的默认值。 false 是 Exchange 本地中名为“默认”的内置远程域的默认值。

如果电子邮件标记为垃圾邮件并发送到垃圾邮箱,则根本不会生成自动回复

这是不言而喻的。

消息跟踪显示传递失败

调查 OOF 答复问题时,可能会在消息跟踪中找到以下错误条目:

“550 5.7.750 服务不可用。 客户端无法通过未注册的域发送邮件。”

如果找到此条目,请联系 Microsoft 支持部门了解为何强制实施未注册的域块。

消息跟踪显示删除事件

在消息跟踪中,可能会看到删除事件,其中包含类似于以下示例的说明:

250 2.1.5 RESOLVER.OOF.IntToExt;处理了面向外部收件人的内部 OOF

这是一个普通的日志条目。

当 Exchange Online 生成 OOF 答复时,它会生成和发送内部和外部答复。 传递答复时,将删除不适用的消息。 例如,如果可发送到远程域中的收件人的 OOF 答复类型设置为“外部”或“ExternalLegacy”,则会删除内部答复,并且将记录删除事件。 对于发送到内部收件人的答复,将发生类似的 ExtToInt 事件。

其他 OOF 问题

创建、配置或管理 OOF 答复时,可能还会遇到以下问题。

发送旧的或重复的 OOF 消息

如果发送了旧的或重复的 OOF 答复,请检查是否有重复的收件箱规则,如果有,则将其删除。

如果没有其他收件箱规则,如果 OOF 历史记录达到其限制,也可能出现此问题。 OOF 历史记录限制为 10,000 个条目。 如果达到此阈值,则无法将新用户添加到历史记录列表。 在这种情况下,OOF 回复将继续发送给尚未在列表中的收件人,即向收件人发送的每封邮件进行回复。 已在列表中的所有用户将不会收到重复的 OOF 回复。

若要解决此问题,请使用以下任一方法。

方法 1

  1. 从邮箱中删除 OOF 规则和 OOF 规则模板。 若要查找规则,请参阅 OOF 规则详细信息部分。
  2. 禁用并重新启用邮箱的 OOF 功能。
  3. 再次检查 OOF 功能是否工作正常,并且没有出现症状。

方法 2

如果方法 1 无法解决问题,请删除 OOF 响应历史记录。

  1. 如果当前启用并退出 Outlook,请在 Outlook 中禁用自动回复。

  2. 登录到 MFCMapi 工具,然后选择“ 工具>选项”。

  3. 选中以下复选框:

    • 调用 OpenMsgStore 时使用 MDB_Online 标志
    • 调用 OpenEntry 时使用 MAPI_NO_CACHE 标志
  4. 选择“会话”>“登录”

  5. 选择邮箱的 Outlook 配置文件,然后双击以打开它。

  6. 展开“根容器”,然后选择“Freebusy 数据”

  7. 在“其他名称”列中,右键单击具有“0x3FE30102”标志的“PR_DELEGATED_BY_RULE”属性,选择“作为流编辑”,然后选择“二进制文件”

  8. 选中“流(二进制)”框中的所有文本并将其删除。

发送了两个不同的 OOF 邮件

如果发送了两个不同的 OOF 邮件,但找不到其他收件箱规则,则原因可能是 Outlook 客户端中的 OOF 规则。 若要检查和删除此类规则,请执行以下步骤:

  1. 在 Outlook 客户端中,选择“文件”>“自动回复”>“规则”

  2. 选择 OOF 规则,然后选择“删除规则”

    显示删除自动回复步骤的屏幕截图。

无法启用自动回复并收到错误消息

尝试在 Outlook 客户端中使用自动回复时,收到以下错误消息:

“无法显示自动回复设置,因为服务器当前不可用。 请稍后重试。”

若要解决此问题,请按照下列步骤操作:

  • 验证邮箱是否启用了 EWS 协议。 OOF 回复需要启用此协议。 (请注意,重新启用协议可能需要几个小时。)

  • 通过运行以下 cmdlet 启用 OOF 功能:

    Set-MailboxAutoReplyConfiguration <identity> -AutoReplyState Enabled
    
  • 检查 OOF 功能是否运行正常。

  • 如果仍然存在问题,请查看邮箱的规则配额:

    Get-mailbox -identity <mailbox> | fl RulesQuota
    

    检查邮箱标识的屏幕截图。

    默认情况下,RulesQuota 参数的最大值为 256 KB(262,144 字节)。 这取决于规则的大小,而不是规则的数量。

  • 从邮箱中删除 OOF 规则和 OOF 规则模板。 若要查找规则,请参阅 OOF 规则详细信息部分。 删除规则后,可以重新启用 OOF 功能,然后再次测试。

即使禁用了 OOF,也可以发送自动回复

在某些情况下,即使禁用了该功能,仍可发送 OOF 邮件。 如果规则是使用外出模板手动创建的,则可能会发生这种情况。