SMTP服务对命令流水的扩展( 二 )


在响应的文本信息中应该表时这是对哪个命令进行的响应;
5.例子
下面是一个不支持流水的SMTP会话:其中S代表服务器,C代表客户端;
S:<等待打开连接>
C:<打开连接>
S:220innosoft.comSMTPserviceready
C:HELOdbc.mtview.ca.us
S:250innosoft.com
C:MAILFROM:
S:250senderOK
C:RCPTTO:
S:250recipientOK
C:RCPTTO:
S:250recipientOK
C:RCPTTO:
S:250recipientOK
C:DATA
S:354传输邮件内容,并以一个只有”.”的行结束邮件
...
C:.
S:250messagesent
C:QUIT
S:221goodbye
 
在上例中客户需要9次等待服务器的响应,下面我们来看看在支持流水的情况下是什么样子:其中S代表服务器,C代表客户端;
 
S:<等待打开连接>
C:<打开连接>
S:220innosoft.comSMTPserviceready
C:EHLOdbc.mtview.ca.us
S:250-innosoft.com
S:250PIPELINING
C:MAILFROM:
C:RCPTTO:
C:RCPTTO:
C:RCPTTO:
C:DATA
S:250senderOK
S:250recipientOK
S:250recipientOK
S:250recipientOK
S:354传输邮件内容,并以一个只有”.”的行结束邮件
...
C:.
C:QUIT
S:250messagesent
S:221goodbye
 
现在等待的次数由9次变为了4次,下面我们看一下当据有接收者均被拒绝时会是什么情况:
 
S:<等待打开连接>
C:<打开连接>
S:220innosoft.comSMTPserviceready
C:EHLOdbc.mtview.ca.us
S:250-innosoft.com
S:250PIPELINING
C:MAILFROM:
C:RCPTTO:
C:RCPTTO:
C:DATA
S:250senderOK
S:550remotemailtonotallowed
S:550remotemailtonotallowed
S:554novalidrecipientsgiven//未给出合法的接收者
C:QUIT
S:221goodbye
 
客户端也等待了4次,假如服务器在接收DATA命令当不检查接收者的合法性,则是下面的情况:
 
S:<等待打开连接>
C:<打开连接>
S:220innosoft.comSMTPserviceready
C:EHLOdbc.mtview.ca.us
S:250-innosoft.com
S:250PIPELINING
C:MAILFROM:
C:RCPTTO:
C:RCPTTO:
C:DATA
S:250senderOK
S:550remotemailtonotallowed
S:550remotemailtonotallowed
S:354传输邮件内容,并以一个只有”.”的行结束邮件
C:.
C:QUIT
S:554novalidrecipients//未给出合法的接收者
S:221goodbye


推荐阅读