科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道SMTP协议RFC文档中文版

SMTP协议RFC文档中文版

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

VERF和EXPN命令的字符串命令参数因为具体实现的不同而不能再加以限制了。在一些系统上,EXPN命令的参数可能是一个包含邮件列表的文件名,但是在Internet上有许多不同的文件结构。

作者:中国IT实验室 来源:中国IT实验室 2009年7月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共5页)

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

   ::=

   ::=

   ::= "<" [ ":" ] ">"

   ::= | ","

   ::= "@"

   ::= | "."

   ::= | "#" | "[" "]"

   ::= "@"

   ::= |

   ::=

   ::= |

   ::= |

   ::= | | "-"

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

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

   ::= """ """

   ::= "\" | "\" | |

  <字符> ::= | "\"

   ::= "." "." "."

   ::= |

   ::=

   ::= 回车符(ASCII码13) ::= (ASCII码10)

   ::= 空格(ASCII码32) ::=由一个,两个或三个数字组成的介于0-255之间的数字

   ::= 所有A-Z的52个大小写英文字母

   ::= 128个ASCII字符,但不包括空格和特殊字符

   ::= 0-9数字

   ::=不包括,"或\的128个ASCII字符

   ::=所有128个ASCII字符

   ::= "<" | ">" | "(" | ")" | "[" | "]" | "\" | "." | "," | ";" | ":" | "@" """ 或控制字符

  注意: "\"是一个转意字符,它表示在其后的字符代表另外的意义。例如"Joe\,Smith"用于表示单独一个由逗号分隔的用户名。主机通常由转化为地址的名称代表。注意:域的名称元素是正式的名称,不能够使用昵称或假名。

  有时候名称的转变机制可能不知道主机,这就造成了通信的阻塞。为了解决这个问题,可以采取两种方法:一种方法是:在"#"后加入一个十进制数表示主机地址;另一种方法是在其后加入32位的IP地址,IP地址的形式是由句号分隔的四个介于0-255之间的十进制数。时间戳行和返回路径行的格式通常由下面定义:

   ::= "Return-Path:"

   ::= "Received:"

   ::= ";"

   ::= "FROM" <域>

   ::= "BY" <域>

   ::= [] [] [] []

   ::= "VIA" <连接>

   ::= "WITH" <协议>

   ::= "ID" <字符串>

   ::= "FOR" <路径>

  <连接> ::= 在网络信息中心注册的连接的标准名称

  <协议> ::= 在网络中心注册的协议的名称

   ::= <日> <时间>

  <日期> ::= <日> <月> <年>

  <时间> ::= <小时> ":" <分> ":" <秒> <时区>

  

::= 由一个或两个数字组成的每月1-31日

  <月> ::= "JAN" | "FEB" | "MAR" | "APR" | "MAY" | "JUN" | "JUL" | "AUG" | "SEP" | "OCT" | "NOV" | "DEC"

  <年> ::= 由两位数字表示本世界的年代00-99

  <小时> ::= 每天的24小时,由0到24

  <分> ::= 每小时的分钟数0-59

  <秒> ::= 每分钟的秒数0-59

  <时区> ::= 全球标准时区

  返回路径例子

  Return-Path: <@CHARLIE.ARPA,@BAKER.ARPA:JOE@ABLE.ARPA>

  时间戳行例子

  Received: FROM ABC.ARPA BY XYZ.ARPA ; 22 OCT 81 09:23:59 PDT

  Received: from ABC.ARPA by XYZ.ARPA via TELENET with X25

  id M12345 for Smith@PDQ.ARPA ; 22 OCT 81 09:23:59 PDT

  4.2. SMTP响应

  对SMTP命令的响应是多样的,它确定了在邮件传输过程中请求和处理的同步,也保证了发送SMTP知道接收SMTP的状态。每个命令必须有且只有一个响应。

  SMTP响应由三位数字组成,其后跟一些文本。数字帮助决定下一个应该进入的状态,而文本对人是有意义的。三位的响应已经包括了足够的信息,不用再阅读文本,文本可以直接抛弃或者传递给用户。特别的是,文本是与接收和环境相关的,所以每次接收到的文本可能不同。在附录E中可以看到全部的响应码。正规的情况下,响应由下面序列构成:三位的数字,,一行文本和一个,或者也可以是一个多行响应。只有EXPN和HELP命令可以导致多行应答,然而,对所有命令,多行响应都是允许的。

  4.2.1. REPLY CODES BY FUNCTION GROUPS 500 格式错误,命令不可识别(此错误也包括命令行过长)

  501 参数格式错误

  502 命令不可实现

  503 错误的命令序列

  504 命令参数不可实现

  211 系统状态或系统帮助响应

  214 帮助信息

  220 服务就绪

  221 服务关闭传输信道

  421 服务未就绪,关闭传输信道(当必须关闭时,此应答可以作为对任何命令的响应)

  250 要求的邮件操作完成

  251 用户非本地,将转发向

  450 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)

  550 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到,或不可访问)

  451 放弃要求的操作;处理过程中出错

  551 用户非本地,请尝试

  452 系统存储不足,要求的操作未执行

  552 过量的存储分配,要求的操作未执行

  553 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)

  354 开始邮件输入,以.结束

  554 操作失败

  4.3. 命令和应答序列

  发送者和接收者之间的通信是一问一答的交替对话形式,由发送者控制。这样,发送发出一条命令,接收者发出一个响应。接收者在发送下一条指令前必须等应答。一个重要的应答是连接应答。在连接完成时,接收者通常会发送220"服务就绪"。发送者在继续发送指令前会等待此应答。注意:每个连接应答必须拥有服务主机的正式名称作为第一部分,其后跟响应码。例如:

  220 USC-ISIF.ARPA Service ready

  下面列出了成功和失败应答,这些应答必须遵守严格的次序,接收者可以不理会应答中的文本,但是由数字指定的意义和操作和命令应答序列不能更改。命令响应序列:

  每个命令列出了它可能的应答。使用在可能应答前的前缀"P"表示预备的(未用在SMTP中),"I"表示中间的,"S"表示成功,"F"表示失败,"E"表示错误。如果STMP接收者必须关闭信道,可以对任何命令作出421(服务不可用,关闭传输信道)响应。此表基于下面要讲述的状态图:

  CONNECTION ESTABLISHMENT(建立连接)

  S: 220

  F: 421

  HELO

  S: 250

  E: 500, 501, 504, 421

  MAIL

  S: 250

  F: 552, 451, 452

  E: 500, 501, 421

  RCPT S: 250, 251 F: 550, 551, 552, 553, 450, 451, 452 E: 500, 501, 503, 421

  DATA

  I: 354 -> data -> S: 250

  F: 552, 554, 451, 452

  F: 451, 554

  E: 500, 501, 503, 421

  RSET

  S: 250

  E: 500, 501, 504, 421

  SEND

  S: 250

  F: 552, 451, 452

  E: 500, 501, 502, 421

  SOML

  S: 250

  F: 552, 451, 452

  E: 500, 501, 502, 421

  SAML

  S: 250

  F: 552, 451, 452

  E: 500, 501, 502, 421

  VRFY

  S: 250, 251

  F: 550, 551, 553

  E: 500, 501, 502, 504, 421

  EXPN

  S: 250

  F: 550

  E: 500, 501, 502, 504, 421

  HELP

  S: 211, 214

  E: 500, 501, 502, 504, 421

  NOOP

  S: 250

  E: 500, 421

  QUIT

  S: 221

  E: 500

  TURN

  S: 250

  F: 502

  E: 500, 503

  4.4. 状态图

  下面状态图是一个简单的SMTP实现,每一组命令都有一个状态图。在图中,只使用了响应码的第一位数字作为响应的代表。命令组是对每个命令建立模式然后以结构模式将命令集中起来的。对于每个命令有三种可能的应答:成功(S),失败(F)和错误(E)。在状态中,我们使用B代表开始,使用W代表等待应答。

  此状态图使用了如下命令:HELO, MAIL, RCPT, RSET, SEND, SOML, SAML, VRFY, EXPN, HELP, NOOP, QUIT, TURN.

  下面是对于DATA命令的更复杂的状态图:

  注意:这里的邮件内容是多行的,接收者只能收到最后一行时才发出应答。

  4.5. 详细内容

  4.5.1. 最小实现

  为使SMTP能够工作,对于接收者来说,这是最少应该实现的命令:

  COMMANDS - HELO

  MAIL

  RCPT

  DATA

  RSET

  NOOP

  QUIT

  4.5.2. 透明性

  没有对数据透明性的保证,在发送类似"."结束邮件内容时会发生错误。通常,用户不关心这个"非法"序列。若要所有用户能够透明地使用必须使用以下措施:

  1. 在发送邮件之间,发送SMTP必须检查邮件的每一行,如果是一个句号,就在行首再加一个句号。

  2. 当邮件被接收时,接收SMTP必须检查邮件的每一行,如果发现一行仅有一个句号,邮件就此结束,如果一行中有两个句号,那么这一行中就只应该有一个句号,而将第一个句号删除。

  发送的邮件内容可以包括所有128个ASCII字符。所有字符发送到收信者的邮箱,包括格式符号和其它控制字符。如果传输信道提供一个8位数据流,7位的ASCII码就可以在其中传送,而将最高位置为0。一些系统在接收和存储时需要对数据进行格式转换。对于使用不同于ASCII字符集的主机或不能以串的形式而只能以记录形式存储的主机更是如此,如果必须进行转换,必须能够再次转换回来,对于用于存储转发的主机更是如此。

  4.5.3. 大小

  一些对象需要最大和最小大小。也就是说,每个实现必须能够接收大于最小大小的对象,不能发送大于最大大小的对象。对于可能的最大大小,实现技术上并没有限制。

  用户 用户名的最大长度是64个字节。

  域 域的最大长度是64个字符

  路径 回复路径和转发路径的最大长度是256个字符

  命令行 命令行的最大长度,包括回车符为512个字符

  应答行 应答行的最大长度,包括回车符为512个字符

  文本行 文本行的最大长度,包括回车符和为透明性增加的字符不得超过1000个字符

  接收缓冲区 接收缓冲区最多可以容纳100个接收者

  如果出错,应答如下:

  500 行过长

  501 路径过多

  552 接收者过多

  552 邮件内容过多

  附录 A TCP传输服务

  传输控制协议(TCP)在ARPA Internet中使用,并遵守网络协议的US DoD标准。SMTP传输信道连接建立在发送进程的端口U和接收进程的端口L上。一个单一的全双工信道用于传输。被指定用于此协议的服务端口为25,也就是说L=25。TCP连接支持传输8位字节,而SMTP只需要传输7位;这样,每个8位字符的最高位被置为0。

  附录 B NCP传输服务

  ARPANET主机-主机协议(由网络控制程序实现)也可以用于ARPANET。SMTP传输信道连接建立在发送进程的端口U和接收进程的端口L上;其后,根据初始连接协议(ICP)建立一对简单连接。这一对简单连接被用作传输信道。此协议被指定为连接套接字25,也就是说L=25。NCP连接支持传输8位字节,而SMTP只需要传输7位;这样,每个8位字符的最高位被置为0。

  附录 C NITS

  也可以使用网络独立转输服务。通过在NITS在发送进程和接收进程之间建立传输信道。发送进程执行CONNECT原语,然后等待接收ACCEPT原语。NITS连接支持传输8位字节,而SMTP只需要传输7位;这样,每个8位字符的最高位被置为0。

  附录 D X.25传输服务

  可以直接使用公共数据网络接收的X.25服务,然而,推荐在其上使用可靠的端到端的协议如TCP。

  附录 E 应答码构成方法

  三位的应答码每一位都有特定的意义。每一位应答表示是否是成功的,失败的或未完成的。通过这一位,不复杂的SMTP发送就可以决定下一步的操作,如果发送方希望大概了解究竟出了什么问题,它可以检测第二位,而第三位则保存了最后更完整的信息。也就是说,从第一位到第三位,接收方可以一步比一步精确地确定接收方的状态。对于第一位有五种可能的表示代表不同的意义:

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章