由于exchange2007相对于03有了很大的变改,所以一些旧的概念需要变更,正好最近遇到了这方面的case(详见前文 防止邮件地址仿冒 ),下面来跟大家共享一下该问题的深入知识。
在Exchange 2007中,传统的SMTP Virtual Servers被替换为发送和接受连接器,这样可以方便管理邮件流。在hubserver上设定接受连接器是非常容易的,你只需要指定连接器名,侦听ip,远程连接ip段,可用的验证协议和组等即可,然后exchange就可以接收smtp入站讯息了。预定义的permission groups可让你快速确定那些用户可以使用这个连接器。大部分时候,EMC会让你忘记03里SMTP Virtual Servers的那个安全标签,当然如果你要做更细微的调整还是会发现emc的不足。(乱入:PS很强大的哦!使用powergui应该比emc更好用,emc太慢了!)如下图所示
别担心,PS脚本帮你搞定这个case。
[PS] C:\>Get-ReceiveConnector mailserver\Default* | Get-ADPermission
(我这里不是在EXchangeserver本地运行,所以需要指定mailserver名)
你肯定看到一整面的字符对吧,别担心。这只是告诉你ps可以能更细微的查看细节。下面我们来查看匿名用户的权限
[PS] C:\Get-ReceiveConnector mailserver\D* | Get-ADPermission | where {$_.user -like "*anon*"} | ft identity,user,deny,extendedrighsts –autosize
你看到没有,匿名用户是没有类似下图验证用户的smtp提交权限的。
下面我们来看看接收器上针对用户的几个权限(也就是extenderights):
Permission | Display name |
ms-Exch-SMTP-Submit | Submit Messages to Server |
ms-Exch-SMTP-Accept-Any-Recipient | Submit Messages to any Recipient |
ms-Exch-SMTP-Accept-Any-Sender | Accept any Sender |
ms-Exch-SMTP-Accept-Authoritative-Domain-Sender | Accept Authoritative Domain Sender |
ms-Exch-SMTP-Accept-Authentication-Flag | Accept Authentication Flag |
ms-Exch-Accept-Headers-Routing | Accept Routing Headers |
ms-Exch-Accept-Headers-Organization | Accept Organization Headers |
ms-Exch-Accept-Headers-Forest | Accept Forest Headers |
ms-Exch-SMTP-Accept-Exch50 | Accept Exch50 |
ms-Exch-SMTP-Send-Exch50 | Send Exch50 |
ms-Exch-Send-Headers-Routing | Send Routing Headers |
ms-Exch-Send-Headers-Organization | Send Organization Headers |
ms-Exch-Send-Headers-Forest | Send Forest Headers |
ms-Exch-Bypass-Message-Size-Limit | Bypass Message Size Limit |
ms-Exch-Bypass-Anti-Spam | Bypass Anti-Spam |
1. ms-Exch-SMTP-Submit
如果smtp接收线程没有该权限,线程是无法通过该连接器提交邮件的。使用“mail from”;”auth”命令都会失败。这也意味着你的exchangeserver无法通过该连接器拿到发给该域内的邮件。
为匿名添加该权限:Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-exch-smtp-submit
再次测试,此时报的是另外一个错误,是正常的
2. ms-Exch-SMTP-Accept-Any-Sender
上面的错误是因为匿名登陆没有ms-Exch-SMTP-Accept-Any-Sender permission。如果smtp接收线程没有该权限,服务器将会检查发信人地址仿冒。这个case之前有专文写过。
为匿名添加该权限:Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-exch-smtp-accept-any-sender
再次测试,ok了
在上面的测试中,我突然想使用另外一个账户名来发送邮件,但是如你看到的,我失败了。可是匿名用户不是拥有可以使用任意域名的权限么?为什么?原来,Exchange Receive Connectors有2个不同的权限针对mail from 判断使用可以允许的域名。这些域名有2大类:
1权威域和internal relay
2extenal relay或者没有定义
如何查看exchange organization中哪些域名是被设置为权威域?
使用get-acceptedDoamin
你可以看到 “bb.dmn” 是一个权威域;这也就是为何无法使用该域名发信的原因。如果要让receive connector接受这种类型的发送者SMTP线程,则必须添加ms-Exch-SMTP-Accept-Authoritative-Domain-Sender 权限
3. ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
如果smtp接收线程没有该权限,服务器会拒绝“mailfrom”中使用了权威域名的邮件。
为匿名账户添加该权限Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
再次测试,没有问题了吧!
看起来是没有问题了。SMTP 线程可以接受任意的mailfrom地址;发送者也可以使用任意域名,而且还能使用权威域名。SMTP线程也接受收件人是权威域内的用户,但拒绝投递邮件给外部。这确保了邮件系统是安全的,不会被外部用户relay. So what permission is missing from SMTP session so that we couldn’t relay message to outside. Check out the next one please!!
4. ms-Exch-SMTP-Accept-Any-Recipient
这是一个重要的权限,你也可以称之为relay权限。因为一个拥有该权限的smtp接收线程可以投递邮件给组织外。如果你有一个面向公网的接受连接器而且为匿名用户添加了该权限,那此时你的邮件系统就是一个 OPEN-RELAY server!!
作为测试的目的,我们这里为匿名用户添加该权限。
Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-SMTP-Accept-Any-Recipient
此时再来做测试:
这就是一个open relay smtp server了。别怪我没有提醒你!如果你这么干了,后果自负!
5. ms-Exch-SMTP-Accept-Authentication-Flag
如果smtp接收线程没有该权限,服务器将会忽略auth验证的部分。在内网中,exchangeservers传送匿名邮件会使用“auth=<>”。
这个权限允许早前版本的exchange服务器以内部发送者的名义提交邮件。Ex07 会将这些邮件识别为内部邮件。(exchange07的邮件全部有hub来投递,所以比如ex03就不能归属于exchange07 的组织中。)
6. ms-Exch-Accept-Headers-Routing
如果smtp接收线程没有该权限,服务器会删掉所有“received:”的行
如果你查看入站邮件头,你可以看到邮件从发送者到收信者所经过的邮件服务器信息。下面是在outlook中使用Message Options 查看的例子。当邮件从SMTP server传递给下一个server,每个接受server都会在mail中添加一个签名(以Received:开头)。如果一个邮件在组织内经过了3个smtp服务器,那这封邮件的接受者就能知道你组织的内网中3台mialserver的ip地址。是不是觉得很不安全呢?
要避免该问题,你只需要简单的在发送接收器上拒绝匿名用户的这项权利。
get- sendconnector “D*” | add-adpermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-Accept-Headers-Routing
查看Get-SendConnector "d*"| Get-ADPermission -user "nt authority\anonymous logon" | ft deny,isinherited,extendedrights -autosize
7. ms-Exch-Accept-Headers-Organization
如果smtp接收线程没有该权限,服务器会删掉所有“X-MS-Exchange-Organization-”的行
8. ms-Exch-Accept-Headers-Forest
如果smtp接收线程没有该权限,服务器会删掉所有“X-MS-Exchange-Forest-”的行
9. ms-Exch-SMTP-Accept-Exch50
这个权限允许线程提交包含XEXCH50命令的邮件。当于Exchange 2000 Server 和 Exchange 2003协同工作的时候会用到XEXCH50命令。而在exchange07only的状态下,该权限应该被disabled。
10 ms-Exch-Send-Headers-Routing
如果smtp发送线程没有该权限,服务器会删掉所有“received:”的行。
11ms-Exch-Send-Headers-Organization
如果smtp发送线程没有该权限,服务器会删掉所有“X-MS-Exchange-Organization-”的行
12ms-Exch-Send-Headers-Forest
如果smtp发送线程没有该权限,服务器会删掉所有“X-MS-Exchange-Forest-”的行 .
如何删除所有出站邮件中的内部路由信息请查看:
http://exchangeshare.wordpress.com/2008/05/26/how-to-remove-header-from-outgoing-mails-in-exchange-2007/
13ms-Exch-Bypass-Message-Size-Limit
如果SMTP接收线程拥有该权限,服务器将在协议级别跳过邮件大小限制。
14ms-Exch-Bypass-Anti-Spam
如果SMTP接收线程拥有该权限,服务器将跳过该邮件的anti-spampass检查。
自由广告区 |
分类导航 |
邮件新闻资讯: IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮 电子邮箱 | 反垃圾邮件|邮件客户端|网络安全 行业数据 | 邮件人物 | 网站公告 | 行业法规 网络技术: 邮件原理 | 网络协议 | 网络管理 | 传输介质 线路接入 | 路由接口 | 邮件存储 | 华为3Com CISCO技术 | 网络与服务器硬件 操作系统: Windows 9X | Linux&Uinx | Windows NT Windows Vista | FreeBSD | 其它操作系统 邮件服务器: 程序与开发 | Exchange | Qmail | Postfix Sendmail | MDaemon | Domino | Foxmail KerioMail | JavaMail | Winwebmail |James Merak&VisNetic | CMailServer | WinMail 金笛邮件系统 | 其它 | 反垃圾邮件: 综述| 客户端反垃圾邮件|服务器端反垃圾邮件 邮件客户端软件: Outlook | Foxmail | DreamMail| KooMail The bat | 雷鸟 | Eudora |Becky! |Pegasus IncrediMail |其它 电子邮箱: 个人邮箱 | 企业邮箱 |Gmail 移动电子邮件:服务器 | 客户端 | 技术前沿 邮件网络安全: 软件漏洞 | 安全知识 | 病毒公告 |防火墙 攻防技术 | 病毒查杀| ISA | 数字签名 邮件营销: Email营销 | 网络营销 | 营销技巧 |营销案例 邮件人才:招聘 | 职场 | 培训 | 指南 | 职场 解决方案: 邮件系统|反垃圾邮件 |安全 |移动电邮 |招标 产品评测: 邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端 |