SMTP是如何如何转发邮件的呢?

SMTP是如何如何转发邮件的呢?,第1张

电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等握肆之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。

1. 电子邮件的发送

SMTP是维护传输秩序、规定邮件服务器之间进行哪些工作的协议,它的目标是可靠、高效地传送电子邮件。SMTP独立于传送子系统,并且能够接力传送邮件。

SMTP基于以下的通信模型:根据用户的邮件请求,发送方SMTP建立与接收方SMTP之间的双向通道。接收方SMTP可以是最终接收者,也可以是中间传送者。发送胡瞎方SMTP产生并发送SMTP命令,接收方SMTP向发送方SMTP返回响应信息。

连接建立后,发送方SMTP发送MAIL命令指明发信人,如果接收方SMTP认可,则返回OK应答。发送方SMTP再发送RCPT命令指明收信人,如果接收方SMTP也认可,则再次返回OK应答;否则将给予拒绝应答(但不中止整个邮件的发送 *** 作)。当有多个收信人时,双方将如此重复多次。这一过程结束后,发送方SMTP开始发送邮件内容,并以一个特别序列作为终止。如果接收方SMTP成功处理了邮件,则返回OK应答。

对于需要接力转发的情况,如果一个SMTP服务器接受了转发任务,但后来却发现由于转发路径不正确或者其他原因无法发送该邮件,那么它必须发送一个“邮件无法递送”的消息给最初发送该信的SMTP服务器。为防止因该消息可能发送失败而导致报错消息在两台SMTP服务器之间循环发送的情况,可以将该消息的回退路径置空。

2. 电子邮件的接收

电子邮件协议第3版本(POP3)

要在因特网的一个比较小的节点上维护一个消息传输系统(MTS,Message Transport System)是不现实的。例如,一台工作站可能没有足够的资源允许SMTP服务器及相关的本地邮件传送系统驻留且持续运行。同样的,要求一台个人计算机长时间连接在IP网络上的开销也是巨大的,有时甚至是做不到的。尽管如此,允许在这样小的节点上管理邮件常常是很有用的,并且它们通常能够支持一个可以用来管理邮件的用户代理。为满足这一需要,可以让那些能够支持MTS的节点为这些小节点提供邮件存储功能。POP3就是用于提供这样一种实用的方式来动态访问存储在邮件服务器上的电子邮件的。一般来说,就是指允许用户主机连接到服务器上,以取回那些服务器为它暂存的邮件。POP3不提供对邮件更强大的管理功能,通常在邮件被下载后就被删除。更多的管理功能则由IMAP4来实现。

邮件服务器通过侦听TCP的110端口开始POP3服务。当用户主机需要使用POP3服务时,就与服务器主机建立TCP连接。当连接建立后,服务器发送一个表示已准备好的确认消息,然后双方交替发送命令和响应,以取得邮件,这一过程一直持续到连接终止。一条POP3指令由一个与大小写无关的命令和一些参数组成。命令和参数都使用可打印的ASCII字符,中间用空格隔开。命令一般为3~4个字母,而参数却可以长达40个字符。

因特网报文访问协议第4版本(IMAP4)

IMAP4提供了在远程邮件服务器上管理邮件的手段,它能为用户提供有选择地从邮件服务器接收邮件、基于服务器的信息处理和共享信箱等功能。IMAP4使用户可以在邮件服务器上建立任意层次结构的保存邮件的文件夹,并且可以灵活地在文件夹之间移动邮件,随心所欲地组织自己的信箱,而POP3只能在本地依靠用户代理的支持来实现这些功能。如果用户代理支持,那么IMAP4甚至还可以实现选择性下载附件的功能,假设一封电子邮件中含有5个附件,用户可以选择下载其中的2个,而不是所有。

与POP3类似,IMAP4仅提供面向用户的邮件收发服务。邮件在因特网上的收发还是依靠SMTP服务器来完成。

[电子邮件段做轿地址的构成]

电子邮件地址的格式由三部分组成。第一部分“USER”代表用户信箱的账号,对于同一个邮件接收服务器来说,这个账号必须是唯一的;第二部分“@”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。

问题一:微信怎么转发邮件? 请你在微信中登录QQ邮箱提醒,并进入需要转发的邮件,然后点击右上角的菜单按钮,选择转发,输入对方的邮件地址并发送。

问题二:已发送过的邮件怎么转发给另个人 打开已经发送的邮件,然后在邮件的上面就会有转发的字样点击一下就会转发出去给你想要转发的任何人了

问题三:QQ邮箱怎么转发邮件 在邮件的上方,绩一行小字的,快捷键:

“ 返回 回复 回复全部 转发 删除 彻底删除 举报 ” 等等的快捷键・・・・・・・・

(一定要看仔细,在邮件上方顶部的 一列按钮)

点击“转发”,

再在新页面上,编辑你要转发的地址,就可以了。

问题四:邮箱文件怎么转发出去 以QQ邮箱转发为例子,具体步骤如下:

1、首先在QQ上面打开需要转发邮件进入到里面。

2、接着点击QQ邮箱邮件的上方点击一下转发按钮。

3、然后填写一下收件人邮箱地址,点击发送即可。

问题五:如何把别人发给你的邮件转发给其他人 选中该邮件,在邮件上方或左边或下边 找找转发字样,然后选择你要转发的朋友邮件。如果你不知道,可以截屏给我看看

问题六:如何回复、转发邮件? 登陆VIP邮箱,在邮件夹中点击邮件主题,即进入邮件阅读页面,您可以进行回复和转发。在“阅读邮件内容”页面下方点击相应链接即可。 回复邮件和转发邮件都自动打开“写邮件”页面。回复邮件时,系统将自动填写邮件的发送地址和主题,其中主题为:RE+原邮件的主题。转发邮件时,系统将自动填写邮件主题:FWD+原邮件的主题。回复全部:如果原邮件发送时填写了“抄送[CC]”一栏,并且您收到后希望给寄件人和所有“抄送[CC]”中的其他收件人回信,您可以点击“回复全部”进行回复。

问题七:SMTP是如何如何转发邮件的呢? 简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。 SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。

SMTP

SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:

(1)建立TCP连接。

(2)客户端向服务器发送HELLO命令以标识发件人自己的身份,然后客户端发送MAIL命令。

(3)服务器端以OK作为响应,表示准备接收。

(4)客户端发送RCPT命令。

(5)服务器端表示是否愿意为收件人接收邮件。

(6)协商结束,发送邮件,用命令DATA发送输入内容。

(7)结束此次发送,用QUIT命令退出。 SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序告亮旅(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序键轮(MTA)将邮件传送到目的地。

问题八:怎么将outlook邮箱中的邮件自动转发给另一个? 公司肯定用的是企业邮箱了。您进入企业邮箱WEB里。设置自动转发功能就可以了哦。

问题九:怎么转发邮件 比如说你收到一封袜凳邮件,想要转发给另外一个人,就点进邮件的正文,然后你会看到有“转发”两个字,就点击一下,输入你要转发人的邮箱名,点击发送,就表示转发成功。

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

S: Blah blah blah...

S: ...等配败亮等培宽

S: .

R: 250 OK

此信被前两个人接收,而第三个人在此主机上没有邮箱。 下面是一些中目的地址不正确的,但接收者知道正确的目的地址的例子。在这些例子中,下列应答之一应该允许发送方与获得正确地址。

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

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

551 :用户非本地,请尝试

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

下例显示了这些响应的应用。

转发的例子

S: RCPT TO:

R: 251 User not localwill forward to

或者

S: RCPT TO:

R: 551 User not localplease try 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

或者

S: VRFY Smith

R: 251 User not localwill forward to

或者

S: VRFY Jones

R: 550 String does not match anything.

或者

S: VRFY Jones

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

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

SEND FROM:

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

SOML FROM:

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

SAML FROM:

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

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

HELO

QUIT

在HELLO命令中,主机自己发送命令,此命令可以被解释为:“你好,我是XX”。 转发路径可能是如下格式:@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命令后的回复路径为空表现为如下形式:

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

无论域名在SMTP中如何使用,只有正式的名称才可以被使用,不可以使用假名或昵称。 TURN命令可以用来改变在传输信道上通信的程序的角色。如果程序A是发送SMTP,它发送TURN命令并接到OK应答(250)后,它就变为接收SMTP了。同理,程序B也可以从接收SMTP变为发送SMTP。若要拒绝改变角色,接收方可以发送502作为应答。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12432564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存