1. Email系统的基本原理
[1]internet地址 (1)标准的internet地址 所有Internet的地址通用形式为: userid(用户标识)@domain(域名) 例:qinghua0000@sohu.com harley@fuzzball.ucsb.edu (2)域名与子域 用户标识不是唯一的,唯一所具备的条件呢就是用户标识与域名的结合必须是唯一的,在同一个域中的用户标识不能相同。其中的域名包含若干子域。值得注意的是,一种具有两个子域的地址,通常要么这个机构很小,要么很大(像sohu.com)。sohu是拥有多台计算机的大机构;在这样的机构中,有一台计算机专用作与外部世界之间电子邮件的收发。该机构的系统管理员为每个人都安排有简单化的邮件地址。以便能够在sohu.com地址上收发邮件。 一般,术语“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) ie 爱尔兰共和国 (全称:Republic of Zreland) jp 日本 (全称:Japan) nz 新西兰 (全称:New zealand) uk 英国 (全称:United Kingdow) us 美国 (全称:United States) (4)伪Internet地址 有许多机构希望与Internet相连接,但是没有时间或经费与Internet保持长期的连接。作为一个替代的方法,它们与附近的Internet点商定,让其作为它们的邮件代理。仅从这个地址,常常无法断定计算机是否真正与Internet相连接。如果要确切知道一台计算机是否与Internet连接,可使用host命令。 (5)IP地址与 host命令 可以在使用正规地址的任何地方使用IP地址。Internet的地址记录系统叫做域名系统或DNS。DNS是将域名地址与IP数字地址这两个版本来回转换的一种TCP/IP服务。 如果要测试 DNS,可以使用host命令。有以下两种格式: host standard-address host IP-address 如果你从一个标准地址入手: host ucsd.edu DNS将显示IP地址: host 128.54.16.1 反之如果你从一个IP地址入手,DNS将显示标准地址。 只有Internet主机才有IP地址(仿真终端是没有的)。因此,可以使用host命令检查计算机是否与Internet直接连接。如使用host能测试出IP地址,说明该计算机是与Internet连接的。 如果指定的地址是未与Internet直接连接的计算机的。将看到: host not found host 命令并不适用于所有的计算机。如果你的系统没有host,请试一下nslookup或nstest。 (6)UUCP 所有Unix系统都有一个叫做UUCP的内置联网系统。UUCP是一组程序。名字UUXP来自这些程序中的一个程序,该UUCP程序将文件在Unix系统之间相互拷贝,因此这个名字的意思是“Unix到Unix拷贝”。 UUCP的功能不及TCP/IP强。例如,UUCP不能提供远程登录UUCP邮件程序比Internet慢,并更难用。但是UUCP有一个重要的优点,它是一个标准的Unix部分(适合于绝大多数系统),它通过拨号或电缆直接连接运行,既便宜又可靠。UUCP的作用是使Unix系统连接到一起,形成一个链。例如,假定你正在使用一台名为alpha的计算机,你的计算机就与另一台名为beta的计算机连接起来了,beta计算机与gamma计算机连接,gamma计算机再与delta计算机连接。 它提供了一种经济的方式在计算机之间远距离传送邮件。但是,有一个重要的缺点:由于许多UUCP连接是通过电话线,而且在某些预定的时间内实现的邮件投送可能需数小时,甚至好几天。将还种方式与Internet比较,在Internet中,连接是永久的,信息件递很迅速,常常在几秒钟内,一般在几分钟内就可以完成。 (7)UUCP地址和Bang路径 建立一个由名字依次排列组成的地址,名字之间用!符号分开。例如,下面是一个将上面提到的用户标识发送信息的邮件命令。 mailbeta!gamma!delta!murray 在Unix术语中,!符号的专门术语名字之一是bang。因此,一个指定多重名字的UUCP地址有时叫做bang路径(bangpath)。 (8)简化的UUCP地址 为了使得UUCP获取地址方便,采取了一个叫做UUCPmappingproject(UUCP图示方案)的措施。该方案定期出版数据“地图”,发送到许多关键UUCP计算机,当UUCP邮件到达这些计算机时,计算机可以查看这个图,确定使用的最佳路径。实质上这样可使你使用的UUCP地址与Internet地址相同,让该系统做这项工作。 因此,有时可能看见一种使用UUCP的最高级域的地址。例如,你可以用以下地址发送邮件: albert@gendeau.uucp 当使用这样一个地址时,就等于向邮件路由软件发出了一个信号,让它找出UUCP图示数据中的名字和指出最佳使用路径。
[2]INTERNET邮件系统
(1)intrenet电子邮件系统基础
<1> 传送受理程序 邮件系统是可输送各类信息的综合服务系统:像文献、印刷品、计算机程序等。而唯一所需的是用ASCII字码(即可用键盘录入的数据)存贮数据。 在有些情况下,也可传送非文本资料,如图像或录音。 SMTP,表示简易邮件传送协议(SimpleMailTransferProtocol),它是TCP/IP系列协议的一部分。它解释邮件的格式和说明怎样处理投递的邮件。每一台Internet计算机在运行邮件程序时,可自动地确保邮件以标准格式选址和传送。这个程序称为传送受理程序(transport agent),它按照SMTP协议工作并将你的邮件联系向外界发送。 在大多数系统中,传送受理程序在“后台”中运行,随时对可能收到的任何要求作出反应。在Unix系统术语中,这个程序称之为“守护神”,即智能程序(daemon)(是的,完全可以这样称呼)。 每一个Unix系统都有各种隐放在“后台”的智能程序无声地为你服务。从理论上讲,不论你的系统使用的是什么传送受理程序,只要它能用SMTP收发邮件文件就行。大多数Unix系统使用一种叫“传送邮件(sendmail)”的智能程序。 <2>电子邮件系统接口(Interface) a. 用户邮件程序: 做为一个用户,你不会直接与你系统中的传送受理程序发生联系;只是在机器内部通过SMTP运行收发邮件,你使用的这种邮件程序叫作用户邮件程序. 最广泛使用的用户邮件程序是Unix邮件程序。BSD用户邮件程序称为mailx,SystemV用户邮件程序称为Mail。 b.Unix基础邮件程序 通用的有ELM(全屏) 、PINE(菜单驱动)、MH(文件操作者)、MUSH (Zmail)、RMAIL(Emacs是一个建立在功能强大的文本编辑程序上的完整工作环境。在Emacs环境中,你不仅能编辑文本,还能编制扩展程序,阅读Usenet(用户网)文章,操作Rmail收发邮件) C.邮件信头编写 标准格式的邮件是由两部分组成:“信头”和“主体”。信头包括在文件开始处的信息行。主体实际上是你所表达的信件内容。 下面是一个样本文件。信头格式在操作系统中也许有变动,但主要内容不变。
Fromrick@tsi.com WedMar3114:47:021993(From+地址+时间) Received:fromhub.ucsb.edu by engineering.ucsb.edu id AA15594toharley: Wed, 31Mar9313:19: 25PST Received:from fuzzball(fuzzball.ucsb.edu)byhub.ucsb.edu; id AA11868 Sendmail4.1/UCSB2.0sun Wed.3lNar9313:23:58SPST for harley@cs.ucsb.edu Received:by FUZZBALL(5.57/UCSB-V2) id AA07200:Wed,31Mar9313:17:40PST Received:fromtsi.combyucsd.edu;id AA03169 Send mail 5.67/UCSD-2.2 sunvia SMTP Wed.31 Mar 9313:23:520800 for harley@fuzzball.ucsb.edu Received:bysdcc12.UCSD.EDU(4.l/UCSDGENERIC.3) id AA25582 to harley@fuzzball.ucsb.edu; Wed.31 Mar 9313:23:51PST Date:Wed.31 Mar 9313:23:51PST From:rick@tsi.com(RickStout) MessageId:9303311840.AA067ll@tsi X.Mailer:MailUser‘s Shell(7.1.27/11/90) To:harley@fuzball.ucsb.edu Subject:this is the subject Cc:ad die@nipper.com kim@nipper.com Status:Ro Harley:I have setup an appoint ment for next Thursday afternoon. PIease let me know if you can attend. ...Rick
来源: rick@tsi.com1993年3月31日星期三14点47分2秒 接收: from hub.ucsb.edu by engineering.ucsb.edu id AA15594 to harley:93年3月31日星期三13:19:25PST 接收: from fuzzball(fuzzball.ucsb.edu)by hub.ucsb.edu id AA11868 传送邮件4.1/UCSB-2.Osun 93年3月31日早期三13:23:58PST到harley@cs.ucsb.edu 接收: 由fuzzball(5.57/UCSB-v2) id AA07200; 93年3月31日星期三,时间13:17:40PST 接收:来自tsi.com by ucsd.edu;idAA03169 传送邮件通过SMTP5.67/UCSD-2.2sun 93年3月31日星期三时间13:25:520800到harley@fuzzball.ucsb.edu 接收:由sdcc12.UCSD.EDU(4.1/UCSDGENERIC.3) 发送id AA25582至harley@fuzzball.ucsb.edu; 93年3月31日星期三;13:23:51PST 日期:93年3月31日星湖三13:23:51PST 来源: rick@tsi.com(Rick Stout) 文件标识符:93O3311840.AA06711@tsi X-邮件者: Mail User‘s Shell(7.1.27/11/90) 至: harley@fuzzball.ucsb.edu 标题:具体题目 副本(Cc): addie@nipper.com kim@nipper.com 状态:RO Harley:在下星期四下午,我安排了一次会见,请告知我你是否参加。 Rick
以上例子说明,在信头中的第一行总是单词“ From”,该行表明发信人的地址。在我们这个例子中,文件是从rick@tsi.com发来的。其它行即不必以同样的顺序显示。这取决于收发邮件系统是怎样构成的,也取决于在你特别的邮件程序设置的是什么选择。在最初的“From”行后有十四行包括五条Received说明的技术信息。这些字行表明该文件所取的路径、时间、日期和操作过程中每一步应使用什么程序。邮件程序常显示一个“状态”行。可是,几乎没有人知道不同的设计表示什么,这一般查不到。
d.用MIME传送二进制数据(多功能Internet邮件扩展程序) 为了收发二进制数据,你必须具有用来支持MIME的一个用户邮件程序(邮件程序);MIME标准现已成为Internet电子邮件的主流,我们现在最常使用的电子邮件软件Eudora、Netscap e Mail、Internet Mail就是采用MIME方式。MIME定义两种编码万式:Base64与QP(Quote-Printable)。QP的规则是对于资料中的7位无须重复编码,仅将8位的数据转成7位。QP编码适用于ASCII码的及字内容,例如我们的中文文件。而Base64 的编码规则是将整个文件重新编码成7位,通常用于传送二进制文件。编码的方式不同会影响编码之后的文件大小。而具有MIME功能的E-mail软件大都能自动判别你的邮件是采用何种编码,然后自动选择用QP或Base64来解码。
[3]基本的网络协议
(1)SMTP 下图显示了SMTP的基本模型。发送方建立起与接收方SMTP的通信。在传输邮件之前,两个SMTP实体可以交换口令或其他鉴别信号,然后发送方发出一个特殊命令,称为MAIL,该命令给出了发送方的标识及一些有关邮件交换的其他信息。接收方必须返回一个对MAIL命令的确认。在SMTP中,该确认可写为250,在另一些文档中,该确认为250 OK。不管是哪一种格式,确认表示所要求的邮件操作完成了。 图一、 SMTP模型 邮件传输过程的下一步是传输RCPT命令以标识报文的目的端,接收方仍必须给出对该命令的一个确认。 第三步是发送DATA命令。发送方SMTP发出该命令提醒接收方一个报文就要到达了。在发送了该命分之后,发送方SMTP便一行接一行地发送数据,直到发送方发出了一个特殊的控制字符序列,表示报文结束了。这时,服务器使用QUIT命令终止该过程。 (1.1)地址段格式 发送方SMTP使用了一个标准的送地址和接收地址格式,它们的形式如下: local-part@domain-name 因此SMTP名字遵从了域名系统(DNS)的概念,一些系统使用一个服务器,将该名字映射成IP地址。实际应用中,这种格式可能出现为: Jones@beta.aus.edu 其中本地用户名为Jones,beta.aus.edu是Jones的域标识符。Iocal-part@domain-name还可能采取其他形式以表示如下含义: 2 一个直接的连接(use@host) 2 邮件接收方位于一台非SMTP主机,通过一个邮件网关接收邮件(user%remote-host@gateway-host) 2 多台主机间的应答(@host-b@host-c@hostd)
(2)POP3 首先,P O P 3服务器启动P O P 3服务,并监听110端口。当客户机要仅用P O P 3服务时,它先与 POP3服务器建立一条TCP连接。若连接成功建立,POP3服务器向客户端发送一条欢迎消息,然后客户机与POP3服务器之间就可以进入命令交互和响应状态,直到连接关闭或异常中断。 每个POP3会话总是处于一系列的状态变化中。一旦客户机与POP3服务器之间的TCP连接建立起来并且POP3服务器的欢迎言息传到客户端。POP3会话过程就进入认证状态。在该状态下,客户机必须进行身份验证。一旦验证通过,并且POP3服务器获得足够的资源打开用户的邮箱。这时POP3会话过程进入“命令交互状态”。在“命令交互状态”下,客户端可以向POP3服务器提出各科服务请求,由POP3服务器完成该服务并返回成功或失败的响应信息。当客户端发出“QUIT’命令后,POP3会话过程进入“更新状态”。在“更新状态”下,POP3服务器释放在“命令交互状态”下获得的资源,更新用户邮箱,然后关闭TCP连接。 (2.1)POP3的基本命令 2 USER 这个命令以用户的账号名称作为参数。 2 PASS 这个命令以用户的口令作为参数,缺省情况下用户的口令将以明文在网络上传输。 2 STAT 该命令无参数,仅用于“命令交互状态”。 获取当前用户邮件总数和邮件总大小。POP3服务器返回一个成功的响应,以“+OK”开头,后跟一个空格字符,然后是当前用户邮箱内邮件的总数,之后又是一个空格字符,最后是用户邮件的总大小(BYTES)。 C: STAT S: +OK 2320 2 LIST 该命令可以没有参数也可以有一个参数,该参数代表邮件的序 号,但该序号不能是已删除邮件。 该命令仅用于“命令交互状态”。 C: LIST S: +OK 2 messages( 320 octets) S: 1 120 S: 2 200 S: . ...... C: LIST 2 S: +OK 2 200 ...... C: LIST 3 S: -ERR no such mesage, only 2 message in maildrop. 2 RETR 该命令必须带有一个邮件序号,该邮件序号不能是已删除邮件。 该命令仅用于“命令交互状态”。 若POP3服务器返回一个成功响应,则随后的响应属于多行响应。在首行“+OK”响应之后,POP3服务器把对应于该邮件序号的邮件发送到客户端。 C: RETR 1 S: +OK 120 octets S: < The PoP3 server sends the entire message here> C: RETR 5 S: -ERR no such message. 2 DELE 该命令必须带一个邮件序号参数。仅用于“命令交互状态” POP3服务器把该邮件标志为“已删除”,之后,任何对该邮件的操作都将返回错误。POP3服务器并不实际删除该邮件,除非POP3会话进“更新状态”。 C: DELE 1 S: +OK message 1 deleted ...... C: DELE 1 S: -ERR message 2 already deleted 2 NOOP 该命令不待参数,实际上也不做任何事情。仅用于“命令交互状态”。 C: NOOP S: +OK 2 RSET 该命今不带参数。仅用于“命令交互状态”。 POP3服务器将所有已被标志为删除的邮件的删除标志取消,并返回成功响应。 C: RSET S: +OK maildrop has 2 messages ( 320 octets) 2 QUIT 该命令无参数,仅用于“命令交互状态”。 POP3服务器把所有已标志为删除的邮%B
|