分享
 
 
 

简单邮件传输协议(SMTP)(2)

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

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

R: 450 User not active now

S: RSET

R: 250 OK

S: MAIL 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: SOML FROM:<EAK@MIT-MC.ARPA>

R: 250 OK

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

R: 250 User not active now, so will do mail.

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 MIT-AI.ARPA Simple Mail Transfer Service Ready

S: HELO SU-SCORE.ARPA

R: 250 MIT-AI.ARPA

S: EXPN Example-People

R: 250-<ABC@MIT-MC.ARPA>

R: 250-Fred Fonebone <Fonebone@USC-ISIQ.ARPA>

R: 250-Xenon Y. Zither <XYZ@MIT-AI.ARPA>

R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>

R: 250-<joe@foo-unix.ARPA>

R: 250 <xyz@bar-unix.ARPA>

S: QUIT

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

第二步:扩展第二个列表

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

S: HELO SU-SCORE.ARPA

R: 250 MIT-MC.ARPA

S: EXPN Interested-Parties

R: 250-Al Calico <ABC@MIT-MC.ARPA>

R: 250-<XYZ@MIT-AI.ARPA>

R: 250-Quincy Smith <@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>

R: 250-<fred@BBN-UNIX.ARPA>

R: 250 <xyz@bar-unix.ARPA>

S: QUIT

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

第三步:通过转发主机向包括于两个列表中的所有用户发送邮件

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

S: HELO SU-SCORE.ARPA

R: 250 USC-ISIE.ARPA

S: MAIL FROM:<Account.Person@SU-SCORE.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:ABC@MIT-MC.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:Fonebone@USC-ISIQA.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:XYZ@MIT-AI.ARPA>

R: 250 OK

S: RCPT

TO:<@USC-ISIE.ARPA,@USC-ISIF.ARPA:Q-Smith@ISI-VAXA.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:joe@FOO-UNIX.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:xyz@BAR-UNIX.ARPA>

R: 250 OK

S: RCPT TO:<@USC-ISIE.ARPA:fred@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 USC-ISIE.ARPA Service closing transmission channel

-------------------------------------------------------------

转发的情况

-------------------------------------------------------------

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

S: HELO LBL-UNIX.ARPA

R: 250 USC-ISIF.ARPA

S: MAIL FROM:<mo@LBL-UNIX.ARPA>

R: 250 OK

S: RCPT TO:<fred@USC-ISIF.ARPA>

R: 251 User not local; will forward to <Jones@USC-ISI.ARPA>

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 USC-ISIF.ARPA Service closing transmission channel

-------------------------------------------------------------

-------------------------------------------------------------

第一步:尝试第一台主机上的邮箱

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

S: HELO LBL-UNIX.ARPA

R: 250 USC-ISIF.ARPA

S: MAIL FROM:<mo@LBL-UNIX.ARPA>

R: 250 OK

S: RCPT TO:<fred@USC-ISIF.ARPA>

R: 251 User not local; will forward to <Jones@USC-ISI.ARPA>

S: RSET

R: 250 OK

S: QUIT

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

第二步:尝试第二台主机上的邮箱

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

S: HELO LBL-UNIX.ARPA

R: 250 USC-ISI.ARPA

S: MAIL FROM:<mo@LBL-UNIX.ARPA>

R: 250 OK

S: RCPT TO:<Jones@USC-ISI.ARPA>

R: 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 USC-ISI.ARPA Service closing transmission channel

-------------------------------------------------------------

许多接收者的情况

-------------------------------------------------------------

R: 220 BERKELEY.ARPA Simple Mail Transfer Service Ready

S: HELO USC-ISIF.ARPA

R: 250 BERKELEY.ARPA

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

R: 250 OK

S: RCPT TO:<fabry@BERKELEY.ARPA>

R: 250 OK

S: RCPT TO:<eric@BERKELEY.ARPA>

R: 552 Recipient storage full, try again in another transaction

S: DATA

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

S: Blah blah blah...

S: ...etc. etc. etc.

S: .

R: 250 OK

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

R: 250 OK

S: RCPT TO:<eric@BERKELEY.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 BERKELEY.ARPA Service closing transmission channel

-------------------------------------------------------------

<CRLF>

回车

<SP>

空格

ASCII

美国标准信息交换码

主机

拥有SMTP进程或邮箱的网络计算机

发送SMTP进程

与接收SMTP进程一起工作的进程。发送SMTP开始传输服务连接,它发出SMTP命令,接收应答,管理邮件的传送

用户

希望获得邮件服务的人(或以人的名义出现的进程),还有就是邮件的接收者。

会话

当传输信道打开时进行的一系列信息交换

传输服务

可靠的面向流的数据通信服务。例如:NCP,TCP,NITS。

传输信道

在发送SMTP和接收SMTP之间建立的全双工的用于交换命令,应答和邮件内容的信道

字符

可显示字符串

以一个<CRLF>结束的邮件内容

应答

接收SMTP对发送SMTP的通过传输信道发送的的对某一命令的(成功或不成功的)响应。应答的一般格式是应答码加一段文本。通常情况下,应答码供机器使用,而文本用于人类用户使用

邮件内容

一系列的字符串,它们符合ARPA Internet文本信息格式标准的标准字符集

邮件内容结束标记

标明邮件内容结束的特定字符

邮箱

指定应该向何处发向用户的信件的地址(字符串)。它通常由用户名和主机名表示

命令

由发送SMTP发送到接收SMTP的要求一个邮件服务操作的请求

邮件系统中主机地址字符串的层次式表示

接收SMTP进程

与发送SMTP进程一起工作的进程。它等待通过传输服务建立的连接。它接收发送SMTP发出的命令,给出应答并执行相应的操作

操作

一个信息由一个接收者发送到另一个或多个接收者的一系列操作

第一頁    上一頁    第2頁/共2頁    下一頁    最後頁
第01頁 第02頁 
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有