Exchange Server 中的邮件路由

您 Exchange 组织中的邮箱服务器上的传输服务的主要任务是,将接收自用户和外部来源的邮件路由到最终目标。 路由决策在邮件分类期间做出的。 分类程序是传输服务的一个组件,用于处理传入的所有邮件,并根据目标信息确定要对邮件执行的操作。

Exchange 2016 和 Exchange 2019 中的路由与 Exchange 2013 几乎保持不变。 与 Exchange 2010 相比,路由发生了显著变化:

  • 路由完全了解数据库可用性组 (DAG) ,并且能够在路由决策中使用 DAG 成员身份,即使 DAG 成员位于不同的 Active Directory 站点中也是如此。 对于不属于 DAG 的邮箱服务器以及为了与早期版本的 Exchange 的互操作性,在路由决策中仍使用 Active Directory 站点成员身份。

  • 传输服务从不直接与邮箱数据库通信。 相反,传输服务在本地或远程邮箱服务器上与邮箱传输服务通信。 只有邮箱传输服务与本地邮箱数据库通信。 当邮箱服务器是 DAG 的成员时,只有保存邮箱数据库活动副本的邮箱服务器上的邮箱传输服务才接受目标收件人的邮件。

  • 远程过程调用 (RPC) 仅供邮箱传输服务使用,用于向本地邮箱数据库发送邮件或接收本地邮箱数据库发送的邮件。 当邮箱服务器是 DAG 的成员时,邮箱传输服务仅使用 RPC 与邮箱数据库的主动副本进行本地通信。 换句话说,RPC 从不用于跨服务器或跨服务通信。 相反,邮箱传输服务和传输服务始终使用 SMTP 进行通信。

  • Exchange 现在对远程目标使用更精确的队列。 Exchange 现在不对远程 Active Directory 站点中的所有目标使用一个队列,而是对 Active Directory 站点中的特定目标(例如单个发送连接器)对消息进行排队。

  • 链接的连接器不再可用。 链接的连接器是链接到发送连接器的接收连接器。 接收连接器接收的所有邮件都会自动转发到发送连接器。

路由组件

在邮箱服务器上的传输服务收到邮件后,必须对邮件进行分类。 邮件分类的第一个阶段是收件人解析。 在解析了收件人之后,便可以确定最终目标。 下一个阶段是路由,用于确定到达最终目标的最佳路径。 使用路由目标和传递组的概念,对 Exchange 中的路由进行通用化,以提高灵活性并降低复杂性。

路由目标

邮件的最终目标称为路由目标。 无论 Exchange 组织的复杂度如何,您都会惊奇地发现路由目标非常少。 具体包括:

  • 邮箱数据库:这是 Exchange 组织中具有邮箱的任何收件人的路由目标。 在 Exchange 2013 或更高版本中,公用文件夹是一种邮箱类型,因此将邮件路由到公用文件夹收件人与将邮件路由到邮箱收件人相同。

  • 连接器:发送连接器用作 SMTP 邮件的路由目标,具体取决于发送连接器的配置 (地址空间、范围是否限定等) 。 同样,传递代理连接器或外部连接器用作非 SMTP 邮件的路由目标。

  • 通讯组扩展服务器:当通讯组具有指定的扩展服务器 (负责) 展开组的成员身份列表的服务器时,这是路由目标。 通讯组扩展服务器是 Exchange 2013 或更高版本的邮箱服务器或 Exchange 2010 中心传输服务器。

请注意,虽然旧版 Exchange 中也有这些路由目标,但它们并不被叫做路由目标。

传递组

一个或多个传输服务器的集合负责将邮件传递到各个路由目标。 这样的传输服务器集合称为传递组。 之所以使用 “传输服务器 ”一词,是因为服务器可能是 Exchange 2013 或更高版本邮箱服务器 (传输服务) 或 Exchange 2010 中心传输服务器的混合服务器。 路由目标和传递组之间的关系如下表所示:

路由目标 传递组
Exchange 2013 或更高版本邮箱数据库 Exchange 2013 或更高版本邮箱服务器。
Exchange 2016 组织中的 Exchange 2010 邮箱数据库 仅 Exchange 2010 集线器传输服务器。
连接器 Exchange 2013 或更高版本的邮箱服务器或 Exchange 2010 中心传输服务器。
通讯组展开服务器 Exchange 2013 或更高版本的邮箱服务器或 Exchange 2010 中心传输服务器。

邮件的路由方式取决于源传递组与目标传递组之间的关系:

  • 如果源传递组和目标传递组相同,则不需要使用路由决策。 路由目标是邮件的下一个跃点。

  • 如果源传递组位于目标传递组的外部,则需要使用路由决策。 邮件会沿最低成本路由路径中继到目标传递组。 邮件可能会通过多个传输服务器中继到目标传递组,然后再传递到路由目标,具体视 Exchange 环境的大小和复杂度而定。

下表总结了 Exchange 2016 中的不同传递组类型。

传递组类型 传递组 路由目标 Comments
可路由 DAG
  • 属于 Exchange 2019 DAG 的 Exchange 2019 邮箱服务器。
  • 属于 Exchange 2016 DAG 的 Exchange 2016 邮箱服务器。
  • 属于 Exchange 2013 DAG 的 Exchange 2013 邮箱服务器。
DAG 中的邮箱数据库 在邮件到达 DAG 中的邮箱服务器后,传输服务会将邮件路由到保留目标邮箱数据库的主动副本的 DAG 成员上的邮箱传输传递服务。 然后,邮箱传输传递服务会将邮件传递到本地邮箱数据库。 虽然 DAG 可能会包含位于不同 Active Directory 站点中的邮箱服务器,但 DAG 会定义传递组,而不是 Active Directory 站点。
邮箱传递组 (Exchange 2013 或更高版本) Active Directory 站点中的 Exchange 2013 或更高版本邮箱服务器。 Active Directory 站点中不属于 DAG 的 Exchange 2013 或更高版本服务器上的邮箱数据库。 位于不属于 DAG 的服务器上的邮箱数据库由同一 Active Directory 站点中的邮箱服务器上的传输服务提供服务。

邮件到达 Active Directory 站点中的邮箱服务器上后,传输服务使用 SMTP 将邮件传输到保存邮箱数据库的邮箱服务器上的邮箱传输传递服务。 然后,邮箱传输传递服务会使用 RPC 将邮件传递到本地邮箱数据库。

也就是说,不同版本的 Exchange 均支持以下邮件传递路径:

  • 从 Exchange 2019 传输服务到 Exchange 2016 邮箱数据库的 Exchange 2016 邮箱传输传递服务。
  • Exchange 2019 传输服务到 Exchange 2013 邮箱的传输服务将服务传递到 Exchange 2013 邮箱数据库。
  • 从 Exchange 2016 传输服务到 Exchange 2019 邮箱数据库的 Exchange 2019 邮箱传输传递服务。
  • Exchange 2016 传输服务到 Exchange 2013 邮箱传输传递服务,再到 Exchange 2013 邮箱数据库。
  • Exchange 2013 传输服务到 Exchange 2019 邮箱数据库的传输服务。
  • Exchange 2013 传输服务到 Exchange 2016 邮箱传输传递服务,再到 Exchange 2016 邮箱数据库。
邮箱传递组 (Exchange 2010) Active Directory 站点中的 Exchange 2010 集线器传输服务器。 Active Directory 站点中的 Exchange 2010 邮箱服务器上的邮箱数据库。 Exchange 2010 邮箱服务器上的邮箱数据库由同一 Active Directory 站点中的 Exchange 2010 集线器传输服务器提供服务。 p> 邮件到达 Active Directory 站点中的随机 Exchange 2010 中心传输服务器后,中心传输服务器上的存储驱动程序使用 RPC 将邮件写入邮箱数据库。
连接器源服务器 定义为连接器的源传输服务器的任何 Exchange 2013 或更高版本邮箱服务器或 Exchange 2010 中心传输服务器的混合。 发送连接器、传递代理连接器或外部连接器。 如果连接器已限定范围(即仅限同一 Active Directory 站点中的传输服务器使用),那么只有此站点中的其他传输服务器会注意到连接器,并能使用连接器路由邮件。

如果连接器未限定范围,那么整个 Active Directory 林中的所有传输服务器都会注意到连接器,并能使用连接器路由邮件。

服务器列表 定义为通讯组扩展服务器的 Exchange 2013 或更高版本邮箱服务器或 Exchange 2010 中心传输服务器。 通讯组展开服务器。
AD 站点 Exchange 2013 或更高版本邮箱服务器或 Exchange 2010 中心传输服务器的任何混合存在于:
  • 配置为中心站点的 Active Directory 站点。
  • 订阅了边缘传输服务器的 Active Directory 站点。
无。 邮件必须经过 Active Directory 站点到达实际的路由目标。 此交付组类型是 Exchange 2013 或更高版本中仍使用 延迟扇出 的唯一路由方案。 当多个路由目标共享最低成本路由路径的一部分时,延迟扇出会尝试减少邮件传输数。

只有当邮件的最低成本路由路径上存在 Active Directory 站点时,才会使用中心站点。 >对于边缘传输服务器,订阅的 Active Directory 站点中任何邮箱服务器上的传输服务都可以将邮件发送到边缘传输服务器,而不管该服务器是否参与 EdgeSync 同步。 有关详细信息,请参阅边缘传输服务器

注意

传递组成员身份并不相互排斥。 例如,作为 DAG 成员的邮箱服务器也可以是发送连接器的源传输服务器。 此邮箱服务器既属于 DAG 中邮箱数据库的可路由 DAG 传递组,也属于发送连接器的连接器源服务器传递组。

队列

从发送传输服务器的角度来说,每个邮件传递队列代表特定邮件的目标。 在传输服务选择邮件的目标后,目标会作为 NextHopSolutionKey 属性在收件人上进行标记。 如果将一封邮件发送给多个收件人,则每个收件人都具有 NextHopSolutionKey 属性。 接收传输服务器还执行邮件分类,并将邮件排入队列以供传递。 在邮件排入队列后,您可以检查特定队列的传递类型,以确定邮件在到达下一个跃点目标时是否将被再次中继。 NextHopSolutionKey 属性的每个唯一值均对应于单独的邮件传递队列。

有关详细信息,请参阅 NextHopSolutionKey

路由邮件

当邮件需要传递到远程传递组时,必须为邮件确定路由路径。 Exchange 使用以下逻辑为邮件选择路由路径。 此逻辑基本上与 Exchange 2010 相同:

  1. 通过将到达目标必须经过的 IP 站点链接的成本相加,计算出最低成本路由路径。 如果目标是连接器,则将为地址空间分配的开销加到通向所选连接器的开销中。 如果有多个可能的路由路径,则使用总成本最低的路由路径。

    注意:连接器的大小限制是此处的一个因素。 已配置的消息大小限制小于消息大小的连接器无需考虑。 有关详细信息,请参阅 外部消息路由中的连接器选择

  2. 如果多个路由路径的总开销相同,将计算每个路径中的跃点数,并使用跃点数最少的路由路径。

  3. 如果仍有多个可用的路由路径,则会考虑分配给目标前面的 Active Directory 站点的名称。 在所使用的路由路径中,最接近目标的 Active Directory 站点的字母数字顺序最小。 如果所有被评估的路由路径中与目标最接近的站点为同一个,则考虑前一个站点名称。

在 Exchange 2010 中,每个邮件收件人只与一个 Active Directory 站点相关联,从源 Active Directory 站点到目标站点只有一个成本最低路由路径。 在 Exchange 2013 或更高版本中,传递组可能跨越多个 Active Directory 站点,并且可能有多个到这些站点的最小成本路由路径。 Exchange 将目标传递组中的单个 Active Directory 站点指定为 主站点。 主站点是指根据前面介绍的路由逻辑得出的最接近 Active Directory 站点。 若要在传递组之间成功路由邮件,Exchange 会考虑以下问题:

  • 沿最低成本路由路径存在一个或多个中心站点:如果主站点的成本最低的路由路径包含任何中心站点,则必须通过中心站点路由消息。 会选择沿成本最低路由路径的最近中心站点作为类型 AD site 的新传递组,其中包括中心站点中的所有传输服务器。 在邮件经过中心站点之后,会继续沿成本最低路由路径路由邮件。 如果主站点碰巧就是中心站点,则出于以下原因仍将此主站点视为中心站点:

    • 如果目标传递组跨多个 Active Directory 站点,则源服务器只应尝试连接到中心站点内的服务器。

    • 首选中心站点内属于目标传递组的服务器。

      与旧版 Exchange 中一样,不在指向主站点的成本最低路由路径中的中心站点会遭到忽略。

  • 要在目标路由组中选择的目标 Exchange 服务器:当目标传递组跨越多个 Active Directory 站点时,到传递组中特定服务器的路由路径可能会产生不同的成本。 系统会根据成本最低路由路径选择位于最接近 Active Directory 站点中的服务器作为传递组的目标服务器,并会选择这些服务器所处的 Active Directory 站点作为主站点。

  • 尝试连接到目标路由组中的所有服务器失败时的回退选项:如果目标传递组跨越多个 Active Directory 站点,则第一个回退选项是其他 Active Directory 站点中目标传递组中未选择为目标服务器的其他所有服务器。 服务器选择依据为指向其他 Active Directory 站点的最低成本路由路径。 如果目标传递组在本地 Active Directory 站点中有任何服务器,则不存在其他任何回退选项,因为邮件已尽可能接近于目标路由目标。 如果目标传递组在远程 Active Directory 站点中有服务器,则回退选项是尝试连接到主站点中的其他所有服务器。

Routing messages between Active Directory sites

Exchange 在 Active Directory 站点之间路由消息的方式与 Exchange 2010 几乎相同。 有关详细信息,请参阅 在 Active Directory 站点之间路由邮件

在邮箱服务器上的前端传输服务中路由

前端传输服务可作为 Exchange 组织的所有入站和(可选)出站外部 SMTP 流量的无状态代理。 对于待发邮件,只有在专门进行配置的情况下,传输服务才会与前端传输服务进行通信。 有关详细信息,请参阅Configure Send connectors to proxy outbound mail

对于传入的邮件,前端传输服务必须快速找到一个正常运行的传输服务来接收邮件传输,无论收件人的数量或类型如何。 如果未能这样做,则会导致发送服务器认为电子邮件服务不可用。 与传输服务一样,前端传输服务根据 Active Directory 中的信息加载路由表,并使用传递组确定如何路由邮件。 不同的是,前端传输服务使用的路由表具有以下独特特征:

  • 前端传输服务永远不会被视为传递组的成员,即使邮箱服务器和客户端访问服务器安装在同一物理服务器上, (Exchange 2016 或更高版本) 始终如此。 这会强制前端传输服务只与运输服务进行通信。

  • 路由表不包含任何发送连接器路由。

  • 路由表包含本地 Active Directory 站点中邮箱服务器的特殊列表,以供快速故障转移时使用。

前端传输服务中的路由将邮件收件人解析为邮箱数据库。 前端传输服务使用的邮箱服务器的列表基于邮件收件人的邮箱数据库。 请注意,可能没有任何收件人具有邮箱(例如在收件人为通讯组或邮件用户时)。 对于每个邮箱数据库,前端传输服务会查找传递组和关联路由信息。 前端传输服务使用的传递组为:

  • 可路由 DAG

  • 邮箱传递组

  • AD 站点

根据收件人的数量和类型,前端传输服务执行以下操作之一:

  • 对于只有一个邮箱收件人的邮件,选择目标传递组中的邮箱服务器,然后根据 Active Directory 站点的邻近程度将此邮箱服务器设置为优先服务器。 将邮件路由到收件人可能涉及通过中心站点路由邮件。

  • 对于具有多个邮箱收件人的邮件,使用前 20 个收件人,以便根据 Active Directory 站点的邻近程度选择最接近的传递组中的邮箱服务器。 请注意,由于前端传输中不会发生邮件收件人拆分,因此无论邮件具有多少收件人,最终只会选择一个邮箱服务器。

  • 如果邮件没有邮箱收件人,则在本地 Active Directory 站点中随机选择一个邮箱服务器。

在邮箱服务器上的邮箱传输服务中路由

邮箱传输服务包含两个单独服务:邮箱传输提交服务和邮箱传输传递服务。 邮箱传输传递服务从传输服务接收 SMTP 邮件,并使用 RPC 连接到本地邮箱数据库以传递邮件。 邮箱传输提交服务使用 RPC 连接到本地邮箱数据库以检索邮件,并通过 SMTP 将邮件提交给传输服务。 邮箱传输服务既无状态,也不使用邮件传递队列。

与传输服务一样,邮箱传输服务根据 Active Directory 中的信息加载路由表,并使用传递组确定如何路由邮件。 不同的是,邮箱传输服务具有以下独特的路由特征:

  • 因为传输服务和邮箱传输服务位于相同的邮箱服务器上,所以邮箱传输服务始终与邮箱服务器同属一个传递组。 此传递组称为本地传递组

  • 邮箱传输提交服务不会自动将邮件发送给本地邮箱服务器上或自己的本地传递组中的其他邮箱服务器上的传输服务。 邮箱传输提交服务可以访问与传输服务相同的路由拓扑信息,因此邮箱传输提交服务可以将邮件发送到传递组外部的邮箱服务器上的传输服务。 本地传递组中的邮箱服务器用作回退选项,并用于传递给非邮箱收件人。

  • 邮箱传输服务只与邮箱服务器上的传输服务进行通信。

  • 邮箱传输服务仅与本地邮箱数据库通信。 邮箱传输服务从不与其他邮箱服务器上的邮箱数据库通信。

当用户从其邮箱发送邮件时,邮箱传输提交服务会将邮件收件人解析为邮箱数据库。 邮箱传输提交服务使用的邮箱服务器的列表基于邮件收件人的邮箱数据库。 请注意,可能没有任何收件人具有邮箱(例如在收件人为通讯组或邮件用户时)。 对于每个邮箱数据库,邮箱传输提交服务会查找传递组和关联路由信息。 邮箱传输提交服务使用的传递组为:

  • 可路由 DAG

  • 邮箱传递组

  • AD 站点

根据收件人的数量和类型,邮箱传输提交服务执行以下操作之一:

  • 对于只有一个邮箱收件人的邮件,选择目标传递组中的邮箱服务器,然后根据 Active Directory 站点的邻近程度将此邮箱服务器设置为优先服务器。 将邮件路由到收件人可能涉及通过中心站点路由邮件。

  • 对于具有多个邮箱收件人的邮件,使用前 20 个收件人,以便根据 Active Directory 站点的邻近程度选择最接近的传递组中的邮箱服务器。

  • 如果邮件没有邮箱收件人,则在本地传递组中选择邮箱服务器。

当邮箱传输传递服务从传输服务接收邮件时,它会接受或拒绝传递给本地邮箱数据库的邮件。 如果收件人驻留在本地邮箱数据库的主动副本中,则邮箱传输传递服务可以传递邮件。 但是如果收件人不驻留在本地邮箱数据库的主动副本中,则邮箱传输传递服务无法传递邮件,并且必须向传输服务提供未送达响应。 例如,如果邮箱数据库的主动副本最近移动到另一台服务器,则传输服务可能错误地将邮件传输到现在保存邮箱数据库非主动副本的邮箱服务器。 邮箱传输传递服务返回给传输服务的未送达响应包括:

  • 重试传递

  • 生成未送达报告 (NDR)(亦称为"传递状态通知 (DSN)"或"退回邮件")

  • 重新路由邮件

在边缘传输服务器上的传输服务中路由

边缘传输服务器中的传输服务可向所有 Internet 邮件流提供 SMTP 中继和智能主机服务。 来自 Internet 的邮件和发往 Internet 的邮件都存储在边缘传输服务器上的邮件传递队列中。 队列与外部域或发送连接器相对应。 有关详细信息,请参阅 NextHopSolutionKey

通常情况下,当您在外围网络中安装边缘传输服务器时,会将边缘传输服务器订阅到 Active Directory 站点。 Active Directory 站点包含的邮箱服务器既会将邮件中继到边缘传输服务器,也会中继来自边缘传输服务器的邮件。 边缘订阅流程为边缘传输服务器创建了 Active Directory 站点成员资格附属关系。 借助站点附属关系,Active Directory 站点中的邮箱服务器可以将邮件中继到边缘传输服务器,而无需配置显式发送连接器。

在多个 Active Directory 站点中具有 Exchange 服务器的组织中,从内部收件人到外部收件人的出站邮件会先路由到订阅的 Active Directory 站点。 目标 Active Directory 站点中的传输服务器为传递组。 路由目标为订阅的 Active Directory 站点中任意邮箱服务器上的传输服务中的组织内发送连接器。 组织内发送连接器是每个邮箱服务器上的传输服务中的特殊发送连接器。 此发送连接器是隐式创建的,因此并不可见,也不需要管理,可用于在 Exchange 服务器之间中继邮件。

若要详细了解如何将邮件路由到边缘传输服务器,以及路由来自边缘服务器的邮件,请参阅Mail flow and the transport pipeline