SMTP服务对命令流水的扩展

来源:asp之家 时间:2010-03-24 18:47:00 

1.摘要

本文主要定义了一种SMTP服务扩展,使用这种服务扩展服务器可以说明它在一个TCP发送操作中可以接收多少个指令。在一个TCP发送指令中使用多个操作可以大大提高系统的运行效率。

2.介绍

虽然SMTP服务已经广泛使用了,效果也不错,但是对它的扩展也是不可少的。如果某个网络需要很长时间进行连接,那SMTP运行的效果可就比较差了。SMTP的时间就费在等待一个个的命令上了。如果能够使SMTP客户端进行命令流水,也就是一次发送许多指令,就会提高运行效率。但以前的协议中没有说明这一条,客户无法知道服务器能够同时接收多少指令。因此产生了如下的一些问题:

连接过程中连接失控或缓冲区满;

在SMTP命令失败时清除TCP输入缓冲区,有时这是没有必要的;

对一些命令会不讲道理地判断它为失败,例如一些服务器如果在上一个REPTTO失败后会再不接收DATA命令,而不管RCPTTO之前的命令是不是成功,而有些服务器则可以在RCPTTO命令失败后接收DATA命令。

3.命令流水扩展框架

它的定义如下:

此服务扩展的名称为流水(Pipelining);

与EHLO相关联的扩展值是PIPELINING;

PIPELININGEHLO不再参数;

MAILFROM或RCPTTO命令不附加其它参数;

没有附加其它SMTP命令;

4.流水服务扩展

当客户机希望使用流水时,它会发送EHLO命令到服务器,如果服务器以250响应(其中的响应包括PIPELINING)就表明服务器支持SMTP服务流水。

4.1.客户使用流水

在客户知道服务器可以支持流水的时候,客户可以传输多个命令(称为命令组)到服务器,不用发送一条等待一下然后再发一条,特别的RSET,MAILFROM,SENDFROM,SOMLFROM,SAMLFROM和RCPTTO可以出现在命令组的任何地方。EHLO,DATA,VRFY,EXPN,TURN,QUIT和NOOP只能出现在命令组中的最后位置,因为它们成功与否将改变SMTP命令所处的状态。由其它SMTP扩展产生的命令只能出现在组中的最后位置。实际传送的命令可以是组中的第一个命令。

客户SMTP必须检查与组中据有相关的状态。假如RCPTTP接收地址未被接受,客户端必须检查DATA的状态,客户端不能假设因为没有RCPTTO是成功的所以DATA就会失败。假如DATA命令被正确拒绝,客户端可以发出RSET,假如DATA命令没有被正确拒绝,客户端要发出一个点(dot)。命令所产生的状态必须和分别发出每个命令时相同,必须支持多行(Multiline)响应。客户SMTP可以选择在非阻塞状态运行,它在接收到服务器的响应时立即处理,即使还有数据需要发送也不能推迟对响应的处理。假如不支持非阻塞状态,客户端必须检查TCP窗口的大小,TCP窗口的大小必须大于命令组的大小。窗口大小经常是4K,假如不能进行这样的检查,可能会导致死锁。

标签:SMTP,服务器,命令
0
投稿

猜你喜欢

  • 如何建立安全的ProFTPD应用经验谈

    2009-12-23 19:21:00
  • 使用web.config显示GoDaddy的windows主机的详细错误

    2010-04-08 12:46:00
  • 苹果iPhone恐被强制召回 欧盟警告态度强硬

    2009-09-30 07:26:00
  • 如何用命令行管理IIS的FTP站点

    2009-12-18 19:18:00
  • 如何将自己的网站加入到谷歌的资讯索引中

    2008-11-13 16:44:00
  • 美国主机godaddy空间使用的问题

    2010-04-12 13:02:00
  • 万维网之父:我清楚记得李彦宏十年前的演讲

    2008-04-25 22:45:00
  • 验证码的故事

    2010-08-09 12:48:00
  • 教你如何提高自身网站权重 网站形象推广

    2009-05-24 21:58:00
  • 百度知道测试转移分类权限 12日将正式发放

    2009-10-09 09:36:00
  • 网店推广十大免费方法

    2008-06-06 13:47:00
  • 构建安全服务器环境 阻止黑客攻击

    2009-09-20 20:19:00
  • Web站点的Win服务器安全解决方案

    2009-07-21 10:13:00
  • 网编为您解析做网站的心态

    2008-10-17 10:08:00
  • 阿里巴巴宣称攻克人才“定制化”百年难题

    2009-10-28 18:12:00
  • Discuz!+UCHome珠联璧合 搭建专业SNS平台

    2009-04-09 12:01:00
  • 用tar包配置高可用性vsftp (中)

    2007-08-28 13:47:00
  • IIS7下让你的wordpress完美的驱动wp-super-cache

    2011-10-14 20:35:33
  • 草根50天建站记录:第一天(连载)

    2009-02-10 18:33:00
  • 巧妙管理交换机 揪出害群之马ARP病毒

    2010-02-21 10:06:00
  • asp之家 网站运营 m.aspxhome.com