本发明涉及邮件处理领域,尤其涉及一种基于扫描系统的邮件拆解并重新组装的方法及装置。
背景技术:
在数据防泄漏产品中,当部门员工发送敏感邮件被拦截时,需要将该邮件发送给部门主管,向部门主管发送该邮件,反馈某个员工欲发送具有某些敏感信息的邮件。但是由于部门主管与员工的邮件通常配置在同一台邮件服务器上,此时,会使得投递该邮件的员工与部门主管都能收到该邮件,最终会导致拦截敏感邮件失败。同样,当来自外网、包含有敏感信息的邮件欲发送至内网时,也需要向部门主管发送该邮件,同样由于部门主管与员工的邮件通常配置在同一台邮件服务器上,此时,会使得投递该邮件的员工与部门主管都能收到该邮件。
技术实现要素:
为解决上述技术问题,本发明提出了一种基于扫描系统的邮件拆解并重新组装的方法及装置,所述方法及装置,用以解决现有技术中,基于扫描系统邮件系统,不能仅将敏感邮件信息发送给指定邮箱的问题。以及解决保证原邮件所有信息完整性的同时又不被原邮件收件人收取的需求问题。
根据本发明的第一方面,提供一种基于扫描系统的邮件拆解并重新组装的方法,所述方法包括以下步骤:
步骤s101:到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
步骤s102:对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
步骤s103:从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
步骤s104:从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
进一步地,所述自定义的remultipart方法获取参数的content属性,若参数的content属性为multipart类型,则以该multipart类型的content数据为参数,递归调用remultipart方法,直至读取到part类型数据。
进一步地,所述步骤s104之后,还包括:
步骤s105:通过java连接邮件服务器进行组合后的邮件的投递,获取返回信息,若投递失败,则将投递失败的邮件信息存储到数据库中,等待定时任务以便重新进行投递。
进一步地,到达邮件服务器的原邮件触发邮件拆解并重新组装操作的条件是,扫描系统扫描到原邮件包括预设关键字或命中敏感策略,则触发邮件拆解并重新组装操作。
根据本发明第二方面,提供一基于扫描系统的邮件拆解并重新组装的装置,所述装置包括:
启动模块:配置为到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
拆解模块:配置为对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
获取信息模块:配置为从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
组装模块:配置为从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
进一步地,所述自定义的remultipart方法获取参数的content属性,若参数的content属性为multipart类型,则以该multipart类型的content数据为参数,递归调用remultipart方法,直至读取到part类型数据。
进一步地,包括投递模块,配置为通过java连接邮件服务器进行组合后的邮件的投递,获取返回信息,若投递失败,则将投递失败的邮件信息存储到数据库中,等待定时任务以便重新进行投递。
进一步地,到达邮件服务器的原邮件触发邮件拆解并重新组装操作的条件是,扫描系统扫描到原邮件包括预设关键字或命中敏感策略,则触发邮件拆解并重新组装操作。
根据本发明第三方面,提供一种基于扫描系统的邮件拆解并重新组装的系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的基于扫描系统的邮件拆解并重新组装的方法。
根据本发明第四方面,提供一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的基于扫描系统的邮件拆解并重新组装的方法。
根据本发明的上述方案,将原邮件进行拆解并重新组装,组装成新的邮件进行发送,提供了邮件转发的同时能够保证原邮件所有信息不变的同时又不被原邮件的收件人/发件人收取的功能,实现拦截邮件的同时,将邮件信息单独投递给部门主管进行查看,能有效地解决邮件投递准确性的问题。保证原邮件所有信息完整性的同时又不被原邮件收件人收取。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明提供如下附图进行说明。在附图中:
图1为本发明一个实施方式的基于扫描系统的邮件拆解并重新组装的方法流程图;
图2为本发明一个实施方式的基于扫描系统的邮件拆解并重新组装的方法示意图;
图3为本发明又一个实施方式的基于扫描系统的邮件拆解并重新组装的方法示意图;
图4为本发明一个实施方式的基于扫描系统的邮件拆解并重新组装的装置结构框图。
具体实施方式
定义:
扫描系统:是指对文件内容进行有目的性扫描,匹配敏感关键字、正则,文档指纹等信息,并将匹配结果整理封装的系统。
敏感邮件:是指经过扫描系统扫描,发现邮件内容命中扫描系统策略的邮件。
原邮件:是指在邮件拆解并重新组装的流程中,拆解以前的邮件
mysql:是一个轻量级关系型数据库管理系统,由瑞典mysqlab公司开发,目前属于oracle公司。mysql被广泛地应用在internet上的中小型网站中。其将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性,具有体积小、速度快、成本低、开放源码、免费等优点。
首先结合图1说明为本发明一个实施方式的基于扫描系统的邮件拆解并重新组装的方法流程图。如图1所示,所述方法包括以下步骤:
步骤s101:到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
步骤s102:对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
步骤s103:从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
步骤s104:从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
所述步骤s101:到达邮件服务器的原邮件触发邮件拆解并重新组装操作,其中:
到达邮件服务器的原邮件,可以是由内网向外网发送的邮件,也可以是由外网向内网发送的邮件。
到达邮件服务器的原邮件触发邮件拆解并重新组装操作的条件是,扫描系统扫描到原邮件包括预设关键字或命中敏感策略,则触发邮件拆解并重新组装操作。
例如,外网发送到达邮件服务器的原邮件,进入扫描系统扫描后,命中敏感策略,则将扫描得到的结果存入数据库进行记录,同时触发邮件拆解并重新组装操作。
所述步骤s102:对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
其中,所述自定义的remultipart方法获取参数的content属性,若参数的content属性为multipart类型,则以该multipart类型的content数据为参数,递归调用remultipart方法,直至读取到part类型数据。
本实施例中,邮件解析是将eml文件递归进行卸载包裹。卸载包裹是将eml文件读取为message类型,从message中得到content属性,对content进行判断如果content的类型是multipar,则认为这还是一个小包裹,继续递归调用该方法直到content的类型为part类型。其中,content属性只有两种,即multipart类型和part类型,这两个类型都是java定义的。对于part类型,能够从中获取到邮件的各个部分的信息。
这时从part类型中获取邮件的各个部分比如附件、正文,然后将邮件附件以及邮件正文内容通过io流的方式存到硬盘中。
所述步骤s104:从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附件添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息,其中:
将附件添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,这样正文就会引用该附件,组合邮件是通过程序实现的,组合后的邮件与邮件服务器收到的邮件相同或相似。
原邮件的附件通过节点的形式添加至组合后的邮件,以保证原邮件中所有信息都不会丢失。
所述步骤s104之后,还包括:
步骤s105:通过java连接邮件服务器进行组合后的邮件的投递,获取返回信息,若投递失败,则将投递失败的邮件信息存储到数据库中,等待定时任务以便重新进行投递。
本实施例解决了基于扫描系统下邮件转发时保证原邮件所有信息完整性的同时又不被原邮件收件人收取的需求问题,转发的邮件会自动将原邮件的收件人、发件人、抄送人、主题等信息组装在邮件正文内。
本发明又一实施例的基于扫描系统的邮件拆解并重新组装的方法见图2、图3。
又一实施例,基于多个邮件代理服务器和多个扫描系统实现邮件的敏感数据防泄漏功能,具体流程为:
步骤s301:客户发送邮件;
步骤s302:邮件代理服务器收到邮件,扫描系统扫描邮件内容,命中敏感策略;
步骤s303:将扫描结果存至内存及数据库;
步骤s304:将原邮件进行拆解;
步骤s305:根据拆解结果组装新邮件;
步骤s305:将新邮件投递至邮件代理服务器,将邮件代理服务的投递结果存储至数据库,如果有投递失败的邮件等待定时任务拉起进行重新发送。
本发明实施例进一步给出一种基于扫描系统的邮件拆解并重新组装的装置,如图4所示,所述装置包括:
启动模块:配置为到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
拆解模块:配置为对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
获取信息模块:配置为从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
组装模块:配置为从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
本发明实施例进一步给出一种基于扫描系统的邮件拆解并重新组装的系统,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如前所述的一种基于扫描系统的邮件拆解并重新组装的方法。
本发明实施例进一步给出一种计算机可读存储介质,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如前所述的基于扫描系统的邮件拆解并重新组装的方法。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,实体机服务器,或者网络云服务器等,需安装windows或者windowsserver操作系统)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
1.一种基于扫描系统的邮件拆解并重新组装的方法,其特征在于,包括以下步骤:
步骤s101:到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
步骤s102:对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
步骤s103:从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
步骤s104:从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
2.如权利要求1所述的基于扫描系统的邮件拆解并重新组装的方法,其特征在于,所述自定义的remultipart方法获取参数的content属性,若参数的content属性为multipart类型,则以该multipart类型的content数据为参数,递归调用remultipart方法,直至读取到part类型数据。
3.如权利要求1所述的基于扫描系统的邮件拆解并重新组装的方法,其特征在于,所述步骤s104之后,还包括:
步骤s105:通过java连接邮件服务器进行组合后的邮件的投递,获取返回信息,若投递失败,则将投递失败的邮件信息存储到数据库中,等待定时任务以便重新进行投递。
4.如权利要求1所述的基于扫描系统的邮件拆解并重新组装的方法,其特征在于,到达邮件服务器的原邮件触发邮件拆解并重新组装操作的条件是,扫描系统扫描到原邮件包括预设关键字或命中敏感策略,则触发邮件拆解并重新组装操作。
5.一种基于扫描系统的邮件拆解并重新组装的装置,其特征在于,所述装置包括:
启动模块:配置为到达邮件服务器的原邮件触发邮件拆解并重新组装操作;
拆解模块:配置为对邮件eml文件执行卸载包裹操作;所述卸载包裹操作是将邮件eml文件作为message类型数据进行读取,并作为自定义的remultipart方法的参数,通过调用自定义的remultipart方法,读取到part类型数据;
获取信息模块:配置为从part类型数据中获取邮件的附件、正文,将读取到的附件、正文内容通过io流的方式存到硬盘中;
组装模块:配置为从硬盘中读取邮件的附件、正文;并将原邮件的关键信息添加至邮件正文中,创建一个java的mimemessage对象,为该mimemessage对象设置收件人、发件人及正文,在正文中设置对附件的引用,将附加添加到该mimemessage对象中,并设置与正文中对附件的引用相对应的标识,形成组合后的邮件;所述关键信息包括收件人、发件人及抄送人信息。
6.如权利要求5所述的基于扫描系统的邮件拆解并重新组装的装置,其特征在于,所述自定义的remultipart方法获取参数的content属性,若参数的content属性为multipart类型,则以该multipart类型的content数据为参数,递归调用remultipart方法,直至读取到part类型数据。
7.如权利要求5所述的基于扫描系统的邮件拆解并重新组装的装置,其特征在于,包括投递模块,配置为通过java连接邮件服务器进行组合后的邮件的投递,获取返回信息,若投递失败,则将投递失败的邮件信息存储到数据库中,等待定时任务以便重新进行投递。
8.如权利要求5所述的基于扫描系统的邮件拆解并重新组装的装置,其特征在于,到达邮件服务器的原邮件触发邮件拆解并重新组装操作的条件是,扫描系统扫描到原邮件包括预设关键字或命中敏感策略,则触发邮件拆解并重新组装操作。
9.一种基于扫描系统的邮件拆解并重新组装的系统,其特征在于,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如权利要求1-4之任一项所述的基于扫描系统的邮件拆解并重新组装的方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如权利要求1-4之任一项所述的基于扫描系统的邮件拆解并重新组装的方法。
技术总结