smtp使用说明[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 900126 的 blog

reset (rset)

此命令指示当送邮件操作将被放弃。任何保存的发送者,接收者和邮件内容应该被抛弃,所有缓冲区和状态表应该被清除,接收方必须返回ok应答。

verify (vrfy)

此命令要求接收者确认参数是一个用户。如果这是(已经知道的)用户名,返回用户的全名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。

expand (expn)

此命令要求接收者确认参数指定了一个邮件发送列表,如果是一个邮件发送列表,就返回表中的成员。如果这是(已经知道的)用户名,返回用户的全名和指定的邮箱。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。

help (help)

此命令导致接收者向help命令的发送者发出帮助信息。此命令可以带参数,并返回特定的信息作为应答。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。

noop (noop)

此命令不影响任何参数和已经发出的命令。它只是说明没有任何操作而不是说明接收者发送了一个ok应答。此命令对回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区没有影响。

quit (quit)

此命令指示接收方必须发送ok应答然后关闭传送信道。接收方在接到quit命令并做出响应之前不应该关闭通信信道。发送方在发送quit命令和接收到响应之前也不应该关闭信道。即使出错,也不应该关闭信道。如果连接被提前关闭,接收方应该象接收到rset命令一样,取消所有等待的操作,但不恢复原先已经做过的操作。而发送方应该象接收到暂时错误(4xx)一样假定命令和操作仍在支持之中。

turn (turn)

此命令指定接收方要么发送ok应答并改变角色为发送smtp,要么发送拒绝信息并保持自己的角色。如果程序a现在是发送smtp,它发出turn命令后接收到ok(250)应答,它就变成了接收smtp。程序a就进入初始状态,好象通信信道刚打开一样,这时它发送220准备好服务信号。如果程序b现在是接收smtp,它发出turn命令后接收到ok(250)应答,它就变成了发送smtp。程序a就进入初始状态,好象通信信道刚打开一样,这时它准备接收220准备好服务信号。

若要拒绝改变角色,接收方可以发送502应答。

 

对于这些命令的顺序有一定的限制。对话的第一个命令必须是hello命令,此命令在此后的会话中也可以使用。如果hello命令的参数不可接受,必须由返回一个501失败应答,同时接收到的smtp必须保持在与刚才一致的状态下。 noop,help,expn和vrfy命令可以在会话的任何时候使用。mail,send,soml或saml命令开始一个邮件操作。一旦开始了以后就要发送rcpt和data命令。邮件操作可以由rset命令终止。在一个会话中可以有一个或多个操作。

如果在操作开始参数不可接受,必须返回501失败应答,同时接收到的smtp必须保持在与刚才一致的状态下。如果操作中的命令顺序出错,必须返回503失败应答,同时接收到的smtp必须保持在与刚才一致的状态下。

会话的最后一个命令必须是quit命令。此命令在会话的其它时间不能使用。

 

4.1.2. command语法格式

 

命令是由命令码和其后的参数域组成的。命令码是四个字母组成的,不区别大小写。因为下面的命令的作用是相同的:

mail mail mail mail mail

这对于引导任何参数值的标记也是适用的,如to和to就是一样的。命令码和参数由一个或多个空格分开。然而在回复路径和转发路径中的参数是区别大小写的。特别是在一些主机上,"smith"和"smith"就根本不是一个用户。

参数域由不定长的字符串组成,它由<crlf>结束,接收方在完全接收到此序列前不会采取任何行动。方括号代表可选的参数域。如果不选择的话,系统选择默认的设置。

下面是smtp命令: helo <sp> <domain> <crlf> mail <sp> from:<reverse-path> <crlf>

rcpt <sp> to:<forward-path> <crlf>

data <crlf>

rset <crlf>

send <sp> from:<reverse-path> <crlf>

soml <sp> from:<reverse-path> <crlf>

saml <sp> from:<reverse-path> <crlf>

vrfy <sp> <string> <crlf>

expn <sp> <string> <crlf>

help [<sp> <string>] <crlf>

noop <crlf>

quit <crlf>

turn <crlf>

 

上面参数域的格式在下面给bnf的格式给出,其中的"..."代表对于一个域的一次或多次的重复。

 

<reverse-path> ::= <path>

<forward-path> ::= <path>

<path> ::= "<" [ <a-d-l> ":" ] <mailbox> ">"

<a-d-l> ::= <at-domain> | <at-domain> "," <a-d-l>

<at-domain> ::= "@" <domain>

<domain> ::= <element> | <element> "." <domain>

<element> ::= <name> | "#" <number> | "[" <dotnum> "]"

<mailbox> ::= <local-part> "@" <domain>

<local-part> ::= <dot-string> | <quoted-string>

<name> ::= <a> <ldh-str> <let-dig>

<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>

<let-dig> ::= <a> | <d>

<let-dig-hyp> ::= <a> | <d> | "-"

<dot-string> ::= <字符串> | <字符串> "." <dot-string>

<字符串> ::= <字符> | <字符> <字符串>

<quoted-string> ::= """ <qtext> """

<qtext> ::= "\" <x> | "\" <x> <qtext> | <q> | <q> <qtext>

<字符> ::= <c> | "\" <x>

<dotnum> ::= <snum> "." <snum> "." <snum> "." <snum>

<number> ::= <d> | <d> <number>

<crlf> ::= <cr> <lf>

<cr> ::= 回车符(ascii码13) <lf> ::= (ascii码10)

本文关键:smtp 邮件 发送 服务
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top