网站运营
位置:首页>> 网站运营>> SMTP服务扩展(2)

SMTP服务扩展(2)

 来源:asp之家 发布时间:2010-03-16 18:48:00 

标签:smtp,服务,命令

如果出于某种原因,服务器不能列出它所支持的服务扩展,就返回代码554。在接收到这个代码后,客户要么发送HELO,要么发送QUIT命令。有时候服务器接收到EHLO命令,可是命令参数不可接受,它就返回代码501。如果服务器识别了EHLO,但对服务器扩展未实现,则返回代码502。如果服务器不再提供服务扩展,则返回代码421。在接收到这个代码后,客户要么发送HELO,要么发送QUIT命令。如果服务器不支持服务扩展,则返回500,服务器保持现有状态,在接收到这个代码后,客户要么发送HELO,要么发送QUIT命令。

有时候,SMTP服务器会在接收到EHLO命令后因为某种原因关闭连接,这种情况在原来的SMTP协议标准中未涉及。为了处理这种情况,客户必须能够确认服务器是否能够工作,它可以重新连接并发送HELO或EHLO命令。有些服务器在接收到一个EHLO命令后会拒绝接收新的HELO命令,这时可以利用RSET命令重新启动,然后再发送HELO。如果客户不注意这样的小细节,会收到失败代码。

下面我们来看一下MAIL FROM和RCPT TO参数。许多服务扩展是在MAIL FROM和RCPT TO命令后加入一些参数来实现的。下面我们看一下这两个命令的格式:

 

esmtp-cmd ::= inner-esmtp-cmd [SP esmtp-parameters] CR LF

esmtp-parameters ::= esmtp-parameter *(SP esmtp-parameter)

esmtp-parameter ::= esmtp-keyword ["=" esmtp-value]

esmtp-keyword ::= (字母/数字) *(字母/数字/"-")

esmtp-value ::= 1*<除了空格,"="和控制字符的所有字符>

inner-esmtp-cmd ::= ("MAIL FROM:"返回路径) / ("RCPT TO:"转发路径)

如果服务器不能识别或实现一个或多个MAIL FROM或RCPT TO参数,它应该返回代码555。如果这种情况只是暂时的,服务器返回代码455。其它返回代码请查阅相关资料,这里不再详述了。服务器以服务扩展处理时,它处理的任何信息都应该在包头上加上“服务扩展标记”以示区别。

下面是一个例子:

(1) 双方交互:S是服务器,C是客户。

S: <等待连接在TCP端口25>

C: <连接到服务器>

S: 220 dbc.mtview.ca.us SMTP service ready

C: EHLO ymir.claremont.edu

S: 250 dbc.mtview.ca.us says hello

...

 

(2) 下面也是一个例子:

S: <等待连接在TCP端口25>

C: <连接到服务器>

S: 220 dbc.mtview.ca.us SMTP service ready

C: EHLO ymir.claremont.edu

S: 250-dbc.mtview.ca.us says hello

S: 250-EXPN

S: 250-HELP

S: 250-8BITMIME

S: 250-XONE

S: 250 XVRB

...

 

这说明服务器实现了服务扩展EXPN和HELP,这两个是标准的服务扩展,另外两个以X开头的是非标准的。

 

(3) 最后,我们来看看服务器不支持服务扩展时的情况:

S: <等待连接在TCP端口25>

C: <连接到服务器>

S: 220 dbc.mtview.ca.us SMTP service ready

C: EHLO ymir.claremont.edu

S: 500 Command not recognized: EHLO

...

代码500表示服务器不支持服务扩展。

0
投稿

猜你喜欢

手机版 网站运营 asp之家 www.aspxhome.com