设为首页 加入收藏
   
     
   
科技•信息
 
支持实时认证的SMTP网关
双击自动滚屏 发布者:admin 时间:2011-2-25 17:37:17 阅读:513次 【字体:

支持实时认证的SMTP网关

 

  摘 要:
  针对目前的SMTP网关无法进行身份验证,以及对邮件处理时延较大的问题,提出了一种实时处理的SMTP邮件网关,可以在邮件接收时,把交互命令发送到后台邮件服务器进行身份验证,并实时处理邮件内容,与非实时系统相比,减小了网关对邮件处理的时延。通过把socket读写队列用异步I/O方式并行化处理,避免了进程因网络时延而阻塞,对比结果显示异步方式比同步方式的系统吞吐量有显著提高。
  
  关键词:SMTP网关; 实时认证; 异步socket
  
  1. 引言
  
  随着邮件的应用越来越广泛,垃圾邮件的威胁越来越大,邮件过滤处理在组织结构中起着越来越重要的作用。邮件过滤一般采用以下几种方式:在邮件服务器端,客户端或者[1]基于其两者的邮件过滤系统;对于大型局域网内的多个邮件服务器,[2]一般采用SNMP协议及其MIB模型设计管理系统;对于本地没有邮件服务器的机构往往采用POP3网关方式,[3]给出了一种用POP3网关传输PGP加密邮件的架构;对一些机构,出于保护本地邮件服务器,一般采用SMTP网关方式。
  
  目前采用的SMTP网关一般用于接收邮件,然后把邮件转发给后台邮件服务器。网关在接收的过程中,无法对本地用户发送的邮件进行有效验证,只能在发送至邮件服务器时进行用户验证。因此大量假冒本地用户发送的邮件将使邮件网关负担沉重,邮件队列加大。并且,网关一般采用非实时方式,把邮件转储在磁盘上,然后进行过滤处理,处理完之后转发给邮件服务器。一旦邮件队列增大,邮件的处理有可能被无限推迟,而此时发送者并没有得到及时通知,不会重发邮件。本文提出的SMTP网关采用实时处理方式,在接收邮件的同时进行验证并发送邮件,发送不成功及时通知发送者。
  
  文章的组织如下:第一章提出系统网络部署,体系结构及SMTP协议在网关中的传输流程及用户验证的实现;第二章介绍异步I/O队列处理,并与同步方式做比较;第三章介绍网关测试并显示实验数据;第四章给出结论。
  
  2. 邮件网关体系结构
  
  图 1 整体为网关的网络部署。现行的邮件过滤系统大多并行接入网络,即邮件网关处于传输路径的旁路,其只对违规的电子邮件实行监听和后期截断并且不支持前台认证;本邮件网关选择串行接入的紧耦合方式,即将网关置于邮件传输的实际路径中。这种方式在减轻邮件服务器压力的同时,保护后台用户信息支持前台验证。
  
  该图方框内为邮件网关底层的传输结构。系统在其启动阶段对 25 端口进行侦听,当有MTA 或者用户与之连接时,则建立客户端与网关之间及网关与服务器之间的socket 通道进行SMTP 协议的交互及邮件内容的传输,待传输完毕后,放弃两个socket 连接。在此过程中本网关采用异步socket 并发处理多个连接,降低网络延迟对网关性能的影响,减少因超时等待而造成连接断开的可能性。该部分内容在本文的第三章进行详细的阐述。
  
  由于 SMTP 协议在双向通道上传输,并且对于MTA 进行最后的投递处理(服务器接收邮件)或是普通的客户发信处理不进行区分,因此图中两个接收socket 和两个发送socket在实现中为同一个。
  
  以客户端和后台邮件服务器的角度来说,网关是透明的,即透传 SMTP 协议中大部分命令和响应。同时,网关根据不同的用户需求及网络环境根据传输的信息进行实时处理。
  
  上图为正确流程的邮件网关状态机,实线部分是客户端命令和服务器端响应在网关上的实际交互流程,为了图示清晰,忽略大部分接受服务器响应的流程,用虚线代替实线的状态转换。同时,每个状态上的子环代表网关接收错误信息的处理。  
  
  这里以EHLO命令为例进一步说明网关对于SMTP协议的处理流程,当网关接收到由客户端发来的EHLO命令,首先将命令转发给后台邮件服务器并且进入等待状态(Waiting State);当网关收到服务器的正确响应则进入下一个命令的准备接收状态(EHLO State)。这里为了图示简洁没有详细给出若服务器响应其为错误信息的状态,在实现中,网关将返回到上一个状态,本例中为初始状态(Initial State),直到错误数达到一个最大值断开连接。若顺利的达到下一个状态,由于只接收验证命令,任何其它命令(Anything but AUTH )都最终导致返回相同的接收状态(EHLO State)直到网关接收正确命令(AUTH)。这里任何其它命令(Anything but AUTH )流程同样用虚线表示,说明要经过等待状态接收服务器响应然后再返回该状态。
  
  由于邮件网关采用实时处理连接,透传命令及响应的方式,因此可以及时进行用户的后台认证,防止伪造本地用户发信给邮件网关带来的处理负担。
  
  3. 异步socket处理在实时处理
  
  的过程中,一般使用同步方式处理每个邮件。以接收邮件为例,同步socket的处理流程为:
  
  1) 接收外部连接请求,建立接收socket(A)和发送socket(B)两个连接;
  2) 读A缓冲,执行SMTP状态机检查,确定处理函数,调用处理,将信息写到B;
  3) 进程阻塞,等待后台邮件服务器接收并响应;
  4) 读B缓冲,写到A;
  5) 进程阻塞,等待外部邮件服务器接收并响应,如果是 221 bye则转到6),否则返回到2);
  6) 断开连接。
  从过程可以看出,同步处理时,进程需要等待响应而造成阻塞,等待时间取决于网络时延和服务器的响应时间。[4]研究指出,当有大量用户连接时,网络延迟将占到整个邮件处理及转发时间的的40-55%。而在同步结构下,一个进程需要全程等待一个邮件的处理,因此性能较低。
  
  下面说明采用异步方式处理。建立两个队列,分别保存等待读和等待写的socket指针,两个哈希表,表A保存待读socket的处理函数,表B保存待写socket的buffer内容。如图3。
  
  读线程的处理过程为:
  
  1) 从待读socket队列中取出socket指针,如果是监听socket,则转到2),不是则转到3);
  2) 则建立一对socket,将发送socket放入待读队列,将初始处理函数写入哈希表A,返回1);
  3) 读该socket,查找哈希表A得到处理函数,处理后,将待写内容写入哈希表B,socket指针写入待写socket队列,如果接收到221 bye信息,转到4),否则返回1);
  4) 回收该socket,返回1)。
  
  写线程的处理过程为:
  
  1) 从待写socket队列中取出socket指针,查找哈希表B,取出待写内容,写入socket缓冲;
  2) 执行SMTP状态检查,如果该内容为QUIT则转到3),否则确定下一次的处理函数,把函数指针写入哈希表A,并把该socket指针写入待读队列,返回1);
  3) 回收该socket,返回1)。
  
  这样就屏蔽了网络的时延,避免了进程因等待响应而阻塞,可以很大的提高系统的吞吐量,使系统具有较强的并行处理能力。
  
  4. 邮件网关测试
  
  本测试在图4的网络环境下对网关进行测试。该环境下,邮件服务器的接收能力要大于邮件网关,并假定相同大小的邮件发送时间相同。
  
  在网络延迟测试中,SmartBitsD600B网络测试仪通过Avalanche测试软件顺序发送大小不同的邮件各一封,即每次发完一封收到后台服务器端发来的断开信息221 bye后,再发下一封邮件,记录每封邮件的处理时间。
  
  在每分钟最大收件数的测试中,利用SmartBitsD600B网络测试仪和Avalanche测试软件,分别测试系统一分钟内可以接收大小不同的邮件的最大量。为确保测试的合理性,每次测试中每秒增加的SMTP连接相同。
  
  在同步方式下,网关的处理方式就是完全处理一个连接后才能处理下一个连接,因此将发送一封邮件的时间与发送数量相乘即为发送该数量邮件所需时间,图5为在发送相同数量邮件的情况下,同步与异步方式的时间对比。
  
  由于邮件的处理时延等于两端的网络时延网关处理时延,而邮件的大小直接决定了网关对邮件的处理时间,因此,从图5中可以看出,邮件越小同步结构下所需延迟时间占总体处理时间越大,在异步结构下效果越明显。
  
  5. 结论
  
  本文采用了实时处理方式建立了SMTP网关,使网关可以进行认证。在相同的硬件平台上,假定非实时处理的邮件队列长度为零,实时邮件处理与非实时邮件处理的对比表明实时处理邮件比非实时处理的时延明显缩短,避免了因邮件队列过长而导致邮件长期得不到处理的情况。在使用异步socket读写之后,实验表明与同步方式相比,异步socket读写方式有明显的性能优势,并且邮件越小,异步方式的吞吐量优势越明显。

上一篇|下一篇

 相关评论

暂无评论

 发表评论
 昵称:
 评论内容:
 验证码:
  
打印本页 || 关闭窗口
 
 

咨询电话: 13891856539  欢迎投稿:gmlwfbzx@163.com  gmlwfb@163.com
617765117  243223901(发表)  741156950(论文写作指导)63777606     13891856539   (同微信)

All rights reserved 版权所有 光明论文发表中心 公司地址:西安市碑林区南大街169号-6
CopyRight ©  2006-2009  All Rights Reserved.


  制作维护:中联世纪  网站管理
访问 人次
国家信息产业部ICP备案:陕ICP备17019044号-1 网监备案号:XA12993