APP下载

基于James 的安全电子邮件系统设计与实现

2019-11-22文松王敏程虹

现代计算机 2019年29期
关键词:解密邮箱邮件

文松,王敏,程虹

(湖北文理学院计算机工程学院,襄阳441053)

0 引言

对于企业用户来说,使用自有电子邮件系统有助于提高企业信息安全水平,同时也更方便用于数据分析和对外展示良好的企业形象。James 是Apache 软件基金会发布的开源软件[1],提供了对基本邮件功能的支持,如POP3 协议、SMTP 协议、IMAP 协议、文件和数据库访问等功能[2],这种设计允许开发者能够快速开发出功能全面的邮件程序[3],可用于作为电子邮件系统的邮件服务器。但James 只有邮件系统功能,用户只能通过telnet 才能使用,显然不能满足企业需要。更重要的是,James 只实现了标准的邮件收发功能,邮件是明文保存,如果有黑客访问到了邮件数据,则企业机密面临暴露的风险。为此,基于James 设计并实现了带Web系统的加密电子邮件系统。

在文献[4]中,提出了一种能够应用于互联网的企业电子邮件系统。该系统实现了一个子系统,并且集成在企业原有信息化系统中,作为一个电子邮件的组件。文献[5]则采用James 邮件服务器直接部署邮件,还把常用的MySQL 数据库替换成了Oracle 数据库,以满足更高性能的要求。然而这些系统并没有考虑邮件加密问题。攻击者只要对James 有一定的了解,就可以将邮件拦截下来,经过简单的反编破解,就能获取邮件的原文信息。针对这些问题,基于James 的安全电子邮件系统的主要功能包括:

(1)电子邮件服务器,支持POP3 协议、SMTP 协议、IMAP 协议;

(2)电子邮件服务器支持对数据库和文件的访问,用以访问用户和邮件;

(3)系统采用B/S 结构,使用浏览器作为邮件收发的客户端;

(4)系统能够对电子邮件自动加密,黑客获取了电子邮件之后,无法解密。

1 电子邮件系统

1.1 功能设计

电子邮件系统主要包含网页前端用户操作请求以及后台对用户请求作出相应的请求响应服务二部分构成。功能模块主要分为:用户注册模块、用户登录模块、邮箱主界面模块以及用户注销模块四个大部分,其中用户邮箱主界面包含用户的所有业务逻辑流程项目。用户注册模块包括用户注册功能;用户登录模块包括用户登录功能;邮箱主界面模块包括用户信息、写邮件、收件箱、草稿箱、发件箱、已删除等功能;用户注销模块主要实现退出邮件系统,并清空所有用户浏览信息,已标记为删除的邮件此时会从服务器删除,无法恢复;后台服务主要是与浏览器的用户请求进行交互,处理用户请求的相关业务,并将处理的结果返回给用户。系统主要功能模块如图1 所示。

图1 系统主要功能模块图

1.2 数据库设计

由于James 支持MySQL 数据库,可以在MySQL 中保存用户、邮件等数据,因此需要在MySQL 中创建相应的表。但作为整个邮件系统而言,不应该允许邮件使用者直接操作这些表,而且有些邮件系统用户不一定会是邮件使用者,例如:系统管理员不应该把自己的管理账号直接作为邮件账号。因此,需要建立邮件系统的用户表,该表与James 所用的用户表应该区分开。根据这些要求,设计以下用表。

(1)邮箱用户信息表(users)

此表为James 邮件服务器使用的表,其中字段包括:username:为用户注册的邮箱账号用户名(不包括邮箱后缀,即邮件域名);pwdHash:为用户的密码,此密码为James 邮件服务器自动加密后的;pwdAlgorithm:加密算法;useForwarding:是否启用邮件转发;forwardDestination:邮件转发目的地;useAlias:为是否启用邮箱别名;alias:邮箱用户别名。

(2)用户基本信息表(user)

此表为用户的基本信息表,用以注册时填写注册信息,其中主要字段是username:为邮箱用户的账号名,既是本表的主键,也是users(邮箱用户信息表)的外键,另外还有一些用户个人信息。

(3)邮件详情表(inbox)

此表也是James 邮件服务器使用的数据表,其中字段包括:message_name:为一封邮件的消息名标识,是服务器上的一个唯一标识;repository_name:源名称,即消息来源的名称;message_state:消息状态,即消息所处于的权限状态;error_message:错误消息,在消息发送出错时,存储错误信息;sender:消息发送人;recipients:消息接受人;remote_host:远程主机,即邮件服务器的域名;remote_addr:远程地址,即邮件服务器的IP 地址;message_body:消息体,即整条消息的正文和附件等等主体内容;message_attributes:消息的属性,消息的各项属性信息即存在这项里面;last_updated:消息的上次更新时间,在每次对邮件信息进行修改之后,都会更新为当前时间。

(4)邮件标志表(mail_flag)

此表为邮件标志表,与inbox 一起关联查询区分邮件中的草稿邮件、删除邮件、已发送、已接收邮件等等。最主要的字段是message_name,为此表主键,也是inbox 表的外键,通过此键值相等来进行关联查询,获取相应的查询结果。

(5)邮件信息表(mail)

此表为后台邮件处理的信息表,从前端接收邮件信息然后经过后台加密和其他的一系列处理转化成James 邮件服务器能够发送的邮件,或是从James 邮件服务器中查找出来邮件,然后经过解码得到邮件详情存储在此表中,在传输到前台显示给用户查看。

(6)密钥表(rsakey)

此表为算法所生成密钥,用户在注册时,根据用户的用户名自动生成相应的公私钥,并存入此表。

1.3 数据库操作接口

根据系统中的各种业务逻辑处理,将业务层分为两大类,一类处理用户的基本信息,即登录、注册、更新个人信息等,另一大类为对用户邮件的处理,处理邮件的收发等等各项复杂的操作。根据这一思维逻辑,将各项数据库操作类进行了分类整理,更加有利于代码的分块和测试,降低了代码的耦合,加强了程序的功能模块化。各操作接口包括:①邮箱用户信息接口,用于操作James 邮件用户;②系统用户基本信息接口,用于操作邮件系统的使用者;③邮件详情接口,用于获取邮件信息;④邮件标志接口,用于操作邮件标志;⑤邮件信息接口,用于处理邮件内容;⑥邮件复杂处理接口,如邮件收条、草稿等。

2 加密功能

2.1 邮件加密及解密过程

邮件加密解密过程如图2 所示,用户将邮件编辑完成,点击发送按钮后,后台获取邮件信息,使用加密算法进行加密,然后将加密形成的密文存到邮件对象中并发送出去;解密则反过来,将密文使用加密过程中对应的解密算法进行解密,并将明文存入邮件,在添加到邮件集合传到前台显示给用户,这样只有在发送给用户浏览器之前才解密,攻击者即使攻击了邮件数据库,获取了邮件内容,依然无法正常查看邮件。系统提供RSA 和ECC 两种算法对邮件加密,也可以扩展为其他密码算法。

图2 邮件加密及解密过程图

2.2 系统加密实现

在系统启动之初,由管理员选择一种加密算法,系统启动成功后,系统会自动加载该配置来初始化系统。具体算法流程如图3 所示。

图3 邮件加密算法流程图

用户在注册时,系统自动根据用户的口令产生大数种子,由此大数种子来产生用户的公私钥,将其中的公钥保存在用户密钥信息表中,并将其发布出去,让所有此系统的用户知道,私钥由此用户私自保有,不为人知。

用户将邮件编辑完成后,提交到后台,然后通过业务层中的sendMail 方法获取前端传过来的邮件对象,并将除正文以外的信息存在邮件会话中,然后从数据库中取出用户的公私钥(用户的公私钥在用户注册的时候就已经自动生成),通过公钥将用户的邮件正文加密,再将其添加到邮件会话中,然后将邮件发送。

接收邮件时,recipientMail 方法首先获取James 邮件服务器中的“inbox”,从“inbox”中迭代出全部邮件,然后逐一对邮件正文进行解密。

3 结语

高效安全的电子邮件系统对于企业的业务开展有很重要的支持作用。为了满足中小企业对于电子邮件系统的多种需求(配置简单、价格低廉、安全稳定),基于James 的B/S 结构安全电子邮件系统非常适合中小企业使用。

通过为James 设计相应的Web 系统,使得对于James 的命令行操作转变为在浏览器上的图形化操作,非常简单易用。系统采用B/S 设计模式,Server 端主要是负责拦截用户的请求,并对用户请求进行解析,作出相应的业务处理和将处理的结果返回给浏览器。浏览器端主要是向Server 端发送请求和显示Server 响应的数据。浏览器端和服务器端之间交互的数据主要采用的是表单,可以一次性的将大量数据封装传输到服务器端,降低被拦截的风险。

在安全保密方面,使用了密码算法对邮件进行了加密保护,使得非法用户即使绕开Web 端入侵了服务器,获取了服务器上的邮件,也不能正常阅读,保护了企业秘密不致泄露,对于提高企业信息安全水平有很好的帮助。

猜你喜欢

解密邮箱邮件
关于变更投稿邮箱的通知
《电池》杂志投稿邮箱
关于变更投稿邮箱的通知
基于James的院内邮件管理系统的实现
解密电视剧 人世间
炫词解密
来自朋友的邮件
炫词解密
炫词解密
本刊重要启事