📄 简单邮件传输协议.htm
字号:
<mailbox> ">"</P>
<P align=justify><a-d-l> ::= <at-domain> | <at-domain>
"," <a-d-l></P>
<P align=justify><at-domain> ::= "@" <domain></P>
<P align=justify><domain> ::= <element> | <element> "."
<domain></P>
<P align=justify><element> ::= <name> | "#" <number> |
"[" <dotnum> "]"</P>
<P align=justify><mailbox> ::= <local-part> "@"
<domain></P>
<P align=justify><local-part> ::= <dot-string> |
<quoted-string></P>
<P align=justify><name> ::= <a> <ldh-str>
<let-dig></P>
<P align=justify><ldh-str> ::= <let-dig-hyp> |
<let-dig-hyp> <ldh-str></P>
<P align=justify><let-dig> ::= <a> | <d></P>
<P align=justify><let-dig-hyp> ::= <a> | <d> | "-"</P>
<P align=justify><dot-string> ::= <字符串> | <字符串> "."
<dot-string></P>
<P align=justify><字符串> ::= <字符> | <字符> <字符串></P>
<P align=justify><quoted-string> ::= """ <qtext> """</P>
<P align=justify><qtext> ::= "\" <x> | "\" <x>
<qtext> | <q> | <q> <qtext></P>
<P align=justify><字符> ::= <c> | "\" <x></P>
<P align=justify><dotnum> ::= <snum> "." <snum> "."
<snum> "." <snum></P>
<P align=justify><number> ::= <d> | <d>
<number></P>
<P align=justify><CRLF> ::= <CR> <LF></P>
<P align=justify><CR> ::= 回车符(ASCII码13) <LF> ::=
(ASCII码10)</P>
<P align=justify><SP> ::= 空格(ASCII码32) <snum>
::=由一个,两个或三个数字组成的介于0-255之间的数字</P>
<P align=justify><a> ::= 所有A-Z的52个大小写英文字母</P>
<P align=justify><c> ::= 128个ASCII字符,但不包括空格和特殊字符</P>
<P align=justify><d> ::= 0-9数字</P>
<P align=justify><q> ::=不包括<CR>,<LF>,"或\的128个ASCII字符</P>
<P align=justify><x> ::=所有128个ASCII字符</P>
<P align=justify><special> ::= "<" | ">" | "(" | ")" | "[" |
"]" | "\" | "." | "," | ";" | ":" | "@" """ 或控制字符</P>
<P align=justify> </P>
<P align=justify>注意:
"\"是一个转意字符,它表示在其后的字符代表另外的意义。例如"Joe\,Smith"用于表示单独一个由逗号分隔的用户名。主机通常由转化为地址的名称代表。注意:域的名称元素是正式的名称,不能够使用昵称或假名。</P>
<P
align=justify>有时候名称的转变机制可能不知道主机,这就造成了通信的阻塞。为了解决这个问题,可以采取两种方法:一种方法是:在"#"后加入一个十进制数表示主机地址;另一种方法是在其后加入32位的IP地址,IP地址的形式是由句号分隔的四个介于0-255之间的十进制数。时间戳行和返回路径行的格式通常由下面定义:</P>
<P align=justify> </P>
<P align=justify><return-path-line> ::= "Return-Path:"
<SP><reverse-path><CRLF></P>
<P align=justify><time-stamp-line> ::= "Received:" <SP>
<stamp> <CRLF></P>
<P align=justify><stamp> ::= <from-domain> <by-domain>
<opt-info> ";" <daytime></P>
<P align=justify><from-domain> ::= "FROM" <SP> <域>
<SP></P>
<P align=justify><by-domain> ::= "BY" <SP> <域>
<SP></P>
<P align=justify><opt-info> ::= [<via>] [<with>]
[<id>] [<for>]</P>
<P align=justify><via> ::= "VIA" <SP> <连接>
<SP></P>
<P align=justify><with> ::= "WITH" <SP> <协议>
<SP></P>
<P align=justify><id> ::= "ID" <SP> <字符串> <SP></P>
<P align=justify><for> ::= "FOR" <SP> <路径>
<SP></P>
<P align=justify><连接> ::= 在网络信息中心注册的连接的标准名称</P>
<P align=justify><协议> ::= 在网络中心注册的协议的名称</P>
<P align=justify><daytime> ::= <SP> <日期> <SP>
<时间></P>
<P align=justify><日期> ::= <日> <SP> <月> <SP>
<年></P>
<P align=justify><时间> ::= <小时> ":" <分> ":" <秒>
<SP> <时区></P>
<P align=justify><dd> ::= 由一个或两个数字组成的每月1-31日</P>
<P align=justify><月> ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" |
"JUN" | "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"</P>
<P align=justify><年> ::= 由两位数字表示本世界的年代00-99</P>
<P align=justify><小时> ::= 每天的24小时,由0到24</P>
<P align=justify><分> ::= 每小时的分钟数0-59</P>
<P align=justify><秒> ::= 每分钟的秒数0-59</P>
<P align=justify><时区> ::= 全球标准时区</P>
<P align=justify> </P>
<P
align=justify>-------------------------------------------------------------</P>
<P align=justify>返回路径例子</P>
<P align=justify>Return-Path:
<@CHARLIE.ARPA,@BAKER.ARPA:JOE@ABLE.ARPA></P>
<P
align=justify>-------------------------------------------------------------</P>
<P align=justify> </P>
<P
align=justify>-------------------------------------------------------------</P>
<P align=justify>时间戳行例子</P>
<P align=justify>Received: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59
PDT</P>
<P align=justify> </P>
<P align=justify>Received: from ABC.ARPA by XYZ.ARPA via TELENET with
X25</P>
<P align=justify>id M12345 for Smith@PDQ.ARPA ; 22 OCT 81 09:23:59 PDT</P>
<P
align=justify>-------------------------------------------------------------</P>
<P align=justify> </P>
<P align=justify>4.2. SMTP响应</P>
<P
align=justify>对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。</P>
<P
align=justify>SMTP响应由三位数字组成,其后跟一些文本。数字帮助决定下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。在附录E中可以看到全部的响应码。正规的情况下,响应由下面序列构成:三位的数字,<SP>,一行文本和一个<CRLF>,或者也可以是一个多行响应。只有EXPN和HELP命令可以导致多行应答,然而,对所有命令,多行响应都是允许的。</P>
<P align=justify> </P>
<P align=justify>4.2.1. REPLY CODES BY FUNCTION GROUPS 500
格式错误,命令不可识别(此错误也包括命令行过长)</P>
<P align=justify>501 参数格式错误</P>
<P align=justify>502 命令不可实现</P>
<P align=justify>503 错误的命令序列</P>
<P align=justify>504 命令参数不可实现</P>
<P align=justify>211 系统状态或系统帮助响应</P>
<P align=justify>214 帮助信息</P>
<P align=justify>220 <domain> 服务就绪</P>
<P align=justify>221 <domain> 服务关闭传输信道</P>
<P align=justify>421 <domain>
服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)</P>
<P align=justify>250 要求的邮件操作完成</P>
<P align=justify>251 用户非本地,将转发向<forward-path></P>
<P align=justify>450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)</P>
<P align=justify>550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)</P>
<P align=justify>451 放弃要求的操作;处理过程中出错</P>
<P align=justify>551 用户非本地,请尝试<forward-path></P>
<P align=justify>452 系统存储不足,要求的操作未执行</P>
<P align=justify>552 过量的存储分配,要求的操作未执行</P>
<P align=justify>553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)</P>
<P align=justify>354 开始邮件输入,以<CRLF>.<CRLF>结束</P>
<P align=justify>554 操作失败</P>
<P align=justify> </P>
<P align=justify>4.3. 命令和应答序列</P>
<P
align=justify>发送者和接收者之间的通信是一问一答的交替对话形式,由发送者控制。这样,发送发出一条命令,接收者发出一个响应。接收者在发送下一条指令前必须等应答。一个重要的应答是连接应答。在连接完成时,接收者通常会发送220“服务就绪”。发送者在继续发送指令前会等待此应答。注意:每个连接应答必须拥有服务主机的正式名称作为第一部分,其后跟响应码。例如:</P>
<P align=justify> </P>
<P align=justify>220 <SP> USC-ISIF.ARPA <SP> Service ready
<CRLF></P>
<P align=justify> </P>
<P
align=justify>下面列出了成功和失败应答,这些应答必须遵守严格的次序,接收者可以不理会应答中的文本,但是由数字指定的意义和操作和命令应答序列不能更改。命令响应序列:</P>
<P
align=justify>每个命令列出了它可能的应答。使用在可能应答前的前缀“P”表示预备的(未用在SMTP中),“I”表示中间的,“S”表示成功,“F”表示失败,“E”表示错误。如果STMP接收者必须关闭信道,可以对任何命令作出421(服务不可用,关闭传输信道)响应。此表基于下面要讲述的状态图:</P>
<P align=justify> </P>
<P align=justify>CONNECTION ESTABLISHMENT(建立连接)</P>
<P align=justify>S: 220</P>
<P align=justify>F: 421</P>
<P align=justify>HELO</P>
<P align=justify>S: 250</P>
<P align=justify>E: 500, 501, 504, 421</P>
<P align=justify>MAIL</P>
<P align=justify>S: 250</P>
<P align=justify>F: 552, 451, 452</P>
<P align=justify>E: 500, 501, 421</P>
<P align=justify>RCPT S: 250, 251 F: 550, 551, 552, 553, 450, 451, 452 E:
500, 501, 503, 421</P>
<P align=justify>DATA</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -