一种邮件发送保护方法和装置的制造方法_2

文档序号:9914354阅读:来源:国知局
到Smtp的标志以后,以socket为key建立数据映射。
[0073]4).对映射中的socket发送的所有数据进行分析,提取我们关心的字段。
[0074]5).在分析数据的同时将数据封包的列表进行缓存,缓存的内容包括映射的socke发送的所有的网络封包。
[0075]6).我们关心的字段主要有:From字段(发送邮箱),Rcpt字段(接收邮箱),Data字段(邮件内容,包括附件),End字段(标志一个完整的Smtp发送完成)。
[0076]7).接收Data段时需要把数据定向到文件中,因为Data段中含有附件,附件的体积可能会比较大,只有在接收完Data段的数据才能对附件进行处理。
[0077]8).在邮件客户端调用closesocket的时候将这个socket对应的数据销毁掉。
[0078]二.收件邮箱的队列的划分:
[0079]I).解析Smtp协议中的收件箱地址字段,如果出现多个不同类型的收件邮箱,将与第一个类型不同邮箱改为第一个邮箱的地址。
[0080]比如,原来的收件邮箱是
[0081 ] a: 32424234242iqq.com;b: louspil26.com; c: dsongil26.com其中,a邮箱是授信的,b邮箱是授信的,c邮箱是非授信的,修改后的邮箱地址列表就变成了a:324242342420qq.com;b:lousp@l26.com;c:32424234242@qq.com
[0082]2).在进行邮箱地址替换的时候需要将被替换的地址加入缓存的封包列表中,这样,收件邮箱地址就按授信和非授信划分为两个队列了,比如我们举的这个例子会被划分为
[0083]授信队列:32424234242iqq.com; louspil26.com; 32424234242iqq.com
[0084]非授信队列:dsong@126.com
[0085]当然,划分后可能会出现一个队列中的邮箱地址重复,但这个问题是不会影响邮件的发送的。
[0086]3).需要注意的是替换后封包的大小可能会改变,因为邮箱地址的长度可能不一样,针对这个情况,我们需要在在Hook的send函数中进行相应的处理。
[0087]三.邮件附件的加解密:
[0088]I).邮件附件比较大的时候一个封包是发送不完的,因此我们需要对邮件附件进行缓存,缓存的比较合适的时机是在Smtp协议的Data段发送的时候进行,缓存完附件之后再进行下一步的处理。
[0089]2).在邮件的Data段发送完成后对缓存的Data字段进行解析,如果有附件的话需要将邮件的附件提取处理,写入单独的文件,为附件的加解密处理做准备。
[0090]3).当前邮件附件的编码格式主要有base64和7bit两种,如果是base64编码的附件我们需要先将邮件附件进行base64解码,然后再对解码后的附件进行解密处理,处理后的邮件附件再进行base64编码,7bit编码的附件直接加解密处理即可。
[0091]4).解码完成后就可以对邮件附件进行解密处理了,首先识别出来哪些附件是经过加密的,然后使用解密接口对邮件附件进行解密处理。
[0092]5).我们需要将解密后的附件回写到封包列表中去,需要注意的是,经过解密的附件的大小跟原来加密的附件大小是不同的,我们需要根据解密后附件改变的大小准确的计算好解密后封包在封包列表的偏移。
[0093]四.缓存邮件的重新发送。
[0094]I).缓存邮件发送的时机非常的关键,我们在Smtp协议的Data段发送完成后的第一个recv被调用的时候发送,因为此时是Smtp发送完成一个完整的邮件。
[0095]2).缓存的邮件实际是一个收发封包的列表,发送的时候完全模拟邮件客户端首次发送的过程,需要发送就发送,需要接收封包就分配足够的缓冲区进行数据的接收,总之让邮件服务器将我们的重新发送行为识别为邮件客户端的行为。
[0096]与现有技术相比,本方案主要有以下两点优势:
[0097]1.对邮件发送者和邮件接收者是透明的,不用再区分谁是授信邮箱谁是非授信邮箱。
[0098]2.做到了真正的透明,和“透明加密”有很强的亲和性,易于形成完备的整套解决方案。
[0099]实施例四:
[0100]与以上方法实施例相对应,本发明还提供了一种邮件发送保护装置,如图3所示,该装置包括:
[0101]封包截获单元,用于截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存;
[0102]封包处理单元,用于解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列;
[0103]封包加解密单元,用于根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包;
[0104]封包转发单元,用于将数据封包推送至收件邮箱。
[0105]需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0106]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
[0107]最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种邮件发送保护方法,其特征在于,该方法包括: 步骤I)截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存; 步骤2)解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列; 步骤3)根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包; 步骤4)将数据封包推送至收件邮箱。2.根据权利要求1所述的邮件发送保护方法,其特征在于,步骤I)中,具体包括:通过API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获。3.根据权利要求1所述的邮件发送保护方法,其特征在于,步骤I)中,具体包括以下子步骤: 步骤11),通过API Hooksocket的send函数、recv函数、closesocket函数对邮件客户端发送的邮件封包进行截获,同时识别当前邮件的协议是否为Smtp协议; 步骤12),识别到Smtp协议后,以socket为key建立数据映射; 步骤13 ),对映射中的socket发送的所有数据进行分析,提取关键字段; 步骤14),将数据封包的列表进行缓存,缓存的内容包括映射的socke发送的所有的数据封包。4.根据权利要求4所述的邮件发送保护方法,其特征在于,所述子步骤13)中,所述关键字段包括: From字段,其定义了发送邮箱;Rcpt字段,其定义了接收邮箱;Data字段,其定义了邮件内容,包括附件;End字段,其标志一个完整的Smtp发送完成。5.根据权利要求3所述的邮件发送保护方法,其特征在于,所述子步骤14)中,将数据封包的列表进行缓存,具体包括: 在数据封包中的Data字段发送时开始缓存,并在邮件的Data字段发送完成后对缓存的Data字段进行解析,并将邮件附件提取,写入单独的文件。6.根据权利要求1所述的邮件发送保护方法,其特征在于,所述步骤2)中,具体包括以下子步骤: 21)解析收件箱地址字段,如果出现多个不同类型的收件邮箱,则将与第一个类型不同的邮箱改为第一个邮箱的地址; 22)将替换的地址加入到缓存的封包列表中,由此形成授信和非授信两个封包列表队列。7.根据权利要求6所述的邮件发送保护方法,其特征在于,在子步骤22)中,如替换后封包的大小发生变化,则根据解密后附件改变的大小计算好解密后封包在封包列表的偏移,然后把替换的文件按逐个按计算好的偏移逆序插入,以此将解密后的附件插入到准确的位置,实现包中文件的替换。8.根据权利要求1所述的邮件发送保护方法,其特征在于,所述步骤3)中,根据预设的规则为授信邮箱的附件进行解密,具体包括: 判断邮件附件的编码格式,根据不同的编码格式执行不同的操作; 其中,如果是base64编码的附件,先将邮件附件进行base64解码,然后再对解码后的附件进行解密处理,处理后的邮件附件再进行base64编码;7bit编码的附件直接加解密处理。9.一种邮件发送保护装置,其特征在于,该装置包括: 封包截获单元,用于截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存; 封包处理单元,用于解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列; 封包加解密单元,用于根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包; 封包转发单元,用于将数据封包推送至收件邮箱。10.根据权利要求9所述的邮件发送保护装置,其特征在于,所述封包截获单元通过APIHooksocket的send函数、recv函数、c 1sesocket函数以对邮件客户端收发的邮件封包进行截获。
【专利摘要】本发明公开了一种邮件发送保护方法和装置,该方法包括:步骤1)截获来自于邮件客户端发送的数据封包,并对采取Smtp协议的邮件进行数据封包的缓存;步骤2)解析所述数据封包,根据收件箱地址字段判断收件邮箱是否为授信邮箱和非授信邮箱,缓存并形成不同的封包列表队列;步骤3)根据预设的规则为授信邮箱的附件进行解密,非授信邮箱的附件不做更改,形成新的数据封包;步骤4)将数据封包推送至收件邮箱。
【IPC分类】H04L12/58, H04L29/06, H04L29/08
【公开号】CN105681174
【申请号】CN201610157947
【发明人】娄国栋
【申请人】山东华软金盾软件股份有限公司
【公开日】2016年6月15日
【申请日】2016年3月18日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1