阅读过TechNet文档的人肯定对下面这张图不陌生,这张图完整诠释了整个Exchange 2013的邮件传输架构,前一章里已经简要讨论过的几个组件都在里头,然而还有一些其他的组件也值得深入讨论。首先咱们来聊聊图里边出现的重要词汇。
1、“代理”在这里是指Agents,而非是proxy,即处理或者传输消息的某一块程序代码。图中的agents直接反映出Exchange的Business logic,例如Exchange的反垃圾和恶意软件筛选组件属于协议代理,路由代理、邮件传递代理和邮件提交代理属于邮件传输生命周期的一部分。基本上,除了反垃圾和恶意软件筛选相关的代理,你无法直接的添加、删除或者是配置这些代理。当然,微软还是提供了一系列的API给开发者们开发一些特定用途的传输代理。
2、对于Exchange管理员们,“队列(Queues)”是非常熟悉的一个名词。顾名思义,队列通过先进先出(FIFO)的原则,来实现这样一个有秩序的可预测的邮件传递排列逻辑架构。对于每一个目的地,每一个连接队列中可以容纳20封邮件。比方说你现在有80封邮件去往Contoso.com域,那么Exchange会打开4个连接,尝试投递第1封,第21封,第41封和第61封邮件。然后取决于邮件的大小,21-40的邮件可能比第1封邮件先抵达目的地。Exchange 2013中的邮件队列与以往版本有许多不同,下文会详细描述
3、Events,即事件,通过触发事件来驱动代理和服务进行工作。比如在某一封邮件被队列了准备发送,其实这个过程大致是这样,一封邮件点击发送,被打上OnMessageSend标记,OnMessageSend标记被清除,进入队列,准备发送。
OK,可能上述的概念还是有些复杂,我们看下图,里面使用Get-TransportPipeline命令获取了当前一台全角色Exchange2013服务器中传输管道里的传输代理。当左边的某一项事件发生的时候,就会触发右边的某一项传输代理开始对打上该标记的邮件进行处理。
微软为Ex2013 MBX里的传输服务定义了四个主要任务,每个任务对应一个或者多个组件,我这里就直接贴TechNet原文了,原文已经写得非常清楚:
1. SMTP 接收 当传输服务收到邮件时,会执行邮件内容检查,应用传输规则,并执行反垃圾邮件和反恶意软件检查(如果已启用)。SMTP 会话包含一系列以特定顺序协同工作的事件,以便在接受邮件之前验证邮件内容。通过 SMTP 接收功能完全传递邮件之后,如果接收事件或反垃圾邮件和反恶意软件代理未拒绝该邮件,则会将该邮件放在提交队列中。
2. 提交 提交是将邮件放入提交队列中的过程。分类程序会一次拣选一个邮件进行分类。提交通过下列三种方法来进行:
a) 对于通过接收连接器的 SMTP 接收。
b) 通过分拣目录或重播目录。这些目录存在于邮箱服务器和边缘传输服务器上。已复制到分拣目录或重播目录中的格式正确的邮件文件,将直接放入提交队列中。
c) 通过传输代理。
3. 分类程序 分类程序从提交队列中一次拣选一个邮件。分类程序完成以下步骤:
a) 收件人解析,其中包括顶级寻址、展开和收件人拆分。
b) 路由解析。
c) 内容转换。
d) 此外,还会应用由组织定义的邮件流规则。对邮件进行分类后,会将其放入基于邮件目标的传递队列中。邮件按目标邮箱数据库、DAG、Active Directory 站点、Active Directory 林或外部域进行排队。
4. SMTP 发送 从传输服务路由邮件的方式取决于邮件收件人相对于进行分类所在的邮箱服务器的位置。邮件可以路由到以下位置:
a) 同一邮箱服务器上的邮箱传输服务。
b) 属于同一 DAG 的不同邮箱服务器上的邮箱传输服务。
c) 不同 DAG、Active Directory 网站或 Active Directory 林中的邮箱服务器上的传输服务。
d) 通过同一邮箱服务器上的发送连接器、不同邮箱服务器上的传输服务、客户端访问服务器上的前端传输服务或外围网络中的边缘传输服务器上的传输服务交付到 Internet。
看完了这四项任务的内容,再回过头去看看那张图,是不是顿时就清楚了很多?
再多聊一些这张图里头有趣的细节:
1、 如果目标投递组中存在多台MBX服务器,那么邮箱传输提交服务会在负载均衡的基础之上选择其中一台。
2、 早期版本的Exchange支持一些与第三方邮件应用的交互性服务,但是在Exchange2013当中如果你还想继续去用这些邮件应用服务,最好让它们调整为使用SMTP。(比如传真,Lotus Notes)
3、 当分拣器―分类程序展开了邮件中的收件人列表后,传输服务才开始应用邮件规则和归档规则。
4、 所有的邮箱服务器都会共享一些公共的传输配置,比如Exchange最大传输的消息大小,入站邮件的最大收件人数量,哪些连接器可用(包括Ex2010和Ex2013的边缘上的连接器)等等。这些配置都存在AD里,哦AD里还存了传输和归档规则,并且这些设置都可以使用Set-TransportConfig命令配置。
5、 接着上一条传输规则存储在AD中,如果企业Exchange处于共存环境下,那么传输规则会存储在AD里按版本命名的容器里;然后你安装Exchange2013的时候,会将现有的早期版本的传输规则和归档规从早期版本容器里拷贝到新版本的容器里,这样Exchange 2013就可以同样实施早期Exchange版本中的传输规则,并不意味着早期版本和Exchange2013的传输规则就这么同步了。在当Ex2013中创建了一条传输规则之后,这些新规则会用Exchange的版本号打上一个Stamp,Exchange2010会忽略掉这些新版本的规则,从而不会产生规则冲突。这种机制是非常必要的,因为Ex2013里对传输规则加了很多新的要素和动作。所以在混合环境下,最好尽可能多的将传输过程从早期Exchange版本移到新的Exchange服务器上来。
Part1先讲到这里,Part2里我们来分别说说Exchange 2013里的四个组件:
前端传输Front End Transport,传输服务Transport,邮件传输提交Mail Transport Submission,以及邮件传输传递Mail Transport Delivery。光读起来就十分拗口了……
附延伸阅读:
1、 传输代理:https://technet.microsoft.com/zh-cn/library/bb125012(v=exchg.150).aspx
2、 邮件流:https://technet.microsoft.com/zh-cn/library/aa99634(v=exchg.150).aspx#TransportPipeline