CN111124690A - 基于OpenMP线程优化的电子邮件服务器的安全分发方法 - Google Patents
基于OpenMP线程优化的电子邮件服务器的安全分发方法 Download PDFInfo
- Publication number
- CN111124690A CN111124690A CN202010000169.2A CN202010000169A CN111124690A CN 111124690 A CN111124690 A CN 111124690A CN 202010000169 A CN202010000169 A CN 202010000169A CN 111124690 A CN111124690 A CN 111124690A
- Authority
- CN
- China
- Prior art keywords
- thread
- user
- smtp
- daemon
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/001—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using chaotic signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于OpenMP线程优化的电子邮件服务器的安全分发方法,具体为:Part1,初始化OpenMP参数环境,进行系统参数设置,启动邮件服务守护进程,初始化SMTP队列和POP队列,建立邮件安全存储区。Part2,执行SMTP邮件接收线程,根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区。Part3,执行POP邮件获取线程,根据用户请求对邮件进行解密,发送邮件给客户。Part4,执行线程优化过程,根据系统环境动态自动调整优化方程参数。本发明能够实现安全地存储用户邮件,利用并行技术快速响应用户请求,达到邮件服务器系统优化,避免拥堵现象。
Description
技术领域
本发明属于并行计算,网络通信,信息安全领域,尤其涉及一种基于OpenMP线程优化的电子邮件服务器的安全分发方法。
背景技术
随着计算机技术和互联网的快速发展,电子信息对人们生活的影响越来越大。一个典型的例子就是邮局的纸质信件在逐年下降,随之而来的是电子邮件。
在互联网上,一台计算机主机作为电子邮件服务器,就像以前的邮局,人们通过可以联网的个人计算机或者移动终端把编辑好的文本形式的电子邮件,或者包含附件的电子邮件发送给电子邮件服务器,邮件服务器接收到用户发送来的电子邮件后,保存该电子邮件在服务器中,按照邮件的目的地址转发给对应的邮件服务器,对应的邮件服务器接收到电子邮件后,再通知收件人,当收件人接到通知后,即可下载电子邮件进行阅读。
电子邮件在给人们带来简洁、方便、快捷的同时,也存在着巨大的安全隐患。典型的例子就是震动美国朝野的“邮件门”事件。2015年3月,时任美国国务卿的希拉里承认在其任职期间使用私人邮箱处理了约6万封邮件,其中3万封因涉及私人生活已被其团队删除,剩余约3万封公务邮件已于2014年底全部上交国务院。
此后,美国国务院称联邦调查局在调查希拉里“邮件门”时发现了大量未被希拉里团队上交国务院的邮件,这些邮件涉及国家机密和安全等领域。2016年10月28日,美国联邦调查局(FBI)宣布重启对“邮件门”的调查,原因是联邦调查局在另一起与希拉里无关的调查中,发现了一些看起来与希拉里“邮件门”调查相关的新邮件。
2016年9月,美国互联网公司雅虎承认至少5亿用户的账户信息被黑客盗取,主要包括用户信息、电子邮箱等。由此可见,电子邮件的安全对于国家,企业和个人的重要性。
电子邮件服务器是主要的被攻击的对象,一般而言,在计算机主机或者服务器中对邮件服务器的保护主要是来自于对主机安全的考虑;通常加装防火墙和入侵检测系统防止黑客的入侵和非法用户的访问。而防火墙和入侵检测系统对于主机的通讯服务和流量等会产生一定程度的影响。例如:加装了防火墙之后,进出防火墙是服务器唯一的出口,这样就造成了瓶颈问题。对于大流量的服务器而言,会产生拥堵和延迟等不利影响。此外,防火墙等需要定期进行升级等维护,系统管理员需要具备一定的相关技能,无形中提高了维护的人力成本。
随着多核技术的成熟和普及,大量的服务器和主机,以及手机等使用了多核处理器,这为计算机的快速运行带来了便利;但是,也存在着技术难题。多核处理器能够实现并行计算必须采用并行程序设计模型,而目前广泛使用的还是串行设计方法。主要的原因是多方面的,首先是程序员不习惯于改变,特别是一些在学校中没有接受并行计算专业训练的程序员,很难去适应并行编程的环境;其次是并行编程相对于串行程序设计更难以驾驭,并行程序有时会莫名其妙地出现错误,难于调试和设计。如何提高计算机的效率,利用多核处理器的优势,应用并行程序设计模型是一个主要的技术问题。
OpenMP是由OpenMP Architecture Review Board提出,并已被广泛接受,用于共享内存并行系统的多处理器程序设计的一套指导性编译处理方案。OpenMP支持的编程语言包括:C语言,C++等。OpenMp提供了对并行算法高层的抽象描述,程序员通过在源代码中加入专用的pragma来指明代码并行,编译器可以自动将程序进行并行化,并在必要之处加入同步互斥以及通信。当选择忽略这些pragma,或者编译器不支持OpenMp时,程序又可以按照串行程序执行,因此,OpenMP具有很大的灵活性。OpenMP可以很大程度上降低程序员设计并行程序的要求,对于不熟悉并行设计的程序员而言,是一种折中的选择。
并行程序设计与串行程序设计的主要区别在于,串行程序在一个时间只有一条指令执行,而并行程序在一个时间可以有多条语句运行,程序运行的复杂度极大地增加了。但是,并行软件和并行计算的优势是明显的,在数据量巨大和任务达到一定规模时,并行计算会节省大量的程序运行和数据处理的时间。OpenMP具有接近串行程序设计的特点,有利于习惯串行设计程序的编程人员进行并行程序设计,降低了程序员设计和维护并行程序的难度。
发明内容
(一)要解决的技术问题
本发明的目的是提出一种基于OpenMP线程优化的电子邮件服务器的安全分发方法,使得电子邮件服务器能够安全存储和分发用户的电子邮件,免于非法用户的访问,以及利用OpenMP线程优化技术,增加电子邮件服务器的处理速度,并行地实现邮件分发,提高快速响应用户请求的目的。
(二)技术方案
为了解决上述技术问题,本发明提供了一种基于OpenMP线程优化的电子邮件服务器的安全分发方法,包括:
Part_1,初始化OpenMP参数环境,进行系统参数设置,启动邮件服务守护进程,初始化SMTP(简单邮件传输协议)队列和POP(邮局协议)队列,建立邮件安全存储区。
Part_2,执行SMTP邮件接收线程,根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区。
Part_3,执行POP邮件获取线程,根据用户请求对邮件进行解密,发送邮件给客户。
Part_4,执行线程优化过程,根据系统环境动态自动调整优化方程参数。
基于OpenMP线程优化的电子邮件服务器的安全分发方法的数据结构定义和基本过程定义如下:
(1)用户邮件信息控制块MailCB,用于存储用户邮件的基本信息,具体包括:
数据项1,用户邮件在系统中编号MailID,
数据项2,用户邮件头信息HeaderMail,
数据项3,用户邮件内容BodyMail,
数据项4,用户邮件附件UserAttachment,
数据项5,用户邮件寄件人地址SourceAdd,
数据项6,用户邮件收件人地址DestinationAdd,
数据项7,用户邮件紧急度EmergentDegree,
数据项8,用户邮件状态信息MailStatus,初始值为空,和分为已经阅读状态和未阅读状态。
(2)SMTP队列SMTPQueue,用于接收和转发用户发往目的地址邮件服务器的邮件,定义如下:
数据项1,SMTP队列头TopQ_SMTP,
数据项2,SMTP队列尾TailQ_SMTP,
数据项3,SMTP队列下一个结点指针NextQ_SMTP,
数据项4,路由目的服务器地址MailHost,
数据项5,用户邮件信息控制块MailCB。
(3)用户邮件列表UserMailList,存储用户的邮件列表信息,定义如下:
数据项1,表中序号IDatTab,
数据项2,用户邮件信息控制块MailCB,
数据项3,邮件数字证书DigLicence,
数据项4,文件位置指针FilePoint,初始值为空,
数据项5,其它信息OtherInfo。
(4)POP队列POPQueue,响应用户阅读邮件的请求,能够让用户从邮件服务器上把邮件下载到本地计算机,选择删除保存在邮件服务器上的该邮件,定义如下:
数据项1,用户账号UserID,初始值为空,
数据项2,用户邮件列表UserMailList,初始值为空,
数据项3,系统处理状态OP_PV,初始值为空,和分为未处理,正在处理和处理完毕状态,
数据项4,系统事物状态Sys_Transaction,初始值为空,和分为事物正常状态和事物异常状态,
数据项5,用户会话期状态UserSession,初始值为空,和分为在线和离线状态,用户需要在时间onlineTime内接受系统的反馈信息;当用户在时间onlineTime内响应邮件服务器的反馈,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线状态;如果用户在时间onlineTime内没有响应反馈,那么,关闭用户在POP3的连接端口和数据连接请求,设置用户会话期状态UserSession为离线状态,时间onlineTime的默认值由系统管理员设置,这样设置的目的在于当用户离开忘记关闭邮箱时,或者用户由于受到黑客重放攻击等时候,保证用户邮箱的安全,避免信息的泄露。
数据项6,用户登录状态UserLogIn,初始值为空,和分为用户登录和未登录状态,
数据项7,POP队列头TopQ_POP,
数据项8,POP队列尾TailQ_POP,
数据项9,POP队列下一个结点指针NextQ_POP。
(5)分段线性混沌方程lcm,定义如下:
如果0<lcm[i]<cp,则lcm[i+1]=lcm[i]/cp,
如果cp<lcm[i]<1,则lcm[i+1]=(1-lcm[i])/(1-cp);
其中,分段线性混沌方程迭代的时间序列lcm[i]中,i为正整数,初始迭代值为lcm[0]。cp为分段线性混沌方程的控制参数。
(6)加密/解密过程thread_EncryptMail,所述加密/解密过程属于对称加密算法,加密秘钥和解密秘钥相同,具体过程如下:
秘钥集合长度为512,Keys={k1,k2,…,ki,…,k512},
输入文本信息集合,Text_in={in_1,in_2,…,in_n},n为输入文本信息集合的元素个数;
输出文本信息集合,Text_out={out_1,out_2,…,out_n},
每个字节加密/解密过程为:out_i=ki异或in_i,i是指第i个数据,异或是指执行两个字节的异或运算。
当输入文本信息小于等于512字节时,利用Keys集合内的前n个秘钥实现加密/解密操作。当输入文本大于512字节时,每次处理输入文本的512字节数据,当剩余数据不足512字节时,利用Keys集合内的前n个秘钥实现剩余数据加密/解密过程。
(7)生成用户数字证书过程thread_GenLicence,具体过程如下:
数字证书长度512字节,分别设定分段线性混沌方程lcm_0,lcm_1,lcm_2,lcm_3和lcm_4;其中,当前的系统时间的时分秒转换为lcm_0的初始迭代值lcm[0]_0,当前用户邮件在系统中编号MailID数字化转换为lcm_0的控制参数cp_0,迭代分段线性混沌方程lcm_0,初始化迭代次数设定为1000次,迭代产生lcm_1,lcm_2,lcm_3和lcm_4的初始迭代值lcm[0]_1,lcm[0]_2,lcm[0]_3,lcm[0]_4和控制参数cp_1,cp_2,cp_3,cp_4。每个分段线性混沌方程进行初始化迭代1000次之后,迭代128次,产生128字节的数据,把四段128字节数据合并成为512字节的用户数字证书。
(8)优化方程,数学定义描述如下:
权重集合p定义为:p={p1,p2,…,pi,…,pn},其中,pi是权重集合的第i个元素,n是权重集合的元素总数。
权重集合p的元素满足:0<p1+p2+…+pn<=1。
权重集合的行分量形式记为:pm=[p1,p2,…,pn]。
矢向量em定义为[e1,e2,…,ej,…,en],其中,ej是矢向量em的第j个分量,n是矢向量em的分量总和。
矢向量em的转置向量记为:turn[em]。
优化方程的特征值ri计算公式为:
ri=pm*turn[em]*num
其中,num为优化方程的特征总量,当ri计算后为实小数时,对计算数值进行截尾取整。
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_1的具体过程描述如下:
Part_1实现功能为:初始化OpenMP参数环境,进行系统参数设置,启动邮件服务守护进程,初始化SMTP队列和POP队列,建立邮件安全存储区,具体为:
初始化OpenMP并行环境,测试、验证系统有效物理计算核心数量Num_PhyComCore和有效逻辑计算核心数量Num_LogicComCore,当物理计算核心数量Num_PhyComCore小于4时,没有达到系统物理计算核心的最低要求,结束本过程。当物理计算核心数量Num_PhyComCore大于等于4时,管理员设置逻辑计算核心数量Num_LogicComCore,Num_LogicComCore的数值需要大于等于10,获得操作系统版本和OpenMP版本信息。
启动邮件服务守护进程DaemonPro,邮件服务守护进程DaemonPro创建过程具体如下:
在操作系统中建立父进程FatherPro,在父进程中利用fork()创建子进程DaemonPro,强制结束父进程FatherPro,将其退出系统;在子进程DaemonPro中创建新会话setsid(),DaemonPro继承当前会话组的管理员,结束父进程FatherPro会话的控制,结束父进程FatherPro原进程组的控制,结束父进程FatherPro受控制终端的控制,改变当前目录为邮件服务目录区域,重新设定文件权限掩码umask(0);系统管理员利用fork()建立线程组ThreadGroup={thread_1,thread_2,…,thread_n},其中,n是系统管理员设置的线程组ThreadGroup中线程的总数,n需要大于等于逻辑计算核心数量Num_LogicComCore,初始化优化方程的特征值ri_thread_i的参数值,启动线程优化过程,实现线程的优化调度;打开监听端口,监听来自POP3服务器和SMTP服务器的网络端口,接收用户请求,实现对用户的邮件的接收和发送的管理过程;接收系统管理员手动设置参数和优化方程重置的请求,DaemonPro实现对线程的分配和回收管理过程。
初始化SMTP队列SMTPQueue,具体为:
在系统共享内存区建立SMTP队列头结点TopQ_SMTP和SMTP队列尾结点TailQ_SMTP,TailQ_SMTP结点的下一个结点指针NextQ_SMTP设置为空。SMTP队列头结点TopQ_SMTP的下一个结点指针NextQ_SMTP设置为TailQ_SMTP结点。SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的路由目的服务器地址MailHost设置为本地SMTP邮件服务器的地址,SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的用户邮件信息控制块MailCB设置为空。
初始化POP队列POPQueue,具体为:
在系统共享内存区建立POP队列头结点TopQ_POP和POP队列尾结点TailQ_POP,TailQ_POP结点的下一个结点指针NextQ_POP设置为空。POP队列头结点TopQ_POP的下一个结点指针NextQ_POP设置为TailQ_POP结点。POP队列头结点TopQ_POP和POP队列尾TailQ_POP结点的用户账号UserID,用户邮件列表UserMailList,系统处理状态OP_PV,系统事物状态Sys_Transaction,用户会话期状态UserSession,用户登录状态UserLogIn均初始化为空。
在系统共享内存区域根据当前邮件服务目录区建立邮件安全存储区。
邮件服务守护进程DaemonPro建立完毕。
Part_1具体过程描述完毕。
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_2的具体过程描述如下:
Part_2实现功能为:执行SMTP邮件接收线程,根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区,具体为:
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_SMTPlisten,线程thread_SMTPlisten继承线程组ThreadGroup中该空闲线程的优化方程的特征值ri的参数值。
线程thread_SMTPlisten的创建过程,具体为:
执行监听SMTP的用户邮件接收和转发过程,监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd,即用户邮件收件人地址DestinationAdd的邮件目的服务器地址不是本地邮件服务器地址LocalAdd,查询系统路由表中是否有该用户SMTP邮件目的服务器地址,如果系统路由表中存在网络地址OtherAdd,则转发用户SMTP邮件给该目的邮件服务器地址OtherAdd;如果系统路由表中没有网络地址OtherAdd,则把当前用户SMTP邮件通过SMTP协议进行转发,发送给默认邮件服务器路由地址。
线程thread_SMTPlisten保持监听,当守护进程DaemonPro中调用结束线程thread_SMTPlisten时,线程thread_SMTPlisten结束。
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行SMTP邮件接收线程thread_smtp,线程thread_smtp继承线程组ThreadGroup中该空闲线程的优化方程的特征值ri的参数值。
线程thread_smtp的创建过程,具体为:
监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd是本地邮件服务器地址LocalAdd,那么,在共享内存区申请新建用户邮件信息控制块MailCB结点,提取当前邮件信息,设置用户邮件在系统中编号MailID,初始化用户邮件头信息HeaderMail,用户邮件内容BodyMail,用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,初始化用户邮件状态信息MailStatus为空。
读取用户邮件紧急度EmergentDegree,每一个用户24小时之内只能具有一次权限设置紧急邮件,如果该邮件为紧急邮件,在SMTP队列头TopQ_SMTP后插入该邮件,否则在SMTP队列尾TailQ_SMTP插入该邮件,路由目的服务器地址MailHost设置为LocalAdd,用户邮件信息控制块MailCB设置为当前邮件结点。
当守护进程DaemonPro中调用结束线程thread_smtp时,线程thread_smtp结束;否则,线程thread_smtp监听来自SMTP网络端口的用户请求。
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_inMailProcess,线程thread_inMailProcess继承线程组ThreadGroup中该空闲线程的优化方程的特征值ri的参数值。
线程thread_inMailProcess的创建过程,具体为:
如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队一个结点,记为CurSMTP,在系统共享内存区申请新的用户邮件列表UserMailList结点,存储用户的新邮件信息,初始化表中序号IDatTab,在用户的总邮件数量上加1后设置IDatTab的值,添加用户邮件信息控制块MailCB。按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行生成用户数字证书过程thread_GenLicence,生成本邮件的数字证书DigLicence,释放线程CurThread,守护进程DaemonPro回收线程CurThread,加入线程组ThreadGroup中为空闲线程。
按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行加密/解密过程thread_EncryptMail,调用加密过程对用户邮件内容BodyMail和用户邮件附件UserAttachment进行加密,加密后的内容存储到文件位置指针FilePoint进行保存,在其它信息OtherInfo保存用户的SMTP邮件的其它信息。释放线程CurThread,守护进程DaemonPro回收线程CurThread,加入线程组ThreadGroup中为空闲线程。
在POP队列中查找用户账号UserID,如果没有该用户账号UserID,那么,申请新的结点POPQueue插入POP队列尾TailQ_POP;加入当前邮件在该结点用户邮件列表UserMailList中,设置系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态。
在POP队列中查找用户账号UserID,如果有该用户账号UserID,增加当前邮件在用户邮件列表UserMailList中,并设置新结点的系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态。
线程thread_inMailProcess查询SMTP队列,如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队下一个结点,进行下一个用户邮件处理过程,如果SMTP队列为空,线程thread_inMailProcess执行空等待。当守护进程DaemonPro中调用结束线程thread_inMailProcess时,线程thread_inMailProcess结束。
Part_2具体过程描述完毕。
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_3的具体过程描述如下:
Part_3实现功能为:执行POP邮件获取线程,根据用户请求对邮件进行解密,发送邮件给客户,具体为:
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_POPlisten,线程thread_POPlisten继承线程组ThreadGroup中该空闲线程的优化方程的特征值ri的参数值。
线程thread_POPlisten的创建过程,具体为:
当线程thread_POPlisten监听到POP3端口有用户获取邮件请求时,按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行用户登录身份验证thread_LogIn,如果用户是非法用户,则拒绝阅读邮件的请求;如果用户是合法用户,那么在POP队列POPQueue中查找用户账号UserID,在该用户账号UserID结点下的用户登录状态UserLogIn设置为登录状态。释放线程CurThread,守护进程DaemonPro回收线程CurThread,加入线程组ThreadGroup中为空闲线程。
如果POP队列POPQueue中当前用户账号UserID的用户登录状态UserLogIn为登录状态,接收用户的阅读邮件列表UserMailList的请求,设置系统处理状态OP_PV为正在处理。按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,CurThread执行线程thread_response读取用户选择的用户邮件列表UserMailList邮件信息,读取邮件数字证书DigLicence。在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread2,使用该数字证书对文件位置指针FilePoint的数据进行解密,并把解密后的数据添加到用户邮件信息控制块的对应位置,释放线程CurThread2,守护进程DaemonPro回收线程CurThread2,加入线程组ThreadGroup中为空闲线程。
封装用户邮件信息控制块MailCB的用户邮件头信息HeaderMail,已经解密的用户邮件内容BodyMail,已经解密的用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,其它信息OtherInfo发送给请求客户,当用户接收数据后,设置用户邮件状态信息MailStatus为已经阅读状态。
当用户选择删除邮件服务器中的该邮件时,删除该用户邮件信息控制块MailCB结点和在用户邮件列表UserMailList中删除表中序号IDatTab的邮件内容。
设置该结点系统处理状态OP_PV为处理完毕状态。
启动线程thread_UserSession检测该邮件的用户在时间onlineTime内的反馈信息,如果该用户响应反馈信息,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线。如果用户在时间onlineTime内没有反馈,设置用户会话期状态UserSession为离线状态。关闭用户在POP3的连接端口和数据连接过程。设置用户登录状态UserLogIn为未登录状态;设置用户系统事物状态Sys_Transaction为事物异常状态。当用户重新登录并再次进行阅读邮件请求时,设置用户登录状态UserLogIn为登录状态;设置用户系统事物状态Sys_Transaction为事物正常状态。
如果该结点系统处理状态OP_PV为处理完毕状态与用户系统事物状态Sys_Transaction为事物正常状态,该用户的阅读邮件列表的请求处理完毕,删除UserMailList中的该邮件结点,如果该用户的UserMailList为空,则在POP队列POPQueue中删除该结点。释放线程CurThread所对应线程thread_response,守护进程DaemonPro回收线程CurThread,加入线程组ThreadGroup中为空闲线程。
当守护进程DaemonPro中调用结束线程thread_POPlisten时,线程thread_POPlisten结束。
Part_3具体过程描述完毕。
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_4的具体过程描述如下:
Part_4实现功能为:执行线程优化过程,根据系统环境动态自动调整优化方程参数,具体为:
守护进程DaemonPro以TimeCheck时间作为一个周期,由系统管理员设置TimeCheck的值,初始值设置为30分钟,设并行系统任务总数为totalTask:
totalTask=Num[SMTPQ]+Num[POPQ]+Num[OtherMail]+totalNum[OtherProcess]
其中,Num[SMTPQ]是SMTP队列在一个周期内的接收本地邮件的数量,Num[POPQ]是POP队列在一个周期内的用户请求邮件数量,Num[OtherMail]是在一个周期内非本地邮件服务器的邮件数量,totalNum[OtherProcess]是在守护进程中的一个周期内线程组ThreadGroup中线程OtherProcess执行的最大数量。
设定线程组ThreadGroup={thread_1,thread_2,…,thread_i,…,thread_n}所对应的权重为pi_thread_i
线程thread_i的优化方程的特征值ri计算公式为:
ri_thread_i=pm*turn[em]* totalThread
其中,totalThread是在守护进程中可以利用的空闲线程总数。
初始化优化方程的pm的值,设定:
p1=p2=…= pn=1/n,n的值是系统管理员设定的线程总数。
经过周期tk后,pi的值变化为:
pi_tk= pi_value/totalTask
其中,pi_value是pi在totalTask中所占任务数量。
重新计算线程thread_i的优化方程的特征值为:
ri_thread_i_tk=pm_tk*turn[em]_tk* totalThread;
守护进程DaemonPro启动后,启动线程优化过程thread_OptimalProcess,具体为:
初始化优化方程的pm的值和矢向量em[e1,e2,…,ej,…,en]。
在守护进程DaemonPro的线程组ThreadGroup中,申请空闲线程thread_need需要满足的条件:
(1)当线程thread_need的并行执行数量大于等于线程thread_need对应的优化方程的特征值时,新的线程thread_need申请需要等待;
(2)当线程thread_need的并行执行数量小于线程thread_need对应的优化方程的特征值时,分配空闲线程给新的线程thread_need申请。
每经过一个周期时间TimeCheck,重新计算线程thread_i的优化方程的特征值为:
ri_thread_i_tk=pm_tk*turn[em]_tk* totalThread
更新线程thread_i的优化方程的特征值。
在一个周期结束时,系统管理员可以手动重新设定优化方程的pm的值和矢向量em[e1, e2,…, ej,…, en];如果系统管理员不进行设置,系统参数继承和进行周期更新。
当守护进程DaemonPro中调用结束线程thread_OptimalProcess时,线程thread_OptimalProcess结束。
Part_4具体过程描述完毕。
(二)有益效果
本发明的有益效果是:
(1)本发明利用OpenMP线程优化方法实现并行处理,能够快速响应用户的请求,通过线程的动态优化,对系统中出现的拥堵和不同用户的请求进行优化;同时,管理员也可以通过参数设置对关联的线程进行控制,能够灵活、方便管理员对系统进行优化控制,达到系统线程的优化目的。
(2)本发明利用分段线性混沌方程生成数字证书,对邮件关键内容进行加密处理,保证了邮件的安全,同时,在邮件服务器中,在共享内存建立获取邮件队列,对用户的新邮件进行缓冲处理,通过文件指针,存储加密数据,保证了邮件在服务器中的安全的同时,可以加快用户获取邮件的速度,通过并行处理的方法,大大提高了对用户请求响应的时间。此外,在用户操作中,使用了加强保护措施,实现用户在网络中断或者用户忘记退出时保证用户信息的安全。
(3)本发明设计了有利于并行处理的数据结构和在守护进程中加入线程动态申请和回收方法,能够有效避免在系统运行中的死锁,加速用户邮件的分发和存储管理等,极大地保障了在系统中并行处理的高效性。
附图说明
图1是基于OpenMP线程优化的电子邮件服务器的安全分发方法的结构图。
具体实施方式
下面结合附图和实施例对本发明的实施方式做进一步详细描述。以下实施例用于说明本发明,但不能用来限制发明的范围。
例子1:SMTP邮件接收过程
SMTP邮件接收过程根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区。
首先,获得系统信息,初始化OpenMP并行环境,测试系统有效物理计算核心数量Num_PhyComCore和有效逻辑计算核心数量Num_LogicComCore,管理员设置逻辑计算核心数量Num_LogicComCore等于20,获得操作系统版本和OpenMP版本信息。
在符合基本条件的情况下,启动邮件服务守护进程。守护进程是一个在操作系统中驻留后台运行的进程,它独立于控制终端,在操作系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行,守护进程必须以超级用户或者系统管理员,以及在超级用户组的管理员权限运行。
按照线程thread_SMTPlisten的优化方程的特征值执行线程thread_SMTPlisten。
当用户SMTP邮件目的服务器地址是本地邮件服务器地址,按照线程线程thread_smtp的优化方程的特征值执行线程thread_smtp。在共享内存区申请新建用户邮件信息控制块MailCB结点,提取当前邮件信息,设置用户邮件在系统中编号MailID,初始化用户邮件头信息HeaderMail,用户邮件内容BodyMail,用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,初始化用户邮件状态信息MailStatus为空。当前用户24小时之内已经具有一次紧急邮件,因此,不在受理该用户的紧急邮件请求。在SMTP队列尾TailQ_SMTP插入该邮件,路由目的服务器地址MailHost设置为LocalAdd,用户邮件信息控制块MailCB设置为当前邮件结点。
按照线程thread_inMailProcess的优化方程的特征值执行线程thread_inMailProcess。在SMTP队列SMTPQueue的TopQ_SMTP出队一个结点,在系统共享内存区申请新的用户邮件列表UserMailList结点,存储用户的新邮件信息,初始化表中序号IDatTab,在用户的总邮件数量上加1后设置IDatTab的值,添加用户邮件信息控制块MailCB。获得空闲线程,执行生成用户数字证书过程thread_GenLicence,生成本邮件的数字证书DigLicence,释放线程,守护进程回收线程。获得空闲进程执行加密thread_EncryptMail,调用加密过程对用户邮件内容BodyMail和用户邮件附件UserAttachment进行加密,加密后的内容存储到文件位置指针FilePoint进行保存,在其它信息OtherInfo保存用户的SMTP邮件的其它信息,释放线程,守护进程回收线程。
在POP队列中查找用户账号UserID,如果没有该用户账号UserID,那么,申请新的结点POPQueue插入POP队列尾TailQ_POP;加入当前邮件在该结点用户邮件列表UserMailList中,设置系统处理状态OP_PV为未处理和系统事物状态Sys_Transaction,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态。
当前SMTP队列不为空,继续执行线程thread_inMailProcess。
例子2:用户user@mymail.com提取邮件过程
首先,启动邮件服务守护进程。
按照线程thread_POPlisten的优化方程的特征值执行线程thread_POPlisten。
当用户user@mymail.com是合法用户登录后,在POP队列POPQueue中查找用户账号user@mymail.com,在该用户账号结点下的用户登录状态UserLogIn设置为登录状态,接收用户的阅读邮件列表UserMailList的请求,设置系统处理状态OP_PV为正在处理。按照线程thread_response的优化方程的特征值执行线程thread_response,读取用户选择的用户邮件列表UserMailList邮件信息,读取邮件数字证书DigLicence。使用该数字证书对文件位置指针FilePoint的数据进行解密,并把解密后的数据添加到用户邮件信息控制块的对应位置,释放线程,守护进程回收线程。
封装用户邮件信息控制块MailCB的用户邮件头信息HeaderMail,已经解密的用户邮件内容BodyMail,已经解密的用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,其它信息OtherInfo发送给请求用户,当用户接收数据后,设置用户邮件状态信息MailStatus为已经阅读,设置该结点系统处理状态OP_PV为处理完毕状态。
启动线程thread_UserSession,该用户在时间onlineTim=15分钟内响应反馈信息,设置用户会话期状态UserSession为在线。该结点系统处理状态OP_PV为处理完毕状态与用户系统事物状态Sys_Transaction为事物正常状态,该用户的阅读邮件列表的请求处理完毕,删除UserMailList中的该邮件结点。
线程thread_POPlisten继续接收其他用户的阅读邮件的请求。
例子3:执行线程优化过程
守护进程启动后,初始化系统最低进程数为num=20。
启动线程优化过程thread_OptimalProcess,初始化优化方程的pm的值,设定p1=p2=…=pn=0.1,
满足:0<p1+p2+…+pn<=1。
设定p1的矢向量em为[1,0,0,0,0,0,0,0,0,0];
设定p2的矢向量em为[0,1,0,0,0,0,0,0,0,0];
设定pm=[0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1];
设定thread_1为线程thread_inMailProcess,thread_2为thread_POPlisten。
线程thread_1的优化方程的特征值计算为:
ri_thread_1=pm*turn[em]* num=0.1*1*20=2;
线程thread_2的优化方程的特征值计算为:
ri_thread_2=pm*turn[em]* num=0.1*1*20=2;
按照优化方程的特征值,在优化过程thread_OptimalProcess中,线程thread_inMailProcess和thread_POPlisten只能申请1个线程进行并行处理。
守护进程DaemonPro以TimeCheck=30分钟时间作为一个周期,设并行系统任务总数为totalTask,
totalTask=Num[SMTPQ]+Num[POPQ]+Num[OtherMail]+totalNum[OtherProcess]
设定totalTask=20,totalThread=20。
经过一个TimeCheck后,Num[SMTPQ]=5和Num[POPQ]=10。
计算p1= pi_value/totalTask=Num[SMTPQ]/ totalTask=5/20=0.25;
计算p2= pi_value/totalTask =Num[POPQ]/ totalTask =10/20=0.5;
其它参数值继承,更新参数p1值后的pm=[0.25,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1];
p1的矢向量em继承为[1,0,0,0,0,0,0,0,0,0];
重新计算线程thread_1的优化方程的特征值为:
ri_thread_1_tk= pm*turn[em]* totalThread =0.25*1*20=5;
其它参数值继承,更新参数p2值后的pm=[0.25,0.5,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1];
p2的矢向量em继承为[0,1,0,0,0,0,0,0,0,0];
重新计算线程thread_2的优化方程的特征值为:
ri_thread_2_tk= pm*turn[em]* totalThread=0.5*1*20=10;
按照优化方程的特征值,在优化过程thread_OptimalProcess中,经过30分钟的周期,线程thread_inMailProcess能申请5个线程进行并行处理,而thread_POPlisten能申请10个线程进行并行处理。
这样的变化反映了系统中优化过程;显然,相对于队列SMTP,POP队列需要处理的业务更多,因此,为了达到优化的目的,更多的线程资源用于处理POP请求,以便快速处理用户的请求,加速了系统的处理速度。
线程thread_POPlisten中衍生执行线程thread_LogIn,为了能够实现它们的相互合作,快速处理POP的用户请求。设定totalThread=20,p1对应线程thread_POPlisten的权重,p2对应线程thread_LogIn的权重,设定p1=0.2,p2=0.1,pm=[0.2, 0.1]。
设定p1的矢向量em为[1, 1]。
计算线程thread_POPlisten的优化方程的特征值为:
ri_thread_1= pm*turn[em]*totalThread =(0.2*1+0.1*1)*20=6。
设定p2的矢向量em为[0, 0.5]。
计算线程thread_LogIn的优化方程的特征值为:
ri_thread_2=pm*turn[em]* num=(0.1*0.5)*20=1。
显然,该优化实现了POP队列的线程POPlisten的多进程快速、并行处理;但是,每一个用户ID只能获得一个线程thread_LogIn登录验证,限制了用户在进行大的邮件附件处理时,增加多线程下载对服务器造成的拥堵,实现服务器负载均衡。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (1)
1.一种基于OpenMP线程优化的电子邮件服务器的安全分发方法,其特征在于,包括:
Part_1,初始化OpenMP参数环境,进行系统参数设置,启动邮件服务守护进程,初始化SMTP(简单邮件传输协议)队列和POP(邮局协议)队列,建立邮件安全存储区,
Part_2,执行SMTP邮件接收线程,根据邮件的目的地址进行路由转发,对于目的地址是本地邮件服务器的邮件进行加密,存入邮件安全存储区,
Part_3,执行POP邮件获取线程,根据用户请求对邮件进行解密,发送邮件给客户,
Part_4,执行线程优化过程,根据系统环境动态自动调整优化方程参数;
基于OpenMP线程优化的电子邮件服务器的安全分发方法的数据结构定义和基本过程定义如下:
(1)用户邮件信息控制块MailCB,用于存储用户邮件的基本信息,具体包括:
数据项1,用户邮件在系统中编号MailID,
数据项2,用户邮件头信息HeaderMail,
数据项3,用户邮件内容BodyMail,
数据项4,用户邮件附件UserAttachment,
数据项5,用户邮件寄件人地址SourceAdd,
数据项6,用户邮件收件人地址DestinationAdd,
数据项7,用户邮件紧急度EmergentDegree,
数据项8,用户邮件状态信息MailStatus,初始值为空,和分为已经阅读状态和未阅读状态,
(2)SMTP队列SMTPQueue,用于接收和转发用户发往目的地址邮件服务器的邮件,定义如下:
数据项1,SMTP队列头TopQ_SMTP,
数据项2,SMTP队列尾TailQ_SMTP,
数据项3,SMTP队列下一个结点指针NextQ_SMTP,
数据项4,路由目的服务器地址MailHost,
数据项5,用户邮件信息控制块MailCB,
(3)用户邮件列表UserMailList,存储用户的邮件列表信息,定义如下:
数据项1,表中序号IDatTab,
数据项2,用户邮件信息控制块MailCB,
数据项3,邮件数字证书DigLicence,
数据项4,文件位置指针FilePoint,初始值为空,
数据项5,其它信息OtherInfo,
(4)POP队列POPQueue,响应用户阅读邮件的请求,实现让用户从邮件服务器上下载邮件到本地,选择删除保存在邮件服务器上的所请求邮件,定义如下:
数据项1,用户账号UserID,初始值为空,
数据项2,用户邮件列表UserMailList,初始值为空,
数据项3,系统处理状态OP_PV,初始值为空,和分为未处理,正在处理和处理完毕状态,
数据项4,系统事物状态Sys_Transaction,初始值为空,和分为事物正常状态和事物异常状态,
数据项5,用户会话期状态UserSession,初始值为空,和分为在线和离线状态,用户需要在时间onlineTime内接受系统的反馈信息,当用户在时间onlineTime内响应邮件服务器的反馈,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线状态,如果用户在时间onlineTime内没有响应反馈,那么,关闭用户在POP3的连接端口和数据连接请求,设置用户会话期状态UserSession为离线状态,时间onlineTime的初始值由系统管理员设置,
数据项6,用户登录状态UserLogIn,初始值为空,和分为用户登录和未登录状态,
数据项7,POP队列头TopQ_POP,
数据项8,POP队列尾TailQ_POP,
数据项9,POP队列下一个结点指针NextQ_POP,
(5)分段线性混沌方程lcm,定义如下:
如果0<lcm[i]<cp,则lcm[i+1]=lcm[i]/cp,
如果cp<lcm[i]<1,则lcm[i+1]=(1-lcm[i])/(1-cp),
其中,分段线性混沌方程迭代的时间序列lcm[i]中,i为正整数,初始迭代值为lcm[0],cp为分段线性混沌方程的控制参数,
(6)加密/解密过程thread_EncryptMail,所述加密/解密过程属于对称加密算法,加密秘钥和解密秘钥相同,具体过程如下:
秘钥集合长度为512,Keys={k1,k2,…,ki,…,k512},
输入文本信息集合,Text_in={in_1,in_2,…,in_n},n为输入文本信息集合的元素个数,
输出文本信息集合,Text_out={out_1,out_2,…,out_n},
每个字节加密/解密过程为:out_i=ki异或in_i,i是指第i个数据,异或是指执行两个字节的异或运算,
当输入文本信息小于等于512字节时,利用Keys集合内的前n个秘钥实现加密/解密操作,当输入文本大于512字节时,每次处理输入文本的512字节数据,当剩余数据不足512字节时,利用Keys集合内的前n个秘钥实现剩余数据加密/解密过程,
(7)生成用户数字证书过程thread_GenLicence,具体过程如下:
数字证书长度512字节,分别设定分段线性混沌方程lcm_0,lcm_1,lcm_2,lcm_3和lcm_4,其中,当前的系统时间的时分秒转换为lcm_0的初始迭代值lcm[0]_0,当前用户邮件在系统中编号MailID数字化转换为lcm_0的控制参数cp_0,迭代分段线性混沌方程lcm_0,初始化迭代次数设定为1000次,迭代产生lcm_1,lcm_2,lcm_3和lcm_4的初始迭代值lcm[0]_1,lcm[0]_2,lcm[0]_3,lcm[0]_4和控制参数cp_1,cp_2,cp_3,cp_4,每个分段线性混沌方程进行初始化迭代1000次之后,迭代128次,产生128字节的数据,把四段128字节数据合并成为512字节的用户数字证书,
(8)优化方程,数学定义描述如下:
权重集合p定义为:p={p1,p2,…,pi,…,pn},其中,pi是权重集合的第i个元素,n是权重集合的元素总数,
权重集合p的元素满足:0<p1+p2+…+pn<=1,
权重集合的行分量形式记为:pm=[p1,p2,…,pn],
矢向量em定义为[e1,e2,…,ej,…,en],其中,ej是矢向量em的第j个分量,n是矢向量em的分量总和,
矢向量em的转置向量记为:turn[em],
优化方程的特征值ri计算公式为:
ri=pm*turn[em]*num
其中,num为优化方程的特征总量,当ri计算后为实小数时,对计算数值进行截尾取整;
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_1的具体过程描述如下:
初始化OpenMP并行环境,测试、验证系统有效物理计算核心数量Num_PhyComCore和有效逻辑计算核心数量Num_LogicComCore,当物理计算核心数量Num_PhyComCore小于4时,没有达到系统物理计算核心的最低要求,结束本过程,当物理计算核心数量Num_PhyComCore大于等于4时,系统管理员设置逻辑计算核心数量Num_LogicComCore,Num_LogicComCore的数值需要大于等于10,获得操作系统版本和OpenMP版本信息,
启动邮件服务守护进程DaemonPro,邮件服务守护进程DaemonPro创建过程具体如下:
在操作系统中建立父进程FatherPro,在父进程中创建子进程DaemonPro,强制结束父进程FatherPro,将其退出系统,在子进程DaemonPro中创建新会话,DaemonPro继承当前会话组的管理员,结束父进程会话的控制,结束父进程FatherPro原进程组的控制,结束父进程受控制终端的控制,改变当前目录为邮件服务目录区域,重新设定文件权限掩码,系统管理员建立线程组ThreadGroup={thread_1,thread_2,…,thread_n},其中,n是系统管理员设置的线程组ThreadGroup中线程的总数,n需要大于等于逻辑计算核心数量Num_LogicComCore,初始化优化方程的特征值ri_thread_i的参数值,启动线程优化过程,实现线程的优化调度,打开监听端口,监听来自POP3服务器和SMTP服务器的网络端口,接收用户请求,实现对用户的邮件的接收和发送的管理过程,接收系统管理员手动设置参数和优化方程重置的请求,DaemonPro实现对线程的分配和回收管理过程,
初始化SMTP队列SMTPQueue,具体为:
在系统共享内存区建立SMTP队列头结点TopQ_SMTP和SMTP队列尾结点TailQ_SMTP,TailQ_SMTP结点的下一个结点指针NextQ_SMTP设置为空,SMTP队列头结点TopQ_SMTP的下一个结点指针NextQ_SMTP设置为TailQ_SMTP结点,SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的路由目的服务器地址MailHost设置为本地SMTP邮件服务器的地址,SMTP队列头结点TopQ_SMTP和SMTP队列尾TailQ_SMTP结点的用户邮件信息控制块MailCB设置为空,
初始化POP队列POPQueue,具体为:
在系统共享内存区建立POP队列头结点TopQ_POP和POP队列尾结点TailQ_POP,TailQ_POP结点的下一个结点指针NextQ_POP设置为空,POP队列头结点TopQ_POP的下一个结点指针NextQ_POP设置为TailQ_POP结点,POP队列头结点TopQ_POP和POP队列尾TailQ_POP结点的用户账号UserID,用户邮件列表UserMailList,系统处理状态OP_PV,系统事物状态Sys_Transaction,用户会话期状态UserSession,用户登录状态UserLogIn均初始化为空,
在系统共享内存区域根据当前邮件服务目录区建立邮件安全存储区,
邮件服务守护进程DaemonPro建立完毕,
Part_1具体过程描述完毕;
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_2的具体过程描述如下:
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_SMTPlisten,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,
线程thread_SMTPlisten的创建过程,具体为:
执行监听SMTP的用户邮件接收和转发过程,监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd,即用户邮件收件人地址DestinationAdd的邮件目的服务器地址不是本地邮件服务器地址LocalAdd,查询系统路由表中是否有该用户SMTP邮件目的服务器地址,如果系统路由表中存在网络地址OtherAdd,则转发用户SMTP邮件给该目的邮件服务器地址OtherAdd,如果系统路由表中没有网络地址OtherAdd,则把当前用户SMTP邮件通过SMTP协议进行转发,发送给默认邮件服务器路由地址,
线程thread_SMTPlisten保持监听,当守护进程DaemonPro中调用结束线程thread_SMTPlisten时,线程thread_SMTPlisten结束,
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行SMTP邮件接收线程thread_smtp,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,
线程thread_smtp的创建过程,具体为:
监听来自SMTP网络端口的用户请求,如果用户SMTP邮件目的服务器地址OtherAdd是本地邮件服务器地址LocalAdd,那么,在共享内存区申请新建用户邮件信息控制块MailCB结点,提取当前邮件信息,设置用户邮件在系统中编号MailID,初始化用户邮件头信息HeaderMail,用户邮件内容BodyMail,用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,初始化用户邮件状态信息MailStatus为空,
读取用户邮件紧急度EmergentDegree,每一个用户24小时之内具有一次权限设置紧急邮件,如果该邮件为紧急邮件,在SMTP队列头TopQ_SMTP后插入当前邮件,否则在SMTP队列尾TailQ_SMTP插入当前邮件,路由目的服务器地址MailHost设置为LocalAdd,用户邮件信息控制块MailCB设置为当前邮件结点,
当守护进程DaemonPro中调用结束线程thread_smtp时,线程thread_smtp结束,否则,所述线程监听来自SMTP网络端口的用户请求,
在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,执行线程thread_inMailProcess,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,
线程thread_inMailProcess的创建过程,具体为:
如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队一个结点,记为CurSMTP,在系统共享内存区申请新的用户邮件列表UserMailList结点,存储用户的新邮件信息,初始化表中序号IDatTab,在用户的总邮件数量上加1后设置IDatTab的值,添加用户邮件信息控制块MailCB,按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行生成用户数字证书过程thread_GenLicence,生成本邮件的数字证书DigLicence,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,
按照优化方程的特征值,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行加密/解密过程thread_EncryptMail,调用加密过程对用户邮件内容BodyMail和用户邮件附件UserAttachment进行加密,加密后的内容存储到文件位置指针FilePoint进行保存,在其它信息OtherInfo保存用户的SMTP邮件的其它信息,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,
在POP队列中查找用户账号UserID,如果没有该用户账号UserID,那么,申请新的结点POPQueue插入POP队列尾TailQ_POP,加入当前邮件在该结点用户邮件列表UserMailList中,设置系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态,
在POP队列中查找用户账号UserID,如果有该用户账号UserID,增加当前邮件在用户邮件列表UserMailList中,并设置新结点的系统处理状态OP_PV为未处理,设置系统事物状态Sys_Transaction为正常状态,初始化用户会话期状态UserSession为离线状态,初始化用户登录状态UserLogIn为未登录状态,
线程thread_inMailProcess查询SMTP队列,如果SMTP队列不为空,在SMTP队列SMTPQueue的TopQ_SMTP出队下一个结点,进行下一个用户邮件处理过程,如果SMTP队列为空,线程thread_inMailProcess执行空等待,当守护进程中调用结束线程thread_inMailProcess时,所述线程结束,
Part_2具体过程描述完毕;
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_3的具体过程描述如下:
在守护进程中选择线程组ThreadGroup中空闲线程,执行线程thread_POPlisten,所述线程继承线程组ThreadGroup中该空闲线程的优化方程的特征值的数值,
线程thread_POPlisten的创建过程,具体为:
当线程thread_POPlisten监听到POP3端口有用户获取邮件请求时,按照优化方程的特征值,在守护进程中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,线程CurThread执行用户登录身份验证thread_LogIn,如果用户是非法用户,则拒绝阅读邮件的请求,如果用户是合法用户,那么在POP队列POPQueue中查找用户账号UserID,在该用户账号UserID结点下的用户登录状态UserLogIn设置为登录状态,释放线程CurThread,守护进程回收线程CurThread,加入线程组ThreadGroup中为空闲线程,
如果POP队列POPQueue中当前用户账号UserID的用户登录状态UserLogIn为登录状态,接收用户的阅读邮件列表UserMailList的请求,设置系统处理状态OP_PV为正在处理,按照优化方程的特征值,在守护进程中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread,CurThread执行线程thread_response读取用户选择的用户邮件列表UserMailList邮件信息,读取邮件数字证书DigLicence,在守护进程DaemonPro中选择线程组ThreadGroup中空闲线程,如果当前线程组ThreadGroup中没有空闲线程,则等待,直到获得空闲线程CurThread2,使用该数字证书对文件位置指针FilePoint的数据进行解密,并把解密后的数据添加到用户邮件信息控制块的对应位置,释放线程CurThread2,守护进程回收线程CurThread2,加入线程组ThreadGroup中为空闲线程,
封装用户邮件信息控制块MailCB的用户邮件头信息HeaderMail,已经解密的用户邮件内容BodyMail,已经解密的用户邮件附件UserAttachment,用户邮件寄件人地址SourceAdd,用户邮件收件人地址DestinationAdd,用户邮件紧急度EmergentDegree,其它信息OtherInfo发送给请求客户,当用户接收数据后,设置用户邮件状态信息MailStatus为已经阅读状态,
当用户选择删除邮件服务器中的该邮件时,删除该用户邮件信息控制块MailCB结点和在用户邮件列表UserMailList中删除表中序号IDatTab的邮件内容,
设置该结点系统处理状态OP_PV为处理完毕状态,
启动线程thread_UserSession检测该邮件的用户在时间onlineTime内的反馈信息,如果该用户响应反馈信息,那么,时间onlineTim设置为0,设置用户会话期状态UserSession为在线,如果用户在时间onlineTime内没有反馈,设置用户会话期状态UserSession为离线状态,关闭用户在POP3的连接端口和数据连接过程,设置用户登录状态UserLogIn为未登录状态,设置用户系统事物状态Sys_Transaction为事物异常状态,当用户重新登录并再次进行阅读邮件请求时,设置用户登录状态UserLogIn为登录状态,设置用户系统事物状态Sys_Transaction为事物正常状态,
如果该结点系统处理状态OP_PV为处理完毕状态与用户系统事物状态Sys_Transaction为事物正常状态,该用户的阅读邮件列表的请求处理完毕,删除UserMailList中的该邮件结点,如果该用户的UserMailList为空,则在POP队列POPQueue中删除该结点,释放线程thread_response,守护进程回收所述线程,加入线程组ThreadGroup中为空闲线程,
当守护进程中调用结束线程thread_POPlisten时,线程thread_POPlisten结束,
Part_3具体过程描述完毕;
基于OpenMP线程优化的电子邮件服务器的安全分发方法的Part_4的具体过程描述如下:
守护进程以时间TimeCheck作为一个周期,系统管理员设置TimeCheck的值,初始值是30分钟,设并行系统任务总数为totalTask,
totalTask=Num[SMTPQ]+Num[POPQ]+Num[OtherMail]+totalNum[OtherProcess]
其中,Num[SMTPQ]是SMTP队列在一个周期内的接收本地邮件的数量,Num[POPQ]是POP队列在一个周期内的用户请求邮件数量,Num[OtherMail]是在一个周期内非本地邮件服务器的邮件数量,totalNum[OtherProcess]是在守护进程中的一个周期内线程组ThreadGroup中线程OtherProcess执行的最大数量,
设定线程组ThreadGroup={thread_1,thread_2,…,thread_i,…,thread_n}所对应的权重为pi_thread_i,线程thread_i的优化方程的特征值ri计算公式为:
ri_thread_i=pm*turn[em]* totalThread
其中,totalThread是在守护进程中当前空闲线程总数,初始化优化方程的pm的值,初始化为:
p1=p2=…= pn=1/n
其中,n的值是系统管理员设定的线程总数,经过周期tk后,pi的值变化为pi_tk:
pi_tk= pi_value/totalTask
其中,pi_value是pi在totalTask中所占任务数量,重新计算线程thread_i的优化方程的特征值为:
ri_thread_i_tk=pm_tk*turn[em]_tk* totalThread
守护进程启动后,启动线程优化过程thread_OptimalProcess,具体为:
初始化优化方程的pm的值和矢向量em[e1,e2,…,ej,…,en],在守护进程的线程组ThreadGroup中,申请空闲线程thread_need需要满足的条件:
(1)当线程thread_need的并行执行数量大于等于线程thread_need对应的优化方程的特征值时,新的线程thread_need申请需要等待,
(2)当线程thread_need的并行执行数量小于线程thread_need对应的优化方程的特征值时,分配空闲线程给新的线程thread_need申请,
每经过一个周期时间,重新计算线程thread_i的优化方程的特征值:
ri_thread_i_tk=pm_tk*turn[em]_tk* totalThread
更新线程thread_i的优化方程的特征值,在一个周期结束时,守护进程接受系统管理员手动重新设定优化方程的pm的值和矢向量em请求,如果系统管理员不进行手动设置,系统参数继承和进行自动周期更新,当守护进程中调用结束线程thread_OptimalProcess时,线程thread_OptimalProcess结束,
Part_4具体过程描述完毕。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010000169.2A CN111124690B (zh) | 2020-01-02 | 2020-01-02 | 基于OpenMP线程优化的电子邮件服务器的安全分发方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010000169.2A CN111124690B (zh) | 2020-01-02 | 2020-01-02 | 基于OpenMP线程优化的电子邮件服务器的安全分发方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124690A true CN111124690A (zh) | 2020-05-08 |
CN111124690B CN111124690B (zh) | 2023-06-23 |
Family
ID=70507244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010000169.2A Active CN111124690B (zh) | 2020-01-02 | 2020-01-02 | 基于OpenMP线程优化的电子邮件服务器的安全分发方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124690B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113242174A (zh) * | 2021-07-09 | 2021-08-10 | 太平金融科技服务(上海)有限公司深圳分公司 | 邮件同步方法、装置、计算机设备和存储介质 |
CN114697411A (zh) * | 2020-12-29 | 2022-07-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN115987693A (zh) * | 2023-03-21 | 2023-04-18 | 成都运荔枝科技有限公司 | 一种基于区块链的数据传输方法及系统 |
CN117135000A (zh) * | 2023-10-27 | 2023-11-28 | 深圳鼎智通讯有限公司 | 一种pos机动态数据远程管理方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
US20130247034A1 (en) * | 2012-03-16 | 2013-09-19 | Rackspace Us, Inc. | Method and System for Utilizing Spare Cloud Resources |
CN103532739A (zh) * | 2013-09-25 | 2014-01-22 | 上海斐讯数据通信技术有限公司 | 一种基于网络服务与应用的监控分析系统 |
CN103729241A (zh) * | 2013-12-12 | 2014-04-16 | 华中科技大学 | 一种多核环境下OpenMP任务并行的优化方法 |
CN107015861A (zh) * | 2016-11-07 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法 |
US20170337080A1 (en) * | 2016-05-23 | 2017-11-23 | Microsoft Technology Licensing, Llc | Secure Data Onboarding Agent Network |
US20190079928A1 (en) * | 2017-09-14 | 2019-03-14 | Commvault Systems, Inc. | Distributed architecture for content indexing emails |
US20190140892A1 (en) * | 2017-11-06 | 2019-05-09 | Vignet Incorporated | Context based notifications using multiple processing levels in conjunction with queuing determined interim results in a networked environment |
CN110147269A (zh) * | 2019-05-09 | 2019-08-20 | 腾讯科技(上海)有限公司 | 一种事件处理方法、装置、设备及存储介质 |
-
2020
- 2020-01-02 CN CN202010000169.2A patent/CN111124690B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130247034A1 (en) * | 2012-03-16 | 2013-09-19 | Rackspace Us, Inc. | Method and System for Utilizing Spare Cloud Resources |
CN102681889A (zh) * | 2012-04-27 | 2012-09-19 | 电子科技大学 | 一种云计算开放平台的调度方法 |
CN103532739A (zh) * | 2013-09-25 | 2014-01-22 | 上海斐讯数据通信技术有限公司 | 一种基于网络服务与应用的监控分析系统 |
CN103729241A (zh) * | 2013-12-12 | 2014-04-16 | 华中科技大学 | 一种多核环境下OpenMP任务并行的优化方法 |
US20170337080A1 (en) * | 2016-05-23 | 2017-11-23 | Microsoft Technology Licensing, Llc | Secure Data Onboarding Agent Network |
CN107015861A (zh) * | 2016-11-07 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法 |
US20190079928A1 (en) * | 2017-09-14 | 2019-03-14 | Commvault Systems, Inc. | Distributed architecture for content indexing emails |
US20190140892A1 (en) * | 2017-11-06 | 2019-05-09 | Vignet Incorporated | Context based notifications using multiple processing levels in conjunction with queuing determined interim results in a networked environment |
CN110147269A (zh) * | 2019-05-09 | 2019-08-20 | 腾讯科技(上海)有限公司 | 一种事件处理方法、装置、设备及存储介质 |
Non-Patent Citations (4)
Title |
---|
BRICE VIDEAU: ""PaSTeL: Parallel Runtime and Algorithms for Small Datasets"", 《2009 INTERNATIONAL CONFERENCE ON COMPLEX, INTELLIGENT AND SOFTWARE INTENSIVE SYSTEMS》 * |
CLININLPER: ""OpenMP实现生产者消费者问题"", 《HTTPS://ZHUANLAN.ZHIHU.COM/P/88808969》 * |
王希忠: ""基于MPI的分段线性混沌映射加密算法的研究"", 《中国博士学位论文全文数据库 信息科技辑》 * |
章慧鸣: ""基于OpenMP和线程优化的多核线性混沌加密算法的研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114697411A (zh) * | 2020-12-29 | 2022-07-01 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、服务器及存储介质 |
CN113242174A (zh) * | 2021-07-09 | 2021-08-10 | 太平金融科技服务(上海)有限公司深圳分公司 | 邮件同步方法、装置、计算机设备和存储介质 |
CN113242174B (zh) * | 2021-07-09 | 2021-11-09 | 太平金融科技服务(上海)有限公司深圳分公司 | 邮件同步方法、装置、计算机设备和存储介质 |
CN115987693A (zh) * | 2023-03-21 | 2023-04-18 | 成都运荔枝科技有限公司 | 一种基于区块链的数据传输方法及系统 |
CN115987693B (zh) * | 2023-03-21 | 2023-06-13 | 成都运荔枝科技有限公司 | 一种基于区块链的数据传输方法及系统 |
CN117135000A (zh) * | 2023-10-27 | 2023-11-28 | 深圳鼎智通讯有限公司 | 一种pos机动态数据远程管理方法及系统 |
CN117135000B (zh) * | 2023-10-27 | 2024-02-02 | 深圳鼎智通讯有限公司 | 一种pos机动态数据远程管理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111124690B (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124690A (zh) | 基于OpenMP线程优化的电子邮件服务器的安全分发方法 | |
US11921905B2 (en) | Secure collaboration between processors and processing accelerators in enclaves | |
US10516623B2 (en) | Pluggable allocation in a cloud computing system | |
US20180352000A1 (en) | Protecting content from third party using client-side security protection | |
US9461819B2 (en) | Information sharing system, computer, project managing server, and information sharing method used in them | |
Yan et al. | Confidentiality support over financial grade consortium blockchain | |
US9197611B2 (en) | Topic protection policy for publish-subscribe messaging system | |
CN102411693A (zh) | 虚拟机的继承产品激活 | |
US12003488B2 (en) | Protecting cloud application secret key with multi-party computation algorithm | |
US8990398B1 (en) | Systems and methods for processing requests for network resources | |
CN116940931A (zh) | 使用谓词的字符串自动推理的分布式分解 | |
US11556839B1 (en) | Auditing system for machine learning decision system | |
Mofrad et al. | Securing big data scientific workflows via trusted heterogeneous environments | |
CN111163056B (zh) | 一种针对MapReduce计算的数据保密方法及系统 | |
Yu et al. | Formal Specification of Trusted Execution Environment APIs | |
Gutmann | The design and verification of a cryptographic security architecture | |
CN115495767B (zh) | 虚拟会话方法、装置、电子设备及计算机可读存储介质 | |
Karp et al. | The client utility architecture: the precursor to E-speak | |
US20220116403A1 (en) | Telemetry restriction mechanism | |
US20230403146A1 (en) | Smart round robin delivery for hardware security module host requests | |
Ma et al. | BiTDB: Constructing A Built-in TEE Secure Database for Embedded Systems | |
Dong et al. | PM-IUBC: A P2P and MongoDB based Intranet User Behavior Control System. | |
Ingosan et al. | Research on Decentralized Trusted Data Sharing Technology Based on Blockchain. | |
US7703131B1 (en) | Secured distributed impersonation | |
CN118473730A (zh) | 一种电力物联终端网络风险行为识别方法、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |