这里是普通文章模块栏目内容页
深入 Exchange 2013 接收连接器

接收连接器在概念上要比发送连接器简单一点,每个接收连接器只用侦听来自你分配给它的ip地址和端口的请求,然后将SMTP会话传送出去即可。接收连接器使用权限组来决定哪些发送者被允许使用该连接器,权限组则是预先定义好的一系列安全主体对某个对象(当前场景下则是接收连接器)所拥有的权限,比如说是“任何有邮箱账户的用户”即Exchange Users,或者是“组织里的任何Exchange Server”即Exchange Servers。这种模型类似于NTFS权限模型,先把用户放进组里,然后在对象上对组设置权限。关于权限组更多更详细的表格啊内容啊,我这里就不多写了,大家参考technet吧:http://technet.microsoft.com/en-us/library/jj673053(v=exchg.150).aspx。

刚刚安装好CAS角色时,默认会创建三个接收连接器,第一个以“Default Frontend+CAS服务器名”的方式命名,使用internet标准的TCP25端口来接收SMTP流量;与Ex2007和Ex2010不同,Exchange 2013这个接收连接器默认就可以接受入站的匿名邮件,也就是说安装完成之后不用再去勾上匿名就可以接收公网邮件了。第二个是“Client Frontend+CAS服务器名”,主要用于客户端连接,侦听TCP 587连接并且只接受TLS连接即SSL加密流量。最后一个,“Outbound Proxy Frontend+CAS服务器名”,用来侦听由MBX服务器上的发送连接器发过来的邮件流量。

安装完MBX角色之后,默认也会创建两个接受连接器:

第一个是“Default +MBX服务器名”,用于接受组织内部的服务器之间的SMTP流量,在全角色的服务器上,它侦听TCP 2525端口,在只有MBX角色的服务器上只侦听TCP 25

第二个是“Client Proxy+MBX服务器名”,侦听TCP 465端口,只接收从CAS上“Client FrontEnd + CAS服务器名”这个接收连接器收取的客户端邮件。

这些MBX上的侦听连接器并非都使用常规端口,并且都有特定的身份验证设置,以允许他们接收只从Exchange Servers发过来的或者是本地AD林内验证过的用户发来的邮件。它们(默认)也没有IP地址限制的设置,客户端不应该直接连接到它们而应给连接到CAS上侦听587端口的连接器,这个连接器会将请求代理给MBX。

综上所述,我们可以得知默认的在一台全角色的Ex2013服务器上,运行Get-ReceiveConnector命令会获取 5个默认连接器,如下图:

每个接收连接器都会涉及到一个叫“TransportRole”的属性,中文版的Exchange里翻译就叫“角色”,这个属性会有两个值:“HubTransport集线器传输”或者是“FrontEndTransport前端传输”,这个属性就代表该接收连接器被应用的地方(在MBX上或者是在CAS上);需要注意的是,这个值在创建完连接器之后就无法被修改了。

从上边儿的默认配置也可以看出微软到处都会提到“典型安装”这个词,典型安装不需要增加任何额外的接收连接器,因为默认的接收连接器就已经在侦听所有IPV4和IPV6的TCP 25端口流量。

OK,当你考虑要创建一个新的接收连接器时,下面是几个需要注意的点:

1、 哪台服务器需要这个接收连接器

2、 这个接收连接器应该被置为怎样的TransportRole,如果环境里有一台全角色服务器,那么默认的已经有一个HubTransport的连接器在侦听TCP 2525端口,同时还有个默认的FrontEndTransport的连接器在侦听TCP 25端口,然而这个时候你再创建一个HubTransport的连接器,并且绑定了TCP25,那么就会造成2种角色的连接器侦听一个端口,这个时候就会出现其中有一个连接器无法工作的状况(首先启动的侦听该端口的服务会一直占用该端口,注意,2种角色分别对应2种服务,而你创建多个同一种角色的连接器去侦听同一个端口是没有问题的,因为它们是同一种服务。)所以你在全角色服务器上创建连接器的时候,就得多加小心了。

3、 新建的连接器的作用是什么,是连接到两个内部的Exchange组织,还是handle另外的外部SMTP流量,还是将Ex2013连接到Ex2003,这些都得规划清楚。

4、 接收连接器上需要额外调整最大入站邮件大小吗?

5、 客户端使用该接收连接器应该使用怎样的权限。

规划好了这些之后,就可以开始使用EAC或者EMS来创建新的接收连接器了。使用EAC来创建比较直观,如下图,打开新建接收连接器的页面之后,首先为其指定名称,然后设置它所属的角色,最后是类型,

自定义:最灵活的一种设置,可以有多种用途,包括跨林连接,或者是接受来自其他SMTP邮件系统的邮件。

内部:主要应用于Exchange组织之间的连接。当使用EAC创建该类接收连接器时,是无法指定其侦听端口的,所以得注意防火墙的设置。

Internet:用于接受外部SMTP服务器的邮件流量

合作伙伴:使用TLS安全,从指定的伙伴域接收邮件或是中继邮件。

客户端:用于支持POP3和IMAP4的客户端连接,或者是调用SMTP服务发送邮件的扫描仪和复印机等设备。

这里的类型代表一系列应用给该接收连接器的默认设置的权限模型和加密方法的组合,接收连接器支持七种验证方法,默认的5种连接器支持TLS、集成身份验证、基本身份验证以及TLS加密的基本身份验证,然后除了Client FrontEnd连接器之外都支持ExchangeServer验证方法。所有七种验证方法如下:

验证方法

描述

不使用验证方法

传输层安全性TLS

接收连接器宣称自己支持TLS并且将接收TLS请求;需要证书支持。

集成Windows身份验证(Integrated)

NTLM和Kerberos,同一个森林内部使用

基本身份验证(BasicAuth)

顾名思义

仅在启用TLS之后提供基本身份验证(BasicAuthRequireTLS)

通过TLS加密通道传输的基本身份验证;需要证书支持。

Exchange服务器(Exchange Server)

Generic Security Service application programming interface (GSSAPI)和 Mutual GSSAPI(你说这个谁懂啊!)

外部保护(ExternalAuthoritative)

使用IPsec加密外部服务器流量。

假设当前你需要创建一个接收连接器从环境内一台Linux qmail接收邮件,那么你可以使用EMS运行以下命令:
New-ReceiveConnector –Name “Receive From Qmail” –Usage Custom –Bindings ‘0.0.0.0:9925’ –RemoteIPRanges ‘192.168.70.1’ –Server Ex01.itcharger.com

OK,创建完成之后咱们来看看这个连接器的属性。

注意,如果你在创建新的接收连接器时,没有用-transportRole参数指定其应用角色时,,Exchange会默认设置它为集线器传输角色,然而集线器传输角色的接收连接器是不会直接接收外部入站邮件的,入站邮件应该首先经由FET角色的接收连接器接收,然后路由给相应的投递组。所以碰到这种情况一定要多加注意。

当创建完一个新的接收连接器后,Exchange会应用一些默认设置,管理员就会考虑对这些默认设置进行更改,包括:

1、 为连接器添加权限组,前面已经说过,Exchange是根据你选择接收连接器类型来应用默认的权限设置,它并不知道你的切实需求。所以在上面的例子里,要接收来自己Qmail邮件系统的流量,就得开启匿名用户组。

2、 修改连接器的验证方法。为防止数据流窃取,尽量开启TLS

3、 修改默认SMTP服务响应的banner消息(即你telent Exchange服务器的25端口之后收到的第一条消息,见下图),默认如果没有设置的话,就是如下图的信息,告诉你Exchange ESMTP 邮件服务已经准备完毕,然后告诉你当前的时间。有些管理员可能认为这些信息存在安全风险,会被某些0day漏洞有针对性的利用。你可以用7位的ASCII字符来替换掉这个默认的banner,在Exchange2013当中修改这个地方只能通过EMS。

4、 修改其他的配置,比如单封邮件最大大小,单封邮件头最多收件人数量,等等。这些更改只能通过EMS完成,比如这里有一个示例:设置刚刚建立的新接收连接器为允许TLS和基本验证方法,显示一个自定义的banner,然后减少最大邮件大小为3MB,最后再带上一个更改的注释,注释最长256个字符

Set-ReceiveConnector
 –Identity ‘EX01\Receive from Qmail’ –AuthMechanism ‘tls, basicauth’ –Banner ‘220 hehe’ –MaxMessageSize 3MB –Comment ‘Configured for TLS’

咱们经常涉及到的配置还有一点,就是开启和关闭匿名中继,这个过程就相当于是为某个权限组添加一个权限,在匿名中继场景里就是为匿名用户权限组添加一个ms-Exch-SMTP-Accept-Any-Recipient,命令如下
Get-ReceiveConnector
 –Identity ‘EX01\Receive From Qmail’ | Add-ADPermission –user ‘NT AUTHORITY\ANONYMOUS LOGON’ –ExtendedRights ‘ms-Exch-SMTP-Accept-Any-Recipient’

这个匿名中继一方面让Exchange可以作为一台邮件中继服务器,并且开启中继功能会迫使所有经过该连接器的邮件去走一遍Exchange上的反垃圾组件。另外一方面也是一个比较容易受攻击的弱点,所以一般匿名中继都需要指定好地址范围,以免被中毒的客户端利用,中继大量垃圾邮件。

传递代理和外部连接器

有些时候管理员可能会碰到非SMTP的邮件系统需要和本地的Exchange进行邮件通信,为了达到这个目的,以前的Exchange版本中提供了一个叫外部连接器的功能,然而到了Exchange 2013版本当中,这个功能被更新为叫“传递代理”,对应的是传递代理连接器。外部连接器使用本地或共享的投递目录通过文件传输将出站邮件发送到外部系统。而传递代理则是由第三方按照自己需求进行编写,Exchange2013默认的传递代理只支持文本消息传递代理。由于咱们不大可能接触到这两个东西,所以这里我也就介绍一下一笔带过。附上technet的对应链接,如果大家在环境中碰到了,可以参考:

1、 外部连接器:https://technet.microsoft.com/zh-cn/library/aa996779(v=exchg.150).aspx

2、 传递代理:https://technet.microsoft.com/zh-cn/library/dd638118(v=exchg.150).aspx