⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc821-简单邮件传输协议(smtp)中文版.txt

📁 大量Delphi开发资料
💻 TXT
📖 第 1 页 / 共 3 页
字号:
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. 透明性 
  没有对数据透明性的保证,在发送类似"<CRLF>.<CRLF>"结束邮件内容时会 
发生错误。通常,用户不关心这个"非法"序列。若要所有用户能够透明地使用 
必须使用以下措施: 
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发送就可以决定下一步的操作,如果 
发送方希望大概了解究竟出了什么问题,它可以检测第二位,而第三位则保存了 
最后更完整的信息。也就是说,从第一位到第三位,接收方可以一步比一步精 
确地确定接收方的状态。对于第一位有五种可能的表示代表不同的意义: 

  1yz 部分完成应答 

  命令被接受,但是要求的操作被中止,原因在应答码中。发送方应该再次 
发送另一命令指明是否继续操作,或者放弃操作。 

  2yz 全部完成应答 

  要求的操作已经完成,可以开始另一个新的请求。 

  3yz 需要近一步信息的部分完成应答 

  命令被接受,但是要求的操作被中止,需要接收进一步的信息。发送方应 
该发送另一条命令指明进一步的信息。 

  4yz 暂时未完成应答 

  命令未被接受,要求的操作也未执行,但是发生错误的状态是暂时的,可 
以再一次请求操作。发送者应该返回命令序列的开始命令(如果有的话)。很 
难解释这个暂时的意义,特别对于两个不同的站点来说。区别应答是属于些类 
还是下一类的方法是:如果能够不加任何改变地重复的再一次发送命令,就是 
本类的,如果不是,就是下一类(5yz)的。 

  5yz 永久未完成应答 

  命令未被接受,要求的操作未完成。发送对命令的重复不起作用。即使一 
些出错条件已经改变,但是用户已经不希望重试,而希望在未来的某个时间再 
进行操作。 

  应答的第二位的意义有以下几类: 

x0z 语法:此类型的应答是针对以下情况的:语法错误;符合语法但命令不存 
在功能;未完成或冗余的命令。 

x1z 信息:此类型的应答是用于请求信息的,如状态或帮助信息。 

x2z 连接:此类型的应答是关于传输信道的。 

x3z 未使用。 

x4z 未使用。 

x5z 邮件系统:此类型的应答指明接收方邮件系统关于请求传送或其它操作 
的状态的。 

  第三位给出了更详细的说明。列出的应答表说明了这一点。文本应答是 
推荐使用的,而不是必须使用的,它的内容是可以根据不同情况而变化的。 
另一方面,应答码必须严格遵守本节的说明。接收方不应该因为稍稍的不同 
情况而自己创建新的代码而不使用已经定义的代码。例如,如NOOP命令的情 
况,如果成功执行它后,不用返回任何新的信息,只用返回250应答。当发送 
的命令要求一个未实现的站点指定操作时,应答应该是502。 应答文本可能 
多于一行;在此情况下,文本必须被标记,接收文本的一方才不致于少读入 
一行数据。这要求特定的格式说明多行应答。此格式是:每一行,除了最后 
一行外,都以应答码加一个"-"开始。而最后一行以应答码加空格<SP>开始。 
如下例: 

123-First line 

123-Second line 

123-234 text beginning with numbers 

123 The last line 

  通常情况下,接收的一方只用寻找应答码加空格的那一行就可以,而忽 
略前面行的内容。在特殊的情况下,发送方必须知道响应文本的内容,这时 
接收应答的一方可以通过当时的情况正确地决定是否需要知道文本的内容。   

附录 F 一些例子  


本节提供了一些SMTP会话的完整例子。 

典型的SMTP操作 

此类显示邮件如何由在USC-ISIF和机上的Smith发送到BBN-UNIX主机上 
Jones,Green和Brown的。这里,我们假设USC-ISIF主机直接和BBN-UNIX主机联系。 
Jones和Brown接收邮件,而Green在BBN-UNIX上没有邮箱。 

R: 220 BBN-UNIX.ARPA Simple Mail Transfer Service Ready 

S: HELO USC-ISIF.ARPA 

R: 250 BBN-UNIX.ARPA 

  

S: MAIL FROM:<Smith@USC-ISIF.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Jones@BBN-UNIX.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Green@BBN-UNIX.ARPA> 

R: 550 No such user here 

  

S: RCPT TO:<Brown@BBN-UNIX.ARPA> 

R: 250 OK 

  

S: DATA 

R: 354 Start mail input; end with <CRLF>.<CRLF> 

S: Blah blah blah... 

S: ...etc. etc. etc. 

S: . 

R: 250 OK 

  

S: QUIT 

R: 221 BBN-UNIX.ARPA Service closing transmission channel 

放弃SMTP操作  

R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready  

S: HELO ISI-VAXA.ARPA R: 250 MIT-Multics.ARPA  

S: MAIL FROM:<Smith@ISI-VAXA.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Jones@MIT-Multics.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Green@MIT-Multics.ARPA> 

R: 550 No such user here 

  

S: RSET 

R: 250 OK 

  

S: QUIT 

R: 221 MIT-Multics.ARPA Service closing transmission channel 

  

转发邮件  

第一步:源主机到转发主机 

  

R: 220 USC-ISIE.ARPA Simple Mail Transfer Service Ready 

S: HELO MIT-AI.ARPA 

R: 250 USC-ISIE.ARPA 

  

S: MAIL FROM:<JQP@MIT-AI.ARPA> 

R: 250 OK 

  

S: RCPT TO:<@USC-ISIE.ARPA:Jones@BBN-VAX.ARPA> 

R: 250 OK 

  

S: DATA 

R: 354 Start mail input; end with <CRLF>.<CRLF> 

S: Date: 2 Nov 81 22:33:44 

S: From: John Q. Public <JQP@MIT-AI.ARPA> 

S: Subject: The Next Meeting of the Board 

S: To: Jones@BBN-Vax.ARPA 

S: 

S: Bill: 

S: The next meeting of the board of directors will be 

S: on Tuesday. 

S: John. 

S: . 

R: 250 OK 

  

S: QUIT 

R: 221 USC-ISIE.ARPA Service closing transmission channel 
第二步:转发主机到目的主机 

R: 220 BBN-VAX.ARPA Simple Mail Transfer Service Ready 

S: HELO USC-ISIE.ARPA 

R: 250 BBN-VAX.ARPA 

  

S: MAIL FROM:<@USC-ISIE.ARPA:JQP@MIT-AI.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Jones@BBN-VAX.ARPA> 

R: 250 OK 

  

S: DATA 

R: 354 Start mail input; end with <CRLF>.<CRLF> 

S: Received: from MIT-AI.ARPA by USC-ISIE.ARPA ; 

2 Nov 81 22:40:10 UT 

S: Date: 2 Nov 81 22:33:44 

S: From: John Q. Public <JQP@MIT-AI.ARPA> 

S: Subject: The Next Meeting of the Board 

S: To: Jones@BBN-Vax.ARPA 

S: 

S: Bill: 

S: The next meeting of the board of directors will be 

S: on Tuesday. 

S: John. 

S: . 

R: 250 OK 

  

S: QUIT 

R: 221 USC-ISIE.ARPA Service closing transmission channel 

  

确认和发送 

R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready 

S: HELO MIT-MC.ARPA 

R: 250 SU-SCORE.ARPA 

  

S: VRFY Crispin 

R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA> 

  

S: SEND FROM:<EAK@MIT-MC.ARPA> 

R: 250 OK 

  

S: RCPT TO:<Admin.MRC@SU-SCORE.ARPA> 

R: 250 OK 

  

S: DATA 

R: 354 Start mail input; end with <CRLF>.<CRLF> 

S: Blah blah blah... 

S: ...etc. etc. etc. 

S: . 

R: 250 OK 

  

S: QUIT 

R: 221 SU-SCORE.ARPA Service closing transmission channel 

  

获得和发送邮件 首先确定用户名,然后尝试将邮件发送到用户终端, 
当它失败时,发送到用户邮箱。 

R: 220 SU-SCORE.ARPA Simple Mail Transfer Service Ready 

S: HELO MIT-MC.ARPA 

R: 250 SU-SCORE.ARPA 

  

S: VRFY Crispin 

R: 250 Mark Crispin <Admin.MRC@SU-SCORE.ARPA> 

  

S: SEND FROM:<EAK@MIT-MC.ARPA> 

R: 250 OK 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -