文档库 最新最全的文档下载
当前位置:文档库 › RFC821-简单邮件传输协议(SMTP)中文版

RFC821-简单邮件传输协议(SMTP)中文版

RFC821-简单邮件传输协议(SMTP)中文版

1.介绍

简单邮件传输协议(SMTP)的目标是可靠高效地传送邮件,它独立于传送子系统而且仅要求一条可以保证传送数据单元顺序的通道。附录A,B,C 和D描述了不同传送服务下SMTP的使用。在名词表中还定义了本文档中使用的术语。

SMTP的一个重要特点是它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。

2.SMTP模型

SMTP设计基于以下通信模型:针对用户的邮件请求,发送SMTP建立与接收SMTP之间建立一个双向传送通道。接收SMTP可以是最终接收者也可以是中间传送者。SMTP命令由发送SMTP 发出,由接收SMTP接收,而应答则反方面传送。

一旦传送通道建立,SMTP发送者发送MAIL命令指明邮件发送者。如SMTP接收者可以接收邮件则返回OK应答。SMTP发送者再发出RCPT命令确认邮件是否接收到。如果SMTP接收者接收,则返回OK应答;如果不能接收到,则发出拒绝接收应答(但不中止整个邮件操作),双方将如此重复多次。当接收者收到全部邮件后会接收到特别的序列,如果接收者成功处理了邮件,则返回OK应答。

SMTP提供传送邮件的机制,如果接收方与发送方连接在同一个传送服务下时,邮件可以直接由发送方主机传送到接收方主机;或者,当两者不在同一个传送服务下时,通过中继SMTP服务器传送。为了能够对SMTP服务器提供中继能力,它必须拥有最终目的主机地址和邮箱名称。

MAIL命令参数是回复路径,它指定邮件从何处来;而RCPT命令的参数是转发路径的,它指定邮件向何处去。向前路径是源路径,而回复路径是返回路径(它用于发生错误时返回邮件)。

当同一个消息要发往不同的接收者时,SMTP遇到了向不同接收者发送同一份数据的复制品的问题,邮件命令和应答有一个比较奇怪的语法,应答也有一个数字代码。在下面,例子中可以看到哪些使用实际的命令和应答。完整的命令和应答在第四节。

命令与应答对大小写不敏感,也就是说,命令和应答可以是大写,小写或两者的混合,但这一点对用户邮件名称却不一定是对的,因为有的主机对用户名大小写是敏感的。这样SMTP实现中就将用户邮箱名称保留成初始时的样子,主机名称对大小写不敏感。

命令与应答由ASCII字母表组成,当传送服务提供8位字节传送通道,每7位字符正确传送,而最高位被填充为0。当指定一般的命令或应答格式后,参数会由一些类似于语言的字符串表示出来,如""或"",这里尖括号表示这是一种类似于语言的变量。

3. SMTP过程

本节提供了SMTP中的一些过程。头一个说明的是基本发送过程(定义为发送操作)。下来描述向前传送邮件,确认邮箱名称和扩展邮件列表,发送到终端和打开关闭交换。在本节的最后是对中断,邮件域的说明。本节的例子只是一部分命令和应答的序列,完整的例子见附录F。

3.1. MAIL

在SMTP发送操作中有三步,操作由MAIL命令开始给出发送者标识。一系列或更多的RCPT 命令紧跟其后,给出了接收者信息,然后是DATA命令列出发送的邮件内容,最后邮件内容指示符确认操作。

过程中的第一步是MAIL命令,< reverse-path >包括源邮箱。

MAIL FROM:

此命令告诉接收者新的发送操作已经开始,请复位所有状态表和缓冲区。它给出反向路径以进行错误信息返回。如果请求被接收,接收方返回一个250 OK应答。中不止包括了邮箱,它包括了主机和源邮箱的反向路由,其中的第一个主机就是发送此命令的主机。

过程中的第二步是发送RCPT命令。

RCPT TO:

此命令给出向前路径标识接收者,如果命令被接收,接收方返回一个250 OK应答,并存储向前路径。如果接收者未知,接收方会返回一个550 Failure应答。此过程可能会重复若干次。

不仅包括邮件,它是主机和目的邮箱的路由表,在其中的第一个主机就是接收命令的主机。过程中的第三步是发送DATA命令。

DATA

如果命令被接收,接收方返回一个354 Intermediate应答,并认定以下的各行都是信件内容。当信件结尾收到并存储后,接收者发送一个250 OK应答。因为邮件是在传送通道上发送,因此必须指明邮件内容结尾,以便应答对话可以重新开始。SMTP通过在最后一行仅发送一个句号来表示邮件内容的结束,在接收方,一个对用户透明的过程将此符号过滤掉,以不影响正常的数据。

注意:邮件内容包括如下提示:Date, Subject, To, Cc, From。

邮件内容指示符确认邮件操作并告知接收者可以存储和再发送数据了。如果此命令被接收,接收方返回一个250 OK应答。DATA命令仅在邮件操作未完成或源无效的情况下失败。

上面所述的过程是一个发送操作。这些命令只能以上面的顺序使用。下例表示了在一个发送操作中这些命令的使用。

SMTP过程例子:此例是在Alpha.ARPA主机的Smith发送邮件给Beta.ARPA主机的Jones,Green和Brown的,这里假定主机Alpha与主机Beta直接相连。

S: MAIL FROM:

R: 250 OK

S: RCPT TO:

R: 250 OK

S: RCPT TO:

R: 550 No such user here

S: RCPT TO:

R: 250 OK

S: DATA

R: 354 Start mail input; end with .

S: Blah blah blah...

S: ...等等

R: 250 OK

此信被前两个人接收,而第三个人在此主机上没有邮箱。

3.2. 转发

下面是一些中目的地址不正确的,但接收者知道正确的目

的地址的例子。在这些例子中,下列应答之一应该允许发送方与获得正确地址。

251:用户不在本地;将向前发送到

这个应答意味着,接收方SMTP知道用户的邮箱在另外的主机上,而且意味着将在未来使用正确的转向路径。请注意,主机或者用户,或者它们两者是不同的。接收方负责传送消息。

551 :用户非本地,请尝试

这个应答意味着接收SMTP知道用户的邮箱在另外的主机上,并意味着使用了正确的转发路径。注意请注意,主机或者用户,或者它们两者是不同的。接收方拒绝接收此用户的信件,发送者必须根据提供的信息重新发送或者向原发送者返回错误信息。下例显示了这些响应的应用。

转发的例子

S: RCPT TO:

R: 251 User not local; will forward to

或者

S: RCPT TO:

R: 551 User not local; please try

3.3. 确认和扩展

SMTP提供了另外的确认用户名和扩展邮件列表的功能。这些功能由VREF和EXPN命令完成,它们都以字符串为参数。对于VREF命令,字符串参数指的是用户名,对此命令的响应要包括用户的命名和用户的邮箱。对于EXPN命令,字符串参数指的是邮件列表,对此命令的响应多于一个,它们要包括所有列表中用户的命名和他们的邮箱。

“用户名”是一个多余的项目,它是故意被加上的。如果主机采用VREF命令和EXPN命令,最后本地邮箱必须提供用户名使它被主机确认。如果主机选择由另外的字符串作为用户名,也是允许的。

在一些主机中,邮箱列表和一个邮箱的代名有一点不清楚,因为一般的数据结构可能包括两种类型的入口。如果要发出对邮件列表的确认,应该给出确定响应。在接收到这个消息后,主机将把邮件传送到列表上所有的地址上去,如果没有接收到确定响应,就会报告错误。例如,

"550 That is a mail list, not a user name"。如果请求用于扩展一个用户名,可能通过返回包括一个名字的列表来形成确定响应,如果没有接收到确定响应,就会报告错误。(例

如, "550 That is a user name, not a mailing list")。

在多个响应的情况下(通常是对于EXPN而言的),每个应答指定一个邮箱。在模糊请求的情况下,例如"VRFY Smith",这里两个Smith的响应必须是"553 User ambiguous"。

确认用户名的情况如下例所示:例3:

确认用户名

S: VRFY Smith R: 250 Fred Smith

或者

R: 251 User not local; will forward to

或者

S: VRFY Jones

R: 550 String does not match anything.

或者

S: VRFY Jones

R: 551 User not local; please try

或者

S: VRFY Gourzenkyinplatz

R: 553 User ambiguous.

邮箱列表要求多个响应的情况如下例所示:

S: EXPN Example-People

R: 250-Jon Postel

R: 250-Fred Fonebone

R: 250-Sam Q. Smith

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

R: 250-

R: 250

或者

S: EXPN Executive-Washroom-List

R: 550 Access Denied to You.

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

VRFY和EXPN命令在最小实现中并不包括,当它们实现时,它们也不要求被在传送间实现。

3.4. 发送信件(mailing)和获得信件(sending)

SMTP的主要目的是将邮件发送到用户的邮箱中。由一些主机提供的类似的功能是把邮件送至用户的终端(如果用户正打开终端)。将邮件送到用户的邮箱中称为发送信件(mailing);而送至用户终端则称之为获得信件(sending)。因为在一些主机上,这两者的实现十分类似,所以它们同时被放入了SMTP中。然而,获得信件命令在SMTP的最小实现中是没有的。用户应该具有控制向终端上写信息的能力。大部分主机允许用户接受或者拒绝类似的信息。

下面三个命令被定义来支持获得信件。它们被用于邮件命令而不是MAIL命令,指示接收SMTP 这种操作的特殊意义:

SEND FROM:

SEND命令要求邮件内容直接传送到用户终端。如果用户未打开终端(或者未接收终端信息),450响应将返回一个RCPT命令。如果信息被成功发送,此操作成功。

SOML FROM:

Send或者MaiL命令要求将邮件内容直接发送到用户的终端上(如果用户在终端上)。如果用户不在终端上,邮件内容直接进入邮箱。如果邮件被发送到用户终端或者用户信箱,发送操作成

SAML FROM:

Send和MaiL命令要求邮件内容直接发送到用户终端上(如果用户在终端上)。不管怎么样,信件都会进入信箱。如果信件进入信箱,发送操作成功。

用于MAIL命令的响应和这些命令的响应相同。

3.5. 打开和关闭

当打开传送通道时,要交换一些信息以确定双方的身份。以下的命令是用于打开和关闭的:HELO

QUIT

在HELLO命令中,主机自己发送命令,此命令可以被解释为:“你好,我是XX”。

打开联结的例子

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

S: HELO USC-ISIF.ARPA

R: 250 BBN-UNIX.ARPA

关闭联结的例子

S: QUIT

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

3.6. 转发

转发路径可能是如下格式:"@ONE,@TWO:JOE@THREE",在这里,ONE,TWO和THREE 是主机。这种格式用于强调地址和路径的区别。邮箱是绝对地址,路径是关于如何到达的信息。这两个概念不应该被混淆。

概念上,转发路径的元素被移动到回复路径作为从一个SMTP服务器到另一个SMTP服务器的信息。回复路径是一个反向数据源路径,例如从当前信息的位置到发起者的位置。当一个SMTP 服务器从转发路径中删除自己的标记并将它插入到回复路径中时,它必须使用它发送环境能够理解的名称来进行,以防它的名称在不同的环境中被理解为不同的名字。

如果当SMTP接收到信息的转发路径的第一个元素不是此SMTP的标记时,此元素不从转发路径中删除,而被用来决定下一个应该发送到的SMTP服务器。在任何情况下,SMTP都将自己的标记加入反向路径中。

使用源路径时,接收SMTP接收转发的邮件并发送到另一接收SMTP服务器上。接收服务器可以接受或拒绝转发本地用户的邮件。接收SMTP通过将它自己的标记从转发路径移至回复路径的开始处来改变命令参数。这时,接收SMTP变成了发送SMTP,也就建立了到下一个转发路径中SMTP的通道,然后,它向这个SMTP发送邮件。

在回复路径上的头一个主机应是发送SMTP命令的主机,在转发路径上第一个主机应是接收SMTP命令的主机。

注意:转发路径和回复路径出现在SMTP命令和应答中,但不一定要出现在信息中。也就是说,没有必须要这样的路径特别这种格式出现在信息头的"To:","From:"和"CC:"等域中。

如果SMTP服务器接受了转发任务,但后来它发现因为转发路径不正确或者其它原理无法发送邮件,它必须建立一"undeliverable mail"信号,将它此信号送到此信的发主者那里。

此信号必须是从此主机的SMTP服务上发出的,当然了,此服务器不应该再报告出错信息的错误。一种阻止这种出错报告循环的情况是在信号的邮件命令的回复路径上置空。在传送此信息时,

MAIL FROM:<>

下例中显示了不可传送的邮件信息。此信息是对从HOSTW上的JOE发出的邮件经过在HOSTX需要经过HOSTZ到达HOSTY时出错的回应。我们看到的例子是在HOSTX和HOSTY 之间发生的。

不可传送邮件信息的例子

S: MAIL FROM:<>

R: 250 ok

S: RCPT TO:<@HOSTX.ARPA:JOE@HOSTW.ARPA>

R: 250 ok

S: DATA

R: 354 send the mail data, end with .

S: Date: 23 Oct 81 11:22:33

S: From: SMTP@HOSTY.ARPA

S: To: JOE@HOSTW.ARPA

S: Subject: Mail System Problem

S:

S: Sorry JOE, your message to SAM@HOSTZ.ARPA lost.

S: HOSTZ.ARPA said this:

S: "550 No Such User"

S: .

R: 250 ok

3.7. 域

域是最近被引入ARPA Internet邮件系统的。使用域可以使地址空间从一个平面的普通字符串主机名变成全局地址的一个层次结构。主机由一个域名取代,起始主机是由一系列元串组成,它们由逗号按最特殊到一般的顺序排列。

例如,"USC-ISIF.ARPA","https://www.wendangku.net/doc/9b12670210.html,"和"PC7.LCS.MIT.ARPA"可能是主机-域标识符。

无论域名在SMTP中如何使用,只有正式的名称才可以被使用,不可以使用假名或昵称。

3.8. 改变角色

TURN命令可以用来改变在传输信道上通信的程序的角色。如果程序A现在是发送SMTP,它发送TURN命令并接到OK应答(250)后,它就变为接收SMTP了。同理,程序B也可以从接收SMTP变为发送SMTP。若要拒绝改变角色,接收方可以发送502作为应答。

注意:此命令是可选的。在使用TCP的传输信道时,一般不使用此命令。然而,当建立传输信道的代价比较大时,此命令很有用。例如,此命令可以支持一般公共交换电话系统作为传输信道。

4. SMTP说明

4.1. SMTP命令

4.1.1. 命令语法

SMTP命令定义了邮件传输或由用户定义的系统功能。它的命令是由结束的字符串。而在带有参数的情况下,命令本身由和参数分开,如果未带参数可以直接和连接。邮箱的语法格式必须和接收站点的格式一致。

发送邮件操作涉及到不同的数据对象,它们由不同的参数相互连接。回复路径就是MAIL命令的参数,而转发路径则是RCPT命令的参数,邮件日期是DATA命令的参数。这些参数或者数据对象必须跟在命令后。这种模式也就要求有不同的缓冲区来存储这些对象,也就是说,有一个回复路径缓冲区,一个转发路径缓冲区,一个邮件内容缓冲区。特定的命令产生自己的缓冲区,或使一个或多个缓冲的内容被清除。

HELLO (HELO)

此命令用于向接收SMTP确认发送SMTP。参数域包括发送SMTP的主机名。接收SMTP通过连接确认命令来向发送SMTP确认接收SMTP。引命令和OK响应确认发送和接收SMTP进入了初始状态,也就是说,没有操作正在执行,所有状态表和缓冲区已经被子清除。

MAIL (MAIL)

此命令用于开始将邮件发送到一个多个邮箱中。参数域包括回复路径。返回路径中包括了可选的主机和发送者邮箱列表。当有主机列表时,它是一个回复路径源,它说明此邮箱是由在表中的主机一一传递发送(第一个主机是最后一个接收到此邮件的主机)过来的。此表也有作向发送者返回非传递信号的源路径。因为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可能就是空的。

此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将此命令的回复路径信息插入到回复路径缓冲区中。

RECIPIENT (RCPT)

此命令用于确定邮件内容的唯一接收者;多个接收者将由多个此命令指定。转发路径中包括一个可选的主机和一个必须的目的邮箱。当出现主机列表时,这就是一个源路径,它指明邮件必须向列表中的上一个主机发送。如果接收SMTP未实现邮件的传递发送,就会返回如未知本地用户(550)的信息给用户。

当邮件被传递发送时,传递主机必须将自己的名称由转发路径的开始处

移至回复路径的结束处。当邮件最终到达目的地时,接收SMTP将以它的主机邮

件格式自己的名称插入目标邮件中。例如,由传递主机A接收的带有如下参

数的邮件时,

FROM:

TO:<@HOSTA.ARPA,@HOSTB.ARPA:USERC@HOSTD.ARPA>

将会变成如下形式:

FROM:<@HOSTA.ARPA:USERX@HOSTY.ARPA>

TO:<@HOSTB.ARPA:USERC@HOSTD.ARPA>.

此命令导致它的转发路径参数加入转发路径缓冲区中。

DATA (DATA)

接收者将跟在命令后的行作为邮件内容。此命令导致此命令后的邮件内容

加入邮件内容缓冲区。邮件内容可以包括所有128个ASCII码字符。邮件内容由只

包括一个句号的行结束,也就是如下的字符序列:".",它指示了

邮件的结束。

邮件内容的结束指示要求接收者现在就处理保存的邮件内容。此过程将回复

路径缓冲区,转发路径缓冲区和邮件内容缓冲区的内容全部清空。如果操作成功,

接收者必须返回OK应答;如果失败也必须返回失败应答。

当接收SMTP收到一条信息时,无论是用作转发还是此邮件已经到达目的地,

它都必须在邮件内容的开始处加上时间戳这一行,这一行指示了接收到邮件主

将有多行这样的时间戳。当接收SMTP作最后一站的传送时,它将返回路径信息

行插入邮件中。此行包括了发送命令中的的信息。在这里,最

后一站的传送的意思是邮件将被送到目的用户手中,但在一些情况下,邮件可

能需要更进一步的加工并由另外的邮件系统传送。

可能在返回路径中的邮箱与实际发送的邮件不一致,这个情况可能发生在

需要传送一个特定的错误处理信箱而不是信件发送者那里。上面所述说明了,

最后的邮件内容由一个返回路径行,和在其后的一个或多个时间戳行构成。这

些行后面是邮件内容的头和体信息。

当处理后面的邮件数据指示部分成功时就需要特定的说明。这种情况可能

发生在发送SMTP发现当邮件需要传送给多个用户时,只能够成功地向其中的一

部分发送信息这种情况下。在这种情况下,必须对DATA命令发送OK应答,而接

收SMTP组织并发送一个"不可传递邮件"信息到信息的发送者。在此信息中或者

发送一个不成功接收者的列表,或者每次发送一个不成接收者,而发送多次。

所有不可传递邮件信息由MAIL命令发送。

返回路径和接收时间戳例子

Return-Path: <@GHI.ARPA,@DEF.ARPA,@ABC.ARPA:JOE@ABC.ARPA> Received: from GHI.ARPA by JKL.ARPA ; 27 Oct 81 15:27:39 PST

Received: from DEF.ARPA by GHI.ARPA ; 27 Oct 81 15:15:13 PST

Received: from ABC.ARPA by DEF.ARPA ; 27 Oct 81 15:01:59 PST

Date: 27 Oct 81 15:01:01 PST

From: JOE@ABC.ARPA

Subject: Improved Mailing System Installed

To: SAM@JKL.ARPA

This is to inform you that ...

SEND (SEND)

此命令用于开始一个发送命令,将邮件发送到一个或多个终端上。参数

域包括了一个回复路径,此命令如果成功就将邮件发送到终端上了。

回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,

表示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的

(列表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。

因为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接

收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径

可能就是空的。

此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将

此命令的回复路径信息插入到回复路径缓冲区中。

SEND OR MAIL (SOML)

此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,或者

传送到邮箱中。对于每个接收者,如果接收者终端打开,邮件内容将被传送到

接收者的终端上,否则就送到接收者的邮箱中。参数域包括回复路径,如果成

功地将信息送到终端或邮箱中此命令成功。

示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列

表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。因

为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可能就是空的。

此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将

此命令的回复路径信息插入到回复路径缓冲区中。

SEND AND MAIL (SAML)

此命令用于开始一个邮件操作将邮件内容传送到一个或多个终端上,并传

送到邮箱中。如果接收者终端打开,邮件内容将被传送到接收者的终端上和接

收者的邮箱中。参数域包括回复路径,如果成功地将信息送到邮箱中此命令成功。

回复路径包括一个可选的主机列表和发送者邮箱。当出现主机列表时,表

示这是一个传送路径,邮件就是经过这个路径上的每个主机发送到这里的(列

表上第一个主机是最后经手的主机)。此表用于返回非传递信号到发送者。因

为每个传递主机地址都被加在此表起始处,它就必须使用发送IPCE而不是接收IPCE(如果它们不是一个IPCE的话)清楚的名称。一些出错信息的回复路径可能就是空的。

此命令清除回复路径缓冲区,转发路径缓冲区和邮件内容缓冲区,并且将

此命令的回复路径信息插入到回复路径缓冲区中。

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"就根本不是一个用户。

参数域由不定长的字符串组成,它由结束,接收方在完全接收到此序列前

不会采取任何行动。方括号代表可选的参数域。如果不选择的话,系统选择默认

的设置。

下面是SMTP命令:

HELO MAIL FROM: RCPT TO:

DATA

RSET

SEND FROM:

SOML FROM:

SAML FROM:

EXPN

HELP [ ]

NOOP

QUIT

TURN

上面参数域的格式在下面给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地址的形式是由句号分隔的四个介于

::= "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

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发送就可以决定下一步的操作,如果发送方希望大概了解究竟出了什么问题,它可以检测第二位,而第三位则保存了

最后更完整的信息。也就是说,从第一位到第三位,接收方可以一步比一步精

确地确定接收方的状态。对于第一位有五种可能的表示代表不同的意义:1yz 部分完成应答

命令被接受,但是要求的操作被中止,原因在应答码中。发送方应该再次

发送另一命令指明是否继续操作,或者放弃操作。

2yz 全部完成应答

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

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

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

该发送另一条命令指明进一步的信息。

4yz 暂时未完成应答

命令未被接受,要求的操作也未执行,但是发生错误的状态是暂时的,可

以再一次请求操作。发送者应该返回命令序列的开始命令(如果有的话)。很

难解释这个暂时的意义,特别对于两个不同的站点来说。区别应答是属于些类

还是下一类的方法是:如果能够不加任何改变地重复的再一次发送命令,就是

本类的,如果不是,就是下一类(5yz)的。

5yz 永久未完成应答

命令未被接受,要求的操作未完成。发送对命令的重复不起作用。即使一

些出错条件已经改变,但是用户已经不希望重试,而希望在未来的某个时间再

进行操作。

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

x0z 语法:此类型的应答是针对以下情况的:语法错误;符合语法但命令不存

在功能;未完成或冗余的命令。

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

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

x3z 未使用。

x4z 未使用。

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

的状态的。

第三位给出了更详细的说明。列出的应答表说明了这一点。文本应答是

推荐使用的,而不是必须使用的,它的内容是可以根据不同情况而变化的。

另一方面,应答码必须严格遵守本节的说明。接收方不应该因为稍稍的不同

情况而自己创建新的代码而不使用已经定义的代码。例如,如NOOP命令的情

况,如果成功执行它后,不用返回任何新的信息,只用返回250应答。当发送

的命令要求一个未实现的站点指定操作时,应答应该是502。应答文本可能

多于一行;在此情况下,文本必须被标记,接收文本的一方才不致于少读入

一行数据。这要求特定的格式说明多行应答。此格式是:每一行,除了最后

一行外,都以应答码加一个"-"开始。而最后一行以应答码加空格开始。

如下例:

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

R: 250 BBN-UNIX.ARPA

S: MAIL FROM:

R: 250 OK

S: RCPT TO:

R: 250 OK

S: RCPT TO:

R: 550 No such user here

S: RCPT TO:

R: 250 OK

S: DATA

R: 354 Start mail input; end with . S: Blah blah blah...

S: ...etc. etc. etc.

S: .

R: 250 OK

S: QUIT

放弃SMTP操作

R: 220 MIT-Multics.ARPA Simple Mail Transfer Service Ready S: HELO ISI-VAXA.ARPA R: 250 MIT-Multics.ARPA

S: MAIL FROM:

R: 250 OK

S: RCPT TO:

R: 250 OK

S: RCPT TO:

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

电子邮件协议综述

常见的电子邮件协议有以下几种:SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP (Internet邮件访问协议)。这几种协议都是由TCP/IP协议族定义的。SMTP(Simple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。POP(Post Office Protocol):目前的版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。IMAP(Internet Message Access Protocol):目前的版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标电子邮件 题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。 除了我们常见的通用协议SMTP、POP3、IMAP ,现在有一些邮件系统厂商自主研发了私有协议,比如去年Coremail就研发了了私有协议,这个私有协议达到了邮件加速的目的,邮件发送接收比使用普通协议快了一倍,不过既然是私有协议,目前只能使用在同一个系统中,比如网易邮箱和139手机邮箱都用了Coremail邮件系统,他们之间互相收发邮件比收发其它系统的邮件要快一半。 这种私有协议一般是实力雄厚、终端用户多的厂商才具有研发的意义。 什么是POP 大家一听这个POP,读起来有点像是中文中的泡泡,其实这是一个英文术语的缩写。POP 的全称是Post Office Protocol,即邮局协议,用于电子邮件的接收,它使用TCP的110端口。现在常用的是第三版,所以简称为POP3。POP3仍采用Client/Server工作模式,Client被称为客户端,一般我们日常使用电脑都是作为客户端,而Server(服务器)则是网管人员进行管理的。举个形象的例子,Server(服务器)是许多小信箱的集合,就像我们所居住楼房的信箱结构,而客户端就好比是一个人拿着钥匙去信箱开锁取信一样的道理。 POP在网络模型中的层次 大家都知道网络是分层的,而这个分层就好比是一个企业里的组织结构一样。在日常使用电脑过程中,人操作着电脑,人就好比是指挥电脑对因特网操作的首席执行官。当我们打开Foxmail这个邮件软件收取邮件时,Foxmail这个软件就会调用TCP/IP参考模型中的应用层协议—POP协议。 应用层协议建立在网络层协议之上,是专门为用户提供应用服务的,一般是可见的。如利用FTP(文件传输协议)传输一个文件请求一个和目标计算机的连接,在传输文件的过程中,用户和远程计算机交换的一部分是能看到的。而这时POP协议则会指挥下层的协议为它传送数据服务器,最后Foxmail通过一系列协议对话后成功将电子邮件保存到了Foxmail 的收件箱里。TCP/IP参考模型是Internet的基础。和OSI的7层协议比较,TCP/IP参考模型中没有会话层和表示层。通常说的TCP/IP是一组协议的总称,TCP/IP实际上是一个协议族(或协议包),包括100多个相互关联的协议,其中IP(Internet Protocol,网际协议)是网络层最主要的协议;TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)是传输层中最主要的协议。一般认为IP、TCP、UDP是最根本的三种协议,是其它协议的基础。 相信读者了解TCP/IP框架之后,一定会对各层产生一定的兴趣,不过我们对于这个模型的理解也是一步步来的。在这里,我们首先只要知道相应的软件会调用应用层的相应协议,比如Foxmail会调用POP协议,而IE浏览器则会调用DNS协议先将网址解析成IP地址。在

使用telnet协议来收发邮件

第一部分邮件传输协议 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)定义了邮件客户端软件与SMTP服务器之间,以及两台SMTP服务器间的通信规则。SMTP服务器之间的通信规则。 SMTP协议中一共定义了18条命令,发送一封电子邮件的过程通常只需要使用其中6条命令,表1中按照发送命令的先后顺序列出了这6条命令,并描述了其语法格式及功能说明,其中,代表空格,代表回车和换行。 表1 对于SMTP邮件发送程序发送的每一条命令,SMTP邮件程序接收程序都将回应一条响应信息。每条响应信息都以一个响应状态码开发如下所示: 250 ok 响应状态吗用于表示SMTP服务器对请求命令的处理结果和状态,它是一个三位的十进制数。响应状态码的最高位数字代表了不同的分类,当其为2时表示命令执行成功,为5时表示命令执行失败。为3时表示命令没有完成。 动手实践:借助telnet程序手工发送邮件 1)在sina()中申请两个电子邮件地址,,第一个邮箱的登录为:javamail,读者应注册自已的电子邮箱进行实验。 2)要给某个SMTP服务器发送邮件,首先要获知该SMTP服务器的主机名,其中新浪的SMTP服务器主机名为 https://www.wendangku.net/doc/9b12670210.html, 25。 3)当SMTP服务器要对邮件客户端软件进行用户身份验证时,邮件客户端软件需要对用户名和密码进行BASE64编 码后再传递给SMTP服务器,因此要编写一个能对用户名和密码进行BASE64编码的工具程序。下面是用Java 语言编写的一个对用户名和密码分别进行BASE64编码的工具程序。 例:BASE64Util.java import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import sun.misc.BASE64Encoder; class BASE64Util { public static void main(String[] args) throws IOException {

pop3-imap-exchange协议

Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。 HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以“http://”开头的原因。 POP3(Post Office Protocol 3) POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。 IMAP(Internet消息访问协议)是与POP3对应的另一种协议,为美国斯坦福大学在1986年开始研发的多重邮箱电子邮件系统。它能够从邮件服务器上获取有关E-mail的信息或直接收取邮件,具有高性能和可扩展性的优点。IMAP 为很多客户端电子邮件软件所采纳,如OutlookExpress、NetscapeMessenger 等,支持IMAP的服务器端的软件也越来越多,如CriticalPath、Eudora、iPlanet、Sendmail等。 POP3 和IMAP4 功能概述 这两个协议具有下列优点和局限性: ?POP3 POP3 用于支持脱机邮件处理。使用 POP3 时,如果未将客户端设置为在服务器上保留邮件,电子邮件将从服务器中删除并存储在本地POP3 客户端上。这会使数据管理和安全责任都转由用户负责。POP3 不提供高级协作功能,例如日历、联系人和任务。 ?IMAP4 IMAP4 可提供脱机和联机访问功能,但与POP3 一样,IMAP4 不提供高级协作功能,例如日历、联系人和任务。 POP3 和IMAP4 无法用于将邮件从客户端应用程序发送到电子邮件服务器。使用 POP3 和IMAP4 发送邮件的电子邮件应用程序依赖SMTP 协议来发送邮件。会在每个中心传输服务器上自动创建用于从使用POP3 或IMAP4 的客户端应用程序接收电子邮件提交的连接器。有关连接器的详细信息,请参阅了解接收连接器。

POP3协议命令原始码及工作原理

POP3协议命令原始码及工作原理 一简介: 1. POP适用于C/S结构的脱机模型的电子邮件协议,目前已发展到第三版,称POP3。脱机模型即不能在线操作,不像IMAP4(netscape支持IMAP4) 2. 当客户机与服务器连接并查询新电子邮件时,被该客户机指定的所有将被下载的邮件都将被程序下载到客户机,下载后,电子邮件客户机就可以删除或修改任意邮件,而无需与电子邮件服务器进一步交互。 3. POP3客户向POP3服务器发送命令并等待响应,POP3命令采用命令行形式,用ASCII码表示。 服务器响应是由一个单独的命令行组成,或多个命令行组成,响应第一行以ASCII文本OK或-ERR指出相应的操作状态是成功还是失败 4. 在POP3协议中有三种状态,认可状态,处理状态,和更新状态。 当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。如下图 等待连接身份确认quit命令 ——|认可|—————|处理|——————|更新| |__________________________________|

重返认可状态 5. 认可状态的命令语句 一般情况下,大多数现有的POP3客户与服务器执行采用ASCII 明文发送用户名和口令,在认可状态等根据专家观察,这样的理论和现象都是值得各位站长深思的,所以希望大家多做研究学习,争取总结出更多更好的经验! 待客户连接的情况下,客户发出连接,并由命令user/pass对在网络上发送明文用户名和口令给服务器 进行身份确认。一旦确认成功,便转入处理状态。 为了避免发送明文口令的问题,有一种新的认证方法,命令为APOP,使用APOP,口令在传输之前被加密。 当第一次与服务器连接时,POP3服务器向客户机发送一个ASCII 码问候,这个问候由一串字符组成对每个客户机是唯一的,与当时的时间有关,然后,客户机把它的纯文本口令附加到从服务器接收到的字符串之后,然后计算出结果字符串的MD5单出函数消息摘要,客户机把用户名与MD5消息摘要作为APOP命令的参数一起发送出去。 目前,大多数windows上的邮件客户软件不支持APOP命令,qpopper支持。 6. POP3命令码如下: 命令参数状态描述 ------------------------------------------

SMTP简单邮件传输协议

一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非TCP 传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。 在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。 在传输文件过程中使用25号端口 编辑本段协议原理 SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输的协议,它是基于TCP服务的应用层协议,由RFC0821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。 在linux环境下,使用"telnet smtp.163. com 25"连接smtp.163. com 的25号端口(SMTP的标准服务端口);在windows下使用telnet程序,远程主机指定为smtp.163. com,而端口号指定为25,然后连接smtp.163. com:交互过程如下: SMTP [lix@nslix]$telnet smtp.163. com 25 220 163 .com Anti-spam GT for Coremail System (163com[071018]) HELO smtp.163 .com 250 OK auth login 334 dXNlcm5hbWU6 USER base64加密后的用户名 334 UGFzc3dvcmQ6 PASS base64加密后的密码 235 Authentication successful MAILFROM:XXX@163 .COM 250 Mail OK RCPTTO:XXX@163 .COM

计算机网络原理 简单邮件传送协议(SMTP)

计算机网络原理简单邮件传送协议(SMTP) 简单邮件传送协议(SMTP)是一种电子邮件协议,它既具有客户机(发送者)功能,又具有服务器(接收者)功能。SMTP是Internet上的基础传输机制,大多数系统使用它在计算机服务器之间发送邮件。SMTP允许将电子邮件从一个计算机邮件服务器发送到另一个计算机邮件服务器。SMTP服务器接受本地用户的邮件,以将它传输到网络外部的服务器上。 大多数系统通过本地邮件系统服务器在本地按路径发送电子邮件。SMTP发送程序从输出邮件队列中得到报文,通过多个TCP连接将它们传输到目标主面的25号端口上,将这些报文传输到正确的目的计算机。在发送过程中,SMTP接收程序必须能名证实本地邮件目的地址,并处理各种差错,包括传输差错以及没有足够的磁盘空间等。 SMTP发送程序对报文所负的责任直到SMTP接收程序指示传送完成为止。SMTP协议的作用范围仅限于SMTP发送程序和SMTP接收程序之间的对话过程。SMTP主要功能是传送报文。 SMTP规定了14条命令和21种应答信息,每条命令由一行文本组,并以4个字母组成,而每一种应答信息由一个3位数据代码开始,后面附加很简单的文字说明。下面我们来了解SMTP通信最主要的命令和响应信息,一般分三个阶段: 1.连接建立 发送方将需要发送的邮件发送到邮件缓存。SMTP发送程序将每隔一定时间对邮件缓存进行扫描一次。如有邮件未发送,将使用SMTP程序端口号(25号)与目的计算机的SMTP 服务器建立连接。 当连接建立后,将发送“220 Service ready(服务就绪)”,并向SMTP服务器发送HELO 命令来标识自己。 接收方SMTP程序,接收到所发来的标识后,则返还应答“250 OK(一切正常)”来接受发送程序的身份标识。 如果接收方的邮件服务不可用,则返还应答“421 Service not available(服务不可用)”。2.邮件传送 当连接建立后,SMTP发送程序将向SMTP接收程序发送报文信息。报文传送有3个逻辑阶段: ●用一个MAIL命令标识出报文发起方。例如:MAIL FROM: 。 ●用一个或者多个RCPT命令标识该报文的接收方。例如:RCPT TO:<收信人地址>。 ●用一个DATA命令传送报文文本。 发送MAIL命令后,若SMTP服务器已经准备好接收邮件时,则应答“250 OK”。否则,返回代码,并指出原因。例如:451(处理时出错),452(存储空间不够),500(命令无法识别)等。 RCPT命令标识邮件数据的接收方,通过多次使用这个命令就能够指定多个接收者。并且每RCPT命令都会返还一个单独的应答。例如:“550 No such user here(无此用户)”,即不存在此邮箱。RCPT命令的作用是:先查清接SMTP接收服务器是否准备好接收邮件,然后再将邮件发送。 3.释放连接 邮件发送完毕后,发送方SMTP服务器程序将发送QUIT命令。接收方SMTP服务器程序返还应答“211(服务关闭)”信息,表示发送发SMTP服务器程序同意释放TCP连接。 上述的SMTP服务器交互的过程都被电子邮件系统的用户代理屏蔽了,所以用户在使用

简单邮件传输协议

简单邮件传输协议 院系:信息工程学院 专业:通信工程 简单邮件传输协议 SMTP 分析 实验目的 1.了解什么是SMTP协议以及它规定的命令和响应 2.掌握SMTP的通信和收发邮件的过程 3.学会使用Wireshark软件对SMTP分组俘虏更详细了解 实验环境 本实验要求实验室主机能够连接到Internet,具有事先申请好可用的电子邮件帐户,并且能够支持SMTP 和POP3 协议。 实验室主机安装有Outlook Express 软件,学生可以进行账号的配置,并利用其进行收发邮件的的操作。 实验拓扑如图所示: 实验拓扑图 实验原理 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送电子邮件的规则,由它来控制电子邮件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转电子邮件时找到下一个目的地。通过SMTP协议所指定的服务器,我们可以把E-mail寄到收信人的服务器上了。SMTP服务器是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。 SMTP 协议是两个报文传输代理之间的通信协议。它规定了两个相互通信MTA 之间如何交换信息。SMTP 协议的最大特点是简单,它规定了发送程序和接收程序之间的命令和应答格式。 SMTP 提供可靠且有效电子邮件传输,是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。 SMTP 独立于特定的传输子系统,且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即SMTP 邮件中继。通常,一个网络可以由互联网上可通过TCP 相互访问的主机、防火墙分隔的 TCP/IP 网络上可通过TCP 相互访问的主机,及其它利用非TCP 传输层协议的局域网或广域网中的主机组成。使用 SMTP,可实现相同网络上主机之间的邮件传输,也可通过中继器或网关实现某主机与其它网络之间的邮件传输。 SMTP 使用的是TCP 的端口25。 SMTP 命令 SMTP 命令是发送于 SMTP 主机之间的 ASCII 信息,可能命令如下表所示:

试验七 电子邮件协议

试验七电子邮件协议(SMTP, POP3和IMAP) 练习一:使用Outlook发送电子邮件 1. 主机B启动协议分析器进行数据捕获,并设置过滤条件(提取SMTP协议)。 2. 主机A打开邮件工具Outlook Express并设置一个邮件帐号,邮件接收服务器为POP3, 编辑并发送一封电子邮件给主机A。注:Outlook使用方法及具体配置见附录 3. 察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为Smtp.zdt)。 (1)SMTP使用的TCP端口是25。 (2)找出传输用户帐号及密码的数据包,能不能看到用户密码?答:能。 (3)结合Smtp.zdt的SMTP传输过程,填写下表。 表15-5 实验结果 ●邮件的内容首部包括一些关键信息,如From、Subject、To等,请分析邮件首部格式。 ●分析在邮件的首部字段中有关MIME的信息。 练习二:使用Outlook接收电子邮件 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、B所在组为例,其它组的操作参考主机A、B所在组的操作。 1. 使用POP3协议接收 (1)主机B启动协议分析器进行数据捕获,并设置过滤条件(提取POP3协议)。

(2)主机A接收练习一中发送的邮件。 (3)察看主机B捕获的数据,保存会话命令(方法:会话交互视图/单击右键/保存会话命令菜单,保存为POP3.zdt)。 ● POP3使用的TCP端口是110 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合POP3.zdt的内容,分析POP3协议的工作过程并画出邮件接收过程简图,比较它与SMTP协议的不同点。 答:POP3是POP(电子邮局传输协议)的第三个版本,是规定了怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是Internet电子邮件的第一个离线协议标准。简单点说,POP3就是一个简单而实用的邮件信息传输协议。 SMTP(简单邮件传输协议)是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP服务器就是遵循SMTP协议的发送邮件服务器。 ●找到接收邮件内容的报文(命令RETR的响应报文),察看是否与发送的内容一致? 答:一致。 使用IMAP协议接收 (1)主机B重新进行数据捕获,并设置过滤条件(提取IMAP协议)。 (2)主机A使用Outlook Express设置一个邮件账号,邮件接收服务器为IMAP。发送一封邮件并对其接收。 (3)察看主机B捕获的数据,保存会话命令(会话交互视图/单击右键/保存会话命令菜 2.单,保存为IMAP.zdt)。 ● IMAP使用的TCP端口是143 。 ●找出传输用户帐号及密码的数据包,能不能看到用户密码? 答:能。 ●结合IMAP.zdt的内容,分析IMAP协议的工作过程并画出邮件接收过程简图,比较它与POP3协议的异同点。 答:POP3提供了快捷的邮件下载服务,用户可以利用POP3把邮箱里的信下载到PCh上进行离线阅读。一旦邮件进入PC的本地硬盘,就可以选择把邮件从服务器上删除,然后脱离Internet的连接并选择在任何时候阅读已经下载的邮件。 IMAP同样提供了方便的邮件下载服务,让用户服务能进行离线阅读,但IMAP能完成的却远远不只这些。首先,IMAP提供的摘要浏览功能可以让你阅读完所有的邮件到达时间、主题、发件人、大小等信息后才作出是否下载的决定。也就是说,你不必等所有的邮件都下载完毕后才知道空间邮件里都有些什么。如果你根据摘要信息就可以决定某些邮件对你毫无用处,你就可以直接在服务器上把这些邮件删除掉,而不必浪费你宝贵的上网时间。 练习三:使用TCP工具和SMTP命令实现邮件发送 本练习将主机A和B作为一组,主机C和D作为一组,主机E和F作为一组。现仅以主机A、

基于POP3与SMTP协议的邮件收发程序的开发

一、设计思想 电子邮件指用电子手段传送信件、单据、资料等信息的通信方法。电子邮件综合了电话通信和邮政信件的特点,它传送信息的速度和电话一样快,又能象信件一样使收信者在接收端收到文字记录。电子邮件系统又称基于计算机的邮件报文系统。它承担从邮件进入系统到邮件到达目的地为止的全部处理过程。电子邮件不仅可利用电话网络, 而且可利用任何通信网传送。在利用电话网络时, 还可利用其非高峰期间传送信息,这对于商业邮件具有特殊价值。由中央计算机和小型计算机控制的面向有限用户的电子系统可以看作是一种计算机会议系统。 电子邮件的工作过程遵循客户- 服务器模式。每份电子邮件的发送都要涉及到发送方与接收方,发送方式构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服 务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。 一个邮件系统的传输包含用户代理User Agent 传输代理TransferAgent 及接受代理DeliveryAgent 三大部分。 用户代理是一个用户发信和收信的程序, 负责将电子邮件按照一定的标准包装,然后送至邮件服务器, 或由邮件服务器收回。传输代理负责信件的交换和传输。将信件传送至适当的邮件主机, 再由接受代理将信件分发至不同的邮件信箱。传输代理必须要能够接受用户邮件程序送来的信件,解读收信人的地址,根据SMTP协议将它正确无误地传递到目的地。现在一般的传输代理已采用Sendmail 程序完成工作。电子邮件到达邮件主机后, 在经接收代理POP协议被用户读取至自己的主机。 电子邮件在发送与接收过程中都要遵循SMTP POP3等协议,这些协议确保了电子邮件 在各种不同系统之间的传输。其中,SMTP负责电子邮件的发送,而POP3则用于接收In ternet 上的电子邮件。 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/ IP协议族, 它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器, 我们就可以把E—mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP!务器则是遵循SMTP 协议的发送邮件服务器,用来发送或中转你发出的电子邮件。 POP3(Post Office Protocol 3)即邮局协议,目前已发展到第三版,称POP3它规 定怎样将个人计算机连接到Internet 的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议 的接收邮件服务器,用来接收电子邮件的。总的来说POP3协议是让用户把服务器上的信收 到本地来所需要的一种协议。 本程序为一个基于SMTP和POP3协议的小型EMAIL收发程序,简单的实现了邮件的收发功能。

互联网收费电子邮箱服务合同通用范本

内部编号:AN-QP-HT328 版本 / 修改状态:01 / 00 In Daily Life, When Two Or More Parties Deal With Something, They Conclude The Contract In Order To Determine Their Respective Rights And Obligations. Once The Contract Is Signed, They Need T o Abide By Its Provisions, And All Parties Involved In The Contract Are Legally Protected And Restricted. 甲方:__________________ 乙方:__________________ 日期:__________________ 互联网收费电子邮箱服务合同通用范 本

互联网收费电子邮箱服务合同通用范本 使用指引:本合同文件可用于生活中两方或多方当事人之间在办理某事时,为了确定各自的权利和义务而订立,一旦签订完成需各自遵守其中的条文,参与合同的多方都受到合法的保护与限制。资料下载后可以进行自定义修改,可按照所需进行删减和使用。 互联网收费电子邮箱服务合同 互联网收费电子邮箱服务合同 编号:_________ 用户(甲方):__________ 公民身份号码:__________ 住所:___________ 联系电话:______________ 备用电子邮箱:__________ 服务商(乙方):_______________ 许可证号:______________ 住所:___________ 邮政编码:______________

SMTP协议原理

SMTP协议原理 SMTP协议原理 SMTP-简单邮件传输协议(SimpleMailTransferProtocol),是定义邮件传输最常用的协议,它是基于TCP服务的应用层协议,由RFC821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。 在linux环境下,使用"telnet smtp.163. com 25"连接smtp.163. com的25号端口(SMTP的标准服务端口);在windows下使用telnet程序,远程主机指定为smtp.163. com,而端口号指定为25,然后连接smtp.163. com:交互过程如下:[lix@nslix]$telnet smtp.163. com 25 220 163 .com Anti-spam GT for Coremail System (163com[071018]) HELO smtp.163 .com 250 OK auth login 334 dXNlcm5hbWU6 USER base64加密后的用户名 334 UGFzc3dvcmQ6 PASS base64加密后的密码 235 Authentication successful MAILFROM:XXX@163 .COM

250 Mail OK RCPTTO:XXX@163 .COM 250 Mail OK DATA 354 End data with . QUIT 250 Mail OK queued as smtp5,D9GowLArizfIFTpIxFX8AA==.41385S2 HELO是客户向对方邮件服务器发出的标识自己的身份的命令,这里假设发送者为ideal;MAILFROM命令用来表示发送者的邮件地址;RCPTTO:标识接收者的邮件地址,这里表示希望发送邮件给XXX@163. COM,如果邮件接收者不是本地用户,例如RCPTTO:ideal,则说明希望对方邮件服务器为自己转发(Relay)邮件,若该机器允许转发这样的邮件,则表示该邮件服务器是OPENRELAY的,否则说明该服务器不允许RELAY;DATA表示下面是邮件的数据部分,输入完毕以后,以一个"."开始的行作为数据部分的结束标识;QUIT表示退出这次会话,结束邮件发送。 这就是一个简单的发送邮件的会话过程,其实当使用outlookexpress等客户软件发送时,后台进行的交互也是这样的,当然,SMTP协议为了处理复杂的邮件发送情况如附件等等,定义了很多的命令及规定,具体可以通过阅读RFC821来获得。当你的一个朋友向你发送邮件时,他的邮件服务器和你的邮件服务器通过SMTP协议通信,将邮件传递给你邮件地址所指示的邮件服务器上(这里假设你的本地邮件服务器是Linux系统),若你通过telnet协议直接登录到邮件服务器上,则可以使用mail 等客户软件直接阅读邮件,但是若你希望使用本地的MUA(MailUserAgent,如

计算机网络应用 SMTP协议

计算机网络应用SMTP协议 简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一种电子邮件协议,它既具有客户端(发送方)发送邮件的功能,又具有服务器(接收方)接收邮件的功能。SMTP 协议允许将电子邮件从一个计算机邮件服务器发送到另一个计算机邮件服务器,并且SMTP 服务器接收本地用户发送的邮件,以便将其传输到互联网中其他邮件服务器上。 在互联网中,大多数计算机系统通过本地邮件系统服务器在本地按路径发送电子邮件。SMTP发送程序从输出邮件队列中得到邮件报文,通过多个TCP连接将邮件报文传输到目标主机的25号端口上。在发送过程中,SMTP接收程序必须能够证实本地邮件目的地址,并处理各种差错,包括传输差错以及没有足够接收空间等。 SMTP发送程序对报文的作用直到SMTP接收程序指示传输完成才结束,因此SMTP协议的作用范围仅限于SMTP发送程序和SMTP接收程序之间的对话过程。SMTP协议的主要功能是传送报文,为了保证正确传送报文,SMTP协议规定了14条命令和21种响应信息。其中,每条命令由一行文本组和四个字母的命令组成;而每一种响应信息由一个三位数据代码和简单的文字说明组成。下面介绍SMTP协议通信过程中,各阶段主要用到的命令和响应信息。 1.建立连接 邮件发送方将需要发送的邮件发送到邮件缓存中,SMTP发送程序将每隔一定时间对邮件缓存进行扫描。如果缓存有未发送的电子邮件,则使用SMTP程序端口号与目的计算机的SMTP服务器建立连接。 建立连接后,发送方将发送“220 Service ready(服务就绪)”的信息,并向SMTP服务器发送用来标识自己的HELLO命令。当接收方的SMTP程序接收到发送方所发送的信息后,则返回响应信息“250 OK(一切正常)”,以便接收发送方SMTP发送程序的身份标识。如果接收方的邮件服务器不可用,则返回响应信息“421 Service not available(服务不可用)”。2.传输邮件 当连接建立成功后,SMTP发送程序将向SMTP接收程序发送邮件报文信息。邮件报文传送包括以下三个逻辑阶段: ●用一个EAIL命令标识出邮件报文的发送方。例如,MAIL FROM: 。 ●用一个或者多个RCPT命令标识该邮件报文的接收方。例如,RCPT TO: <收信人电子 邮箱地址>。 ●用一个DATA命令标识该邮件报文的内容。 发送MAIL命令后,如果SMTP服务器已经做好接收邮件的准备,则返回响应信息“250 OK(一切正常)”。否则,返回有关无法接收邮件原因的响应信息,例如451(处理时出错)、452(存储空间不够)、500(命令无法识别)等。 RCPT命令标识邮件接收方的电子邮箱地址,多次使用该命令能够为邮件指定多个接收者,并且每个RCPT命令都会返回一个单独的响应信息。例如“550 No such user here(无此用户)”,即不存在此电子邮箱地址。RCPT命令的作用是:先检测SMTP接收服务器是否做好接收邮件的准备,然后在进行邮件传输。 3.关闭连接 邮件发送完毕后,发送方SMTP服务器程序将发送QUIT命令。当接收方SMTP服务器程序返回响应信息“211(服务关闭)”时,表明接收方SMTP服务器程序同意关闭TCP连接。

简单邮件传输协议(论文)

TCP/IP协议分析课程 结业论文 题目:简单邮件传输协议 班级:2008级计算机科学与技术专业三班 姓名: 郭杜娟学号: 2008121301 2011年6月10日

目录 摘要 (2) 引言 (2) 第1章电子邮件概述 (3) 1.1电子邮件系统的发展 (3) 1.2电子邮件简介 (3) 第2章简单邮件传输协议(SMTP、POP3) (5) 2.1介绍SMTP协议 (5) (1)SMTP命令 (7) (2)SMTP响应 (8) (3)SMTP数据分析 (9) 2.2POP协议的研究 (11) (1)POP3简介 (11) (2)POP3协议命令 (12) (3)POP3的连接过程 (13) 第3章结论 (14) 参考文献 (15)

摘要 电子邮件作为互联网中交换信息广泛的通信工具之一,如今都已被广大用户接受。早期的电子邮件只是从一个计算机终端向另外一个计算机终端传送文本信息,而现在的电子邮件不仅可以发送文本信息,还可以传送声音、图片、文档等多种信息。很多邮件邮件客户端软件不断地被用户利用起来,例如outlook,Foxmail,但是这些邮件客户端对于很多用户来说却过于复杂。为了方便用户快捷地收发邮件,本课题利用SMTP协议和POP3协议,经过前期对系统的需求分析和对相关协议的了解,设计并实现了简单的电子邮件收发系统。为了保证本系统功能的完整性,在实现该系统过程中,设计了邮件用户注册模块,当用户首次使用本系统时,须注册一个邮件账号,然后才能进行其他的操作。作为一个电子邮件客户端,邮件的发送与收取是其核心功能,本系统邮件发送块实现电子邮件的发送,支持邮件的单个发送和群发,在邮件收取块,实现了电子邮件的简单收取。另外还增加了地址薄管理块让用户更方便地管理自己的联系人,对联系人进行添加、修改、删除等。 关键词:电子邮件;SMTP;POP3 引言 大家知道,可以进行是实时通信的有线电话有两个严重缺点。第一,电话通信的主叫和被叫双方必须同时在场。但据一些统计资料,大约有70%的业务电话不能在第一次呼叫时直接传到被叫人。第二,一些不是十分紧迫的电话也常常不必要的打断人们正在进行的工作,而电子邮件是将邮件发送到收信人的邮箱(mail box)中,收信人可随时进行读取。电子邮件不仅使用方便,而且还具有传递迅速和费用低廉的优点。自从电子邮件系统诞生以后,电子邮件就成为网络重要应用之一。随着中国互联网应用的日益普及和逐步深入,其重要性也越加体现出来。Internet的发展不但为其他网络业务提供了全球信息交换和信息发布的能力,而且Internet的技术以其开放性、标准性、成熟性和实用性为邮件系统的建设、应用开发、管理和维护等提供了很好的借鉴,给传统的邮件发送系统带来巨大的冲击。现在电子邮件不仅可以传送文字信息,而且还可附上声音和图象。电子邮件已经成为使用最多,最受用户欢迎的信息交换手段之一。 本系统即是在参照一些我们所熟悉的邮件管理系统基础上,自行开发的一个集收、发、管理为一体的简单的电子邮件系统。主要是基于web下的应用SMTP 协议和POP协议而实现的网络服务设计。本文将详细介绍两种协议的收、发过程和各种命令。

【最新合同协议】电子邮箱服务合同范本

合同订立原则 平等原则: 根据《中华人民共和国合同法》第三条:“合同当事人的法律地位平等,一方不得将自己的意志强加给另一方”的规定,平等原则是指地位平等的合同当事人,在充分协商达成一致意思表示的前提下订立合同的原则。这一原则包括三方面内容:①合同当事人的法律地位一律平等。不论所有制性质,也不问单位大小和经济实力的强弱,其地位都是平等的。②合同中的权利义务对等。当事人所取得财产、劳务或工作成果与其履行的义务大体相当;要求一方不得无偿占有另一方的财产,侵犯他人权益;要求禁止平调和无偿调拨。③合同当事人必须就合同条款充分协商,取得一致,合同才能成立。任何一方都不得凌驾于另一方之上,不得把自己的意志强加给另一方,更不得以强迫命令、胁迫等手段签订合同。 自愿原则: 根据《中华人民共和国合同法》第四条:“当事人依法享有自愿订立合同的权利,任何单位和个人不得非法干预”的规定,民事活动除法律强制性的规定外,由当事人自愿约定。包括:第一,订不订立合同自愿;第二,与谁订合同自愿,;第三,合同内容由当事人在不违法的情况下自愿约定;第四,当事人可以协议补充、变更有关内容;第五,双方也可以协议解除合同;第六,可以自由约定违约责任,在发生争议时,当事人可以自愿选择解决争议的方式。 公平原则: 根据《中华人民共和国合同法》第五条:“当事人应当遵循公平原则确定各方的权利和义务”的规定,公平原则要求合同双方当事人之间的权利义务要公平合理具体包括:第一,在订立合同时,要根据公平原则确定双方的权利和义务;第二,根据公平原则确定风险的合理分配;第三,根据公平原则确定违约责任。 诚实信用原则: 根据《中华人民共和国合同法》第六条:“当事人行使权利、履行义务应当遵循诚实信用原则”的规定,诚实信用原则要求当事人在订立合同的全过程中,都要诚实,讲信用,不得有欺诈或其他违背诚实信用的行为。

SMTP协议发送电子邮件 源代码

namespace SMTPServer { public partial class sendMailTSMI : Form { public sendMailTSMI() { InitializeComponent(); } private void sendMailTSMI_Load(object sender, EventArgs e) { fromTxt.Text = SendMail.mailFrom; prptComBox.SelectedIndex = 0; rBtnHTML.Checked = true; } private void button1_Click(object sender, EventArgs e)//浏览按钮 { OpenFileDialog oFileDialog = new OpenFileDialog(); if (oFileDialog.ShowDialog() == DialogResult.OK) { AttachTxt.Text = oFileDialog.FileName; } } private void btnSend_Click(object sender, EventArgs e)//发送按钮 { if (toTxt.Text.Trim() == "") { MessageBox.Show("收件人不能为空!"); return; } if (fromTxt.Text.Trim() == string.Empty) { MessageBox.Show("发件人不能为空!"); return;

} string mailTo = toTxt.Text.Trim(); string mailCC = ccTxt.Text.Trim(); string mailSubject = subjectTxt.Text.Trim(); string mailFrom = fromTxt.Text.Trim(); string mailBody = bodytxt.Text.Trim(); //实例化MailAddress MailAddress maddr = new MailAddress(mailFrom);//包含收件人地址的MailAddress //初始化MailMessage MailMessage mymail = new MailMessage(); mymail.To.Add(mailTo);//向收件人地址集合添加邮件地址 https://www.wendangku.net/doc/9b12670210.html,.Add(mailCC);//向抄送收件人地址集合添加邮件地址 mymail.From = mailFrom;//发件人地址 mymail.Subject = mailSubject;//邮件标题 mymail.SubjectEncoding = Encoding.UTF8;//获取或设置电子邮件的主题内容实用的编码 mymail.Body = mailBody;//邮件正文 mymail.BodyEncoding = Encoding.UTF8;//获取或设置邮件正文的编码 //设置优先级 switch (prptComBox.SelectedText.ToString()) { case"高": mymail.Priority = MailPriority.High; break; case"中": mymail.Priority = MailPriority.Normal; break; case"低":

Email协议

Email协议基础知识 关键词: Mail javaMail 1.Email系统的基本原理 [1]internet地址 (1)标准的internet地址 所有Internet的地址通用形式为: userid(用户标识)@domain(域名) 例:qinghua0000@https://www.wendangku.net/doc/9b12670210.html, harley@https://www.wendangku.net/doc/9b12670210.html, (2)域名与子域 用户标识不是唯一的,唯一所具备的条件呢就是用户标识与域名的结合必须是唯一的,在同一个域中的用户标识不能相同。其中的域名包含若干子域。值得注意的是,一种具有两个子域的地址,通常要么这个机构很小,要么很大(像https://www.wendangku.net/doc/9b12670210.html,)。sohu是拥有多台计算机的大机构;在这样的机构中,有一台计算机专用作与外部世界之间电子邮件的收发。该机构的系统管理员为每个人都安排有简单化的邮件地址。以便能够在https://www.wendangku.net/doc/9b12670210.html, 地址上收发邮件。 一般,术语“gateway”(网关)涉及的是两个不同系统之间的连接,假如我们有一个网关(gateway),网关起着内部网络与外部世界之间的连接作用。因网关有用户标识和本地地址表;当一个邮件到达时,网关就可以校查该表,并把该邮件发送给相应的本地计算机。(3)最高级域 一般有两种形式的最高级域:一般称之为机构域,还有一种称之为地区域。 域类型 com 商业机构(全称:commercialorganization) edu 教育机构(全称:educationalinstitution) gov 政府部门(全称:government) int 国际性机构(全称:internationalorganization) mil 军队(全称:military) net 网络机构(全称:networhimgorganization) org 非盈利机构(全称:non-profitorganization) 表一、最高级域机构名属性对照表 域国家 at 奥地利(全称:Austria) au 澳大利亚(全称:Australia) ca 加拿大(全称:Canada) ch 瑞士(全称:Switzerland"ConfoederationHlvetia" ) cn 中国(全称:China) de 德国(全称:Genmark"Deutschland") dk 丹麦(全称:Denmark) es 西班牙(全称:Spain"Espana") fr 法国(全称:Fance) gr 希腊(全称:Greece)

相关文档