微软技术

  Ken's Blog

   :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  18 随笔 :: 8 文章 :: 54 评论 :: 0 Trackbacks
Exchange 2003 SP2在大家的热切期待下,终于正式发布了,值得庆贺的日子.前面在连载一中,我们对SP2里的存储容量增强做了描述,大家还记得吗?(不记得了?那再看看以前的文章吧)

今天我们来看看SP2的第二个新功能--SENDER ID(发信人ID).

一.SENDER ID的概要

SENDER ID是一种针对垃圾邮件的伪造发信人来做的防范技术.其本质有点象我们用的很广泛的RDNS(反向DNS解析),它可以保证发信的服务器是真实的域名的提供者,而不是被伪造或钓鱼的.但是它和RDNS的区别在于,RDNS是要依靠注册反向记录(也被称为指针),它依赖于DNS的技术和局限,所以工作起来很有局限(比如在中国,大部分的域名是没有RDNS技术的),SENDERID是一种新的协议,它可以更好的借助DNS由管理员自己主动发布SPF记录来实现.SPF记录会声明正确的有效的发信服务器的信息,以防止被他人伪造.同时该技术不依赖DNS反向区域,因此实现起来比较方便.

二.SENDER ID是如何工作的?

了解了SENDER ID的基本概念,我们要从技术面来看看它是如何工作的了.首先我们来看一个图:



上图清楚的显示了SENDERID的工作方式,我们来解释一下:
1.发信人向目标服务器发送邮件
2.目标服务器将接收此邮件传递
3.目标服务器将依据SENDER ID的机制向DNS服务器查询发信人声明的域名的SPF记录(发信人声明的域名就是发信人电子邮件的域名部分,如yinjie@163.net,则我声明的域名就是163.net),依据查询的记过,获得声明域名所发布的SPF记录中的有效合法电子邮件服务器的IP地址,并与当前提交邮件的服务器IP比较,看是否符合
4.如果比较符合,即发信人的IP地址是存在在声明域的SPF记录中的,则发信将被接收并被认证,反之则认为该邮件属于伪造而拒收.

从上面的工作过程中,是不是很象是反响域名解析啊,没错,很象.那这个东西有什么好处呢?很显然,它可以帮助你过滤掉伪造的邮件,比如在之前由于Exchange服务器没有MAIL FROM的验证能力,因此外人可以利用我的服务器向我的内部用户传递大量的垃圾邮件,尽管可以用各种手段去拦截,但收效很小,现在好了,你要向我的服务器传递邮件,必须有严格有效的域名,如果你是个动态域名或是个自己建立的没有域名的服务器.那么你将不能通过SPF的校验.能看清楚吗?这无疑可以对垃圾邮件制造者给予很大的打击.使我们的邮件系统更加的干净.呵呵..又说远了.

三.SENDER ID的实现

说了这么多了,有人已经烦了,我知道这个东西很好,具体怎么做呢?怎么实现呢?别着急,听我慢慢说来.(又卖关子......)

1.SENDER ID的发信方实现--SPF记录的建立
通过一个简单的在现向导,可以帮助你建立SPF记录:SPF建立向导
一个有效的SPF记录类似这样
v=spf1 ip4:202.108.255.192/26 ip4:202.108.252.129/26 -all
该记录是TXT类型的.任何DNS服务器都支持该记录类型.

更详细的建立SPF记录的方法请看:
建立自己的SPF记录

2.SENDER ID的检查
建立好自己的SENDER ID后,如何检查是否确实建立了呢?我们还是要用到NSLOOKUP这个熟悉的工具了.
在命令行输入:nslookup -q=TXT domainname
如:
D:\Documents and Settings\Administrator>nslookup -q=TXT 163.net
*** Can't find server name for address 192.168.1.40: Non-existent domain
Server:  UnKnown
Address:  192.168.1.40

Non-authoritative answer:
163.net text =

        "v=spf1 ip4:202.108.255.192/26 ip4:202.108.252.129/26 -all"
就可以查找到指定域名的SPF记录.

3.邮件服务器配置
作好了以上的步骤,你就可以在邮件服务器上配置使用SENDER ID技术了.当然,只有安装了Exchange 2003 SP2后你的邮件服务器才支持该技术哦.还没装SP2的赶快装哦.

装好SP2后,你会在全局配置的邮件传递里看到SENDER ID的配置页.见图:

在这个地方,你有三个选择:
* 接受:将邮件接收并附加上SENDER ID的检查结果传递.
* 删除:接受邮件并删除它,不提供NDR.
* 拒绝:不接受邮件,并提供NDR回应.

SENDER ID的检查结果和默认处理方式有以下情况:

Neutral (?)
描述:域名没有主动声明自己的SPF记录的IP地址(SPF记录有)
处理:接受
Pass (+)
描述:发信方被确认是合法的域名声明的SPF的IP地址,并经过验证
处理:接受
Fail (-)
描述:发信方被明确的认为是不符合SPF记录的IP地址,属于伪造
可能原因:
发信方域不存在(如动态域名)
发信人不被认可
伪造域名
在邮件头上没有找到发信人记录信息
处理:接受 OR 拒绝 OR 删除(取决你刚才配置页上的设置)
Soft Fail (~)
描述:发信人是从和SPF记录匹配的IP发送的邮件,但可能没有经过验证
处理:接受
None
描述:域名不存在SPF记录信息
处理:接受
TempError
描述:在接收服务器反馈时出现临时性错误
处理:接受
PermError
描述:域名建立的SPF记录格式不正确,无法解释 
处理:接受

为了保证SENDER ID的工作正常和不影响现有域名的过渡,因此除了FAIL的处理方式可以由用户设置外,其他处理方式都是不能修改的.

如同IMF的SCL一样,微软也把SPF的检查结果以数字来描述,如下:
NEUTRAL 0x1 
PASS 0x2 
FAIL 0x3 
SOFT_FAIL 0x4 
NONE 0x5 
TEMP_ERROR 0x80000006 
PERM_ERROR 0x80000007
并通过XCH50来交换和传递SENDER ID检查结果,因此如果你的邮件在传递过程中经过了不支持XCH50命令SMTP服务器,这些信息可能丢失!

4.查看SENDER ID的检查结果

我们可以通过OUTLOOK或OWA查看SENDER ID的检查结果,以做排错需要.
将以下文件保存为senderid.cfg文件:

;**********The CFG file**********

[Description]

MessageClass=IPM.Note.SenderID

CLSID={00020D0C-0000-0000-C000-000000000046}

DisplayName=SenderID Extension Form

Category=Standard

Subcategory=Form

Comment=This forms allows the SenderID to be viewed in a column in Outlook

LargeIcon=IPML.ico

SmallIcon=IPMS.ico

Version=1.0

Locale=enu

Hidden=1

Owner=Microsoft Corporation

   

[Platforms]

Platform1=Win16

Platform2=NTx86

Platform9=Win95

 

[Platform.Win16]

CPU=ix86

OSVersion=Win3.1

   

[Platform.NTx86]

CPU=ix86

OSVersion=WinNT3.5

   

[Platform.Win95]

CPU=ix86

OSVersion=Win95

   

[Properties]

Property01=SenderID

   

[Property.SenderID]

Type=3

;NmidString=PR_SENDER_ID_STATUS

NmidInteger=0x4079

DisplayName=SenderID

   

[Verbs]

Verb1=1

   

[Verb.1]

DisplayName=&Open

Code=0

Flags=0

Attribs=2

   

[Extensions]

Extensions1=1

   

[Extension.1]

Type=30

NmidPropset={00020D0C-0000-0000-C000-000000000046}

NmidInteger=1

value=1000000000000000

;**********END CFG

并通过以下方法安装到OUTLOOK中:
1)将CFG文件放在OUTLOOK的窗体配置文件目录里,一般为Program Files\Microsoft Office\Office11\forms\language ID(中文的语言ID为2052)

2)使用工具菜单里的选项中的窗体管理,安装自定义的窗体
 

3)在邮件标题上选择字段选择器

4)选择窗体里的已经安装的窗体,并选中

5)将SENDID字段拖拉到标题栏

这样就可显示邮件的SENDID结果了,样本:

如果你觉得这些数字很难理解,可以在字段选择器里新建立一个字段,在类型栏选择"公式",在公式里写如如下的内容:

IIf([SenderID]=1,"NEUTRAL",IIf([SenderID]=2,"PASS",IIf([SenderID]=3,"FAIL",IIf([SenderID]=4,"SFAIL",IIf([SenderID]=5,"NONE",IIf([SenderID]=-2147483641,"PERM_ERR",IIf([SenderID]=-2147483642,"TEMP_ERR",[SenderID])))))))

这样你就可以在新字段里看到翻译后的状态了,如图:

怎么样,不错吧.赶快试试吧..

四.结语

好今天我们就SENDER ID做了些讨论,时间关系,写的不是很详细.提供一些参考性资源,供参考,最后说一下,本文版权归yinjie所有,转载请保留版权.谢谢..

资源:
1.SENDER ID HOME PAGE:http://www.microsoft.com/mscorp/safety/technologies/senderid/default.mspx
2.支持SENDER ID的厂家:http://www.microsoft.com/mscorp/safety/technologies/senderid/support.mspx
3.相关SENDER ID的资源和下载:http://www.microsoft.com/mscorp/safety/technologies/senderid/resources.mspx

下次我们谈谈SP2里的移动支持,请关注我们的系列课程


Trackback: http://tb.donews.net/TrackBack.aspx?PostId=605982

posted on 2007-08-02 12:43 Ken 阅读(603) 评论(0)  编辑 收藏 引用 所属分类: Exchange Server
只有注册用户登录后才能发表评论。