这里是普通文章模块栏目内容页
深入 Exchange 2013 传输服务简述

在之前的版本中,由Exchange2007引入了Hub Transport(集线器传输)角色作为所有邮件信息的传递中枢,任何发送或者接收到的邮件都必然会经过至少一个Ex2010与Ex2007的集线器传输角色;那么在Exchange2013当中,任何发送或接收的邮件都必然会经过MBX上的传输组件。这种必然性就代表Exchange可以实现以下这些功能:

1、 所有的邮件都会传输规则过滤并处理,传输规则可以同时对入站和出站两个方向的邮件设置过滤规则。

2、 所有邮件传输路径上经过的MBX服务器都会存有日志,也就是tracking logs,这个功能在排查邮件流问题的时候往往会首先被考虑到。

3、 MBX会保存一份当前正在传输的邮件的临时性副本,直到下游服务器返回了邮件送达的确认消息。如果在正常邮件传输路径当中出现问题导致这份邮件不能马上被送达,那么MBX会尝试用不同的邮件路由来发送临时副本。

4、 邮件只会到达拥有该邮箱活动数据库副本的MBX服务器

5、 组织内部,组织之间,组织外部的邮件流都可以被监控和管理。

作为一个邮件管理员,对于Exchange传输系统所要重点注意:

1、 配置默认的连接器来符合组织内的需求。

2、 邮件传输路径的高可用

3、 满足合规性的必要措施

4、 为环境内部其他的SMTP客户端配置自定义的接收连接器,比如邮件应用,扫描仪复印机,或者是其他的邮件系统

5、 突发的异常情况需要快速定位并且效率处理

6、 收集监控和报告的数据,以随时能够提供报表。

简述传输管道

微软在很多文档中,不论是针对Exchange开发者,或是管理员,都经常用到一个词,叫Transport Pipeline。这个概念在Exchange实际架构当中被分割成了两个部分,看起来就像下图所概括的样子。图中标示出CAS和MBX在逻辑上分别负责不同的传输模块。

从这个抽象的图里描述一下入站的邮件流:

1、 入站邮件流到达接收连接器,

2、 FET(MSExchangeFrontEndTransport.exe 前端传输)服务将邮件代理给MBX上的Transport服务

3、 Transport(MSExchangeTransport.exe)服务接收代理连接。微软说Ex2013里的Transport服务几乎等同于早期Exchange版本里的Hub Transport服务,意味着该服务会负责进行邮件分拣,邮件路由,应用传输规则,以及检查和修改邮件头与内容(渲染邮件)。

4、 Transport服务向MBX上的邮箱传输传递服务(MSExchangeDelivery.exe)发起SMTP连接(注意这里不是HTTP也不是RPC而是HTTP连接),该服务接收Transport的连接,接受入站邮件然后使用RPC连接将邮件放到Information Store里。所以整个过程当中邮箱传输传递服务充当了RPC存储服务和SMTP流量之间的一块适配器;Transport和FET服务无法直接对store进行连接,邮箱传输传递和邮箱传输提交服务利用RPC与store进行通信是Exchange2013里唯一用到RPC服务的地方。其他的内部服务器之间的Transport通信都是使用SMTP。

出站邮件流量的走向基本与入站流量走向相反,当用户发送一封新邮件的时候,客户端首先将邮件存储在特定的文件夹当中:Microsoft Outlook 缓存模式客户端会存在已发送邮件里,Outlook在线模式(或者Outlook 2011 for MAC OS X)的发件箱里,或者是Outlook Web App的草稿里。然后MBX上的邮件传输提交服务(MSExchangeSubmission.exe)会从这些文件夹里通过RPC拿走这些邮件,然后发送给传输服务,再丢给发送连接器。

这个过程当中也有例外,比方是某种邮件应用或者是邮件管理员自己把邮件直接放到MBX里的分拣或重播目录里头,这种情况咱们在后面的文章里会详细说明。

关于邮件流我以前也翻译过technet blog上的一篇文章:

http://sodaxu.blog.51cto.com/8850288/1651613

简述邮件路由

邮件路由在Ex2013的实现与以前的版本有诸多不同。在Exchange2010当中,AD站点是邮件路由的主要边界,和Exchange5.5的邮件路由工作方式类似。而在Exchange2000和Exchange2003当中,邮件路由则是依靠路由组和路由组连接器的概念来工作。Exchange 2013继续使用AD站点作为邮件路由范围的一部分,另一部分范围是DAG组。独立的MBX服务器(即没有加入到DAG组里的MBX)以AD站点作为路由边界,而加入到了DAG组的MBX服务器以DAG关系作为路由边界。这个改动也在一定意义上直接影响了Exchange2013其他组件的变动。当然DAG成员之间依然要求有健壮的连接来支撑,特别是跨站点的DAG。

在独立的MBX上,入站的邮件当然直接被丢到拥有该邮箱的数据库里;而在DAG里,入站邮件是被丢到拥有该邮箱的数据库的活动副本里(叫激活副本更为合适)。所以路由组件必须提供一个方法使得发送服务器可以辨识出哪台MBX得邮箱传输传递服务能够接受该邮件。这个需求被一个叫Active Manager的组件所满足,它会提供一张表,表里列出了哪些数据库的活动副本对应的MBX服务器。

另外一点,DAG本身就可以提供传输服务的弹性扩展,比方你部署了一个跨站点的DAG,那么其中任何的DAG成员都可以handle邮件的传输,而不需要额外的配置。

邮件的路由主要由Trransport服务里的分拣器组件负责,由它来决定邮件的下一跳地址(下一个目的地)然后将这个邮件投递到对应目的地的队列里。队列既包括本地的邮件流即SMTP发送给MBX邮箱传递传输服务,也有可能是外部的邮件流,发送给其他的邮件服务器。

实际上Exchannge2013包含三种目的地类型:邮箱数据库,邮件连接器,通讯组扩展服务器(distribution group expansion)。每封邮件的投递都会被指向这三种目的地其中一种。

这三种目的地在Exchange中被细化为投递组(delivery group)。关于投递组的更详细的其他说明,我会在后续的文章中再来跟大家聊聊。