首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

网络技术

邮件原理 | 硬件设备 | CISCO | 网络协议 | 网络管理 | 传输介质 | 线路接入 | 路由接口 | 邮件存储 | 华为3Com |
首页 > 网络技术 > 电子邮件原理及协议 > 新手入门:了解邮件服务与相关协议 (2) > 正文

新手入门:了解邮件服务与相关协议 (2)

出处:天极网 作者:天极网 时间:2005-11-9 0:23:00
 MIME顶级类型中有一个相当重要的名为MultiPart的类型需要专门讨论。就像一个web页面中可以包含多个对象(例如文本、图像、JAVA小应用程序等)那样,一个电子邮件消息也可以包含多个对象。我们已经知道,Web是通过各自独立的HTTP响应消息传送每个对象的。因特网电子邮件则相反,它把同一个邮件消息的所有对象(即部分)封装在单个消息中。具体地说,当一个多媒体消息含有不止一个对象时(例如多个图像或ASCII文本与图像共存),其Content-Type:头部的值通常为multipart/mixed。这头部向接收用户代理指出本消息中含有多个对象。既然多个对象共处同一个邮件消息,接收用户代理就得有办法确定:(1)每个对象的起止位置,(2)每个非ASCII文本对象的传送编码方式,(3)每个对象的内容类型。这是通过在每个对象之间放置边界字符串,并在每个对象之前定义Content-Type:和Content-Transfer-Encoding:头部实现的。

  为便于理解multipart/mixed,让我们看一个例子。假设Alice想给BOb发送一个邮件消息,其内容为一些ASCII文本,后跟一个JPEG图像,再跟一些ASCII文本。Alice使用自己的用户代理编辑文本并附上图像后,该用户代理生成一个大体如下的邮件消息;

  From:alice@crepes.fr
  To:bob@hamburger.edu
  MIME-Version:1.0
  Content-type:multipart/mixed;Boundary=StartOfNextPart

  --StartOfNextPart
  Dear bob,
  Please look at the picture
  --StartOfNextPart
  Content-Transfer-Encoding:base64
  Content-type:image/jpeg
  (...base64编码的数据...
  ...base64编码的数据...)
  --StartOfNextPart
  there is some acsii letter here

  从中我们可以看出,Content-type:头部的Boundary参数用于指定分隔各个部分的边界字符串。在邮件消息体中,该分隔字符串以两个短划线开头,以CRLF结尾。

  Received:头部

  我们已经知道一个电子邮件消息由多个部件构成。信体是邮件消息的核心,它是发送者发送给接收者的真正数据。对于多部分邮件消息来说,其信体本身由多个部分组成,而每个部分又有一个或多个说明其数据性质的头部。信体之前是一个空行和由多个邮件消息头部组成的信头。这些头部既包括在RFC 822中定义的头部,例如From:、To:和subject:也包括MIME头部,例如Content-type:和Content-Transfer-Encoding:。除此之外,我们还得提及由SMTP接收服务器插到每个邮件消息的项端的Received:头部,它给出了发出本消息的SMTP服务器的主机名(“from”)、收取本消息的SMTP服务器的主机名(“by”)以及接收服务器收取本消息的时间。因此,作为接收者的用户看到的邮件消息大体如下:


  Received:from crepes.fr by hamburger.edu;18 Oct 2005 05:53:37 GMT
  From:alice@crepes.fr
  To:bob@hamburger.edu
  MIME-Version:1.0
  Content-type:multipart/mixed;Boundary=StartOfNextPart

  --StartOfNextPart
  Dear bob,
  Please look at the picture
  --StartOfNextPart
  Content-Transfer-Encoding:base64
  Content-type:image/jpeg
  (...base64编码的数据...
  ...base64编码的数据...)
  --StartOfNextPart
  there is some acsii letter here

  有时候,单个邮件消息会有多个Received:头部,有的还会有一个较复杂的Return-path:头部。这是因为邮件消息在从发送者的主机到接收者的主机的传送过程中,可能会被转发到不止一个SMTP服务器。例如,如果Bob指示他在主机hamburger.edu上的邮件服务器把他的所有邮件转发到主机sushi.jp,那么他通过其用户代理看到的邮件消息可能以大体如下的两行开头:

  Received:from hamburger.edu by sushi.jp;18 Oct 2005 05:55:37 GMT

  Received:from crepes.fr by hamburger.edu;18 Oct 2005 05:53:37 GMT

  这些头部给接收用户代理提供了相应邮件消息访问过的SMTP服务器及访问时间的踪迹。SMTP规范所在的RPC 822详细定义丁Received:头部的语法。
邮件访问协议

  一旦SMTP把Alice发给Bob的邮件消息从Alice的邮件服务器传送到Bob的邮件服务器,该邮件消息就存放在Bob的邮箱中。在此前的讨论中,我们已假设Bob通过直接登录到自己的邮件服务器主机启动用户代理来阅读该邮件消息。直到20世纪90年代早期,这仍然是标准的做法。然而,当今的用户一般使用在本地PC机(或Mac机)上执行的用户代理来阅读邮件,而不管是办公室PC机、家庭PC机还是便携机。用户在本地PC机上执行用户代理可享受诸多好处,包括方便查看多媒体邮件消息和附件。

  邮件消息的接收者在本地PC机上执行用户代理时,很自然的一个想法是在本地PC机上也运行邮件服务器。然而这种方法存在一个问题。我们已经知道,邮件服务器是管理邮箱并运行SMlP的客户端和服务器端的,这意味着如果收信人把自己的邮件服务器驻留在本地PC上,那么他不得不始终开着这台PC机并连接在因特网上,以便接收可能在任意时刻到达的新邮件。对于大多数因特网用户来说,这显然是不现实或不经济的做法。相反,用户一般只在本地PC机上运行一个用户代理,由它远程访问存放在某台共享的邮件服务器主机上的邮箱,而该邮件服务器主机总是连接在因特网上并为多个用户所共享。该主机及其上的邮件服务器—般由该用户的ISP(例如大学或公司)维护。

  既然用户代理运行在各个用户的本地PC机上,邮件服务器则运行在ISP或机构内部网络中的某台服务器主机上,用户代理和邮件服务器之间就得有一个彼此通信的协议。我们先查看一下出自从Alice的本地PC机的某个邮件消息如何设法到达Bob的SMTP邮件服务器。这个任务可简单地由A11ce的用户代理使用SMTP直接与Bob的邮件服务器进行通信来完成。具体地说,从Alice的用户代理发起建立一个到Bob的邮件服务器的TCP连接,并通过该连接发出SMTP握手命令,再用DATA命令上传邮件消息,最后关闭连接。这种方法尽管切实可行,却很少被采用,因为它没有给Alice的用户代理提供任何资源来应对目标邮件服务器临时崩溃的情况。相反,通常采用的方法是先由Alice的用户代理发起与自己的邮件服务器的一个SMTP会话,把邮件消息上传到该邮件服务器;再由Alice的邮件服务器发起与Bob的邮件服务器的一次SMTP会话,把邮件消息中转给Bob的邮件服务器。如果Bob的邮件服务器暂时不可用,Alice的邮件服务器就暂存该邮件消息,以后继续尝试。SMTP的RFC定义了可用于跨多个邮件服务器中转邮件消息的SMTP命令。

  现在的问题是,像Bob这样在本地PC机上运行用户代理的收信人该如何获取已到达自己的邮件服务器的邮件消息(该邮件服务器运行在Bob的ISP中的某台主机上)。通过引入用于从自己的邮件服务器到本地PC机上的用户代理传送邮件消息的邮件访问协议,这个问题彻底得以解决。日前流行的邮件访问协议有两个:邮局协议版本3(Post office ProtocolVersion 3,简称POP3)和因特网邮件访问协议(Internet Mail Access Protocol,简称IMAP)。注意,用户代理不可能使用SMTP从邮件服务器获取邮件消息,因为邮件消息的获取是一个内拉操作,而SMTP是一个外推协议。图3汇总了因特网电子邮件系统个所用的协议:SMTP用于从发送者的邮件服务器到接收者的邮件服务器传送邮件消息,也用于从发送者的用户代理到发送者的邮件服务器传送邮件消息;POP3或IMAP用于从接收者的邮件服务器到接收者的用户代理传送邮件消息。


图3 电子邮件协议及它们的通信实体
POP3

  RFC 1939个定义的POP3是一个极为简单的邮件访问协议。正因为它过于简单,其功能也相当有限。POP3开始于用户代理(客户)打开一个到POP3服务器(服务器)端口号110的TCP连接。POP3服务器与邮件服务器运行在相同的服务器主机上,前者从用户的邮箱中读取并可能删除邮件消息,后者往用户的邮箱中写入邮件消息。TCP连接建立好之后,POP3依次经历授权队证、处理和更新3个阶段。在授权阶段,用户代理分别发出一个用户名和一个口令以认证下载邮件消息的用户。在处理阶段,用户代理获取邮件消息,并可以标记待删除的邮件消息或去掉这些标记,获取邮件统计信息。更新阶段发生在用户代理发出quit命令以结束当前POP3会话之后,期间POP3服务器删除己加过删除标记的邮件消息。

  在POP3会话期间,用户代理发出命令,PoP3服务器则对每个命令响应以一个应答。可能的应答有两个:指出刚才的命令执行成功的+oK(有时后跟一个解释性消息)和指出刚才的命令执行有误的-ERR。

  授权阶段共有两个基本命令:user <用户名>和pass<口令>。我们可以便用telnet工具指定使用POP端口号110直接登录到某台POP3服务器主机,并发出这些命令来展示它们的用法。假设mailserver是你的邮件服务器主机的名字,这个过程大体如下;


  telnet mailserver 110
  +OK POP3 server ready
  user alice
  +OK
  pass password
  +OK user successfully logged on

  当然要是写错了某个命令,POP3服务器将返回一个-ERR应答。

  下面查看一下处理阶段。使用POP3的用户代理可由用户配置成“下载并删除”或“下载并保留”两种模式之一。POP3用尸代理发出的一系列命令取决于自己运行在哪种模式。在下载井删除模式中,用户代理会发出list,retr和dele命令。作为例子,我们假设用户的邮箱中已存有两个邮件消息,共POP3处理阶段大体如下(其中前面标以“C:”的是用户代理发出的命令,前面标以“S:”的是POP3服务器返回的应答):

  C:list
  S:1 498
  S:2 912
  S:.
  C:retr 1
  S:(blab ......
  S: ............
  S: ......)
  S:.
  C:dele 1
  C:retr 2
  S:(... ...
  S:...
  S:......)
  S:.
  C:dele 2
  C:quit
  S:+OK POP3 server signing off

  用户代理首先要求POP3服务器列出存放在自己的邮箱中的每个邮件消息的大小,接着依次取回并删除每个邮件消息。需注意的是,授权阶段结束之后,用户代理只能发出4个命令:list,retr,deie,quitt。这些命令的具体语法定义在RFC 1939中。处理完quit命令后,POP3服务器进入更新阶段,把邮件消息1和2从相应的邮箱中删除。

  下载并删除模式存在一个问题,也就是收信人可能希望从不止一台主机访问自已的邮箱,如既能从办公室PC机访问.也能从家庭PC机访问,还能从使携机访问。下裁并删除模式将导致同一用户的邮件消息散布到他的多台主机上;例如,要是他先在家里的PC机上阅读了某个邮件消息,以后就没法在使携机上阅读同一个邮件消息了。下裁并保留模式则恰好相反,用户代理把己从POP3服务器下载的邮件消息继续保留在邮件服务器中。这种模式下,用户可以在不同的时间从不向的主机访问同样的邮件消息。

  在用户代理和邮件服务器之间的POP3会话期间,POP3务器维护一定的状态信息:具体地说,它跟踪哪些邮件消息己被标记成待删除。不过POP3服务器不会跨会话保存状态信息。例如,每次会话开始之时没有任何邮件消息被标记成待删除。这种不跨会话保存状态信息的处理办法极大地简化了PoP3服务器软件的实现。
IMAP

  收信人使用POP3把邮件消息下载到本地机之后,就可以把它们移入现行的或新创建的邮件夹中。他然后可以删除邮件消息,跨邮件夹转移邮件消息,按发信人名字或消息主题搜索邮件消息,等等。然而,这种邮件夹和邮件消息都存放在本地机上的模式对于游动用户却构成了问题。游动用户更愿意在远程邮件服务器主机上维护邮件夹,这样从任何主机都可以访问它。使用POP3是不可能做到达一点的。

  RFC 2060中定义的IMAP协议正是为解决本问题和其他一些问题而发明的。IMAP提供的特性比POP3多出不少,不过也复杂得多,其客户端和服务器端的实现也相应地更为复杂。IMAP设计成允许用户象对待本地邮箱那样操纵远程邮箱。具体地说,IMAP使得收信人能够在自己的邮件服务器主机中创建并维护多个存放邮件消息的邮件夹。他们可以把邮件消息存入邮件夹,也可以从一个邮件夹到另一个邮件夹转移邮件,还可以在这些远程邮件夹中搜索匹配特定准则的邮件消息。IMAP的实现比POP3的实现复杂得多,原因之一就是IMAP服务器必须为每个用户维护一个邮件夹层次结构。某个用户相继访问自己的IMAP服务器时,这个IMAP服务器为该用户维护的状态信息跨这些相继的访问保持一致。POP3服务器则相反,一旦用户退出当前的POP3会话,它们就不再为他们维护状态信息。

  IMAP的另一个重要特性是,它有一些允许用户代理获取邮件消息部件的命令。例如,用户代理可以只获取邮件消息的信头,或者只获取多部分MIME消息的某个部分。这个特性在用户代理和邮件服务器主机之间为低带宽连接(例如无线连接或低速调制解调器拨号连接)时非常有用。通过低带宽连接访问邮件时,用户很可能不希望下载自己的邮箱中的所有邮件消息,特别是可能含有音频或视频剪辑的长消息。

  IMAP会话过程首先是用户代理(客户)发起建立…个到IMAP服务器(服务器)端口号143的TCP连接,然后是服务器返回初始问候消息,接着就是客户和服务器之间的交互了。客户和服务器的交互与POP3的类似,不过要丰富些,由客户发出的命令、服务器返回的数据或命令完成结果响应构成。IMAP服务器在会话期间总是处于以下4个状态之一:未认证(nonauthenticated)、已认证(authenticated)、已选择(selected)和注销(1ogout)。未认证状态是连接刚建立时的初始状合,这种状态下,用户必须提供一个用户名和口令对才能发出更多的命令。在已认证状态下,用户必须选择一个邮件夹才能发出作用于邮件消息的命令。在已选择状态下,用户可以发出作用于邮件消息的任何命令(获取、转移、删除、获取多部分消息的某个部分,等等)。最后的注销状态是会话即将终止时的状态。IMAP命令是按照每个状态下分别能够执行哪些命令来组织的。在IMAP的官方站点可以找到关十IMAP的所有内容。

  HTTP邮件

  今天,越来越多的用户转向使用基于浏览器的电子邮件服务,例如Hotmail和Yahoo!Mall。使用提供这种服务的服务器时,用户代理是普通的web浏览器,用户与存放在邮件服务器主机上的邮箱之间的交互相应地经由HTTP完成。当收信人(例如Bob)想要查看自己的邮箱中的邮件消息时,这些消息是通过HTTP协议(而不是POP3或IMAP协议)从邮件服务器主机传送到他的浏览器的。当发信人(例如Alice)想要发送电子邮件消息时,这些消息也是通过HTTP(而不是SMTP)从她的浏览器传送到她的邮件服务器主机的。不过邮件消息在邮件服务器主机之间的中转仍然通过SMTP。这种邮件访问办法对于游动用户来说极为方便。游动用户只要能使用浏览器,就能收发邮件消息,而浏览器可以在网吧、朋友家、装有Web Tv的旅馆等地方找到。与IMAP一样,用户可以在远程服务器主机中使用一个邮件夹层次结构组织邮件消息。基于Web的电子邮件既然如此方便,在未来几年内替换掉POP3或IMAP访问办法也是有可能的。它的主要不足之处在于速度比较慢,因为其服务器主机往往远离客户主机,而且用户的浏览器是通过CGl脚本与邮件服务器间接交互的。

  持续媒体电子邮件

  持续媒体(continuous-media,简称CM)电子邮件是包含音频或视频数据的电子邮件系统,它对于朋友之间和家庭成员之间的异步交流很有吸引力。例如,学龄前儿童更愿意使用CM电子邮件给祖父母发送邮件消息。CM电子邮件在公司也可能受欢迎,因为办公室工作人员录制CM邮件消息的速度要比输入文本消息的速度快许多(使用英语每分钟可以说180个单词,但是普通办公室工作人员每分钟只能输入20一40个单词)。CM电子邮件在某些方面类似电话语音留言,不过功能要强大得多。它不仅给用户提供一个访问邮箱的图形界面,而且允许用户评注并回复CM邮件消息,或者把CM邮件消息转发给多个收信人。

  CM电子邮件与传统文本电子邮件在许多方面存在差异。CM电子邮件可能有大得多的邮件消息,对于端到端延迟有更严格的要求,对于收传人干差万别的因特网访问速率和本地存储容量也更为敏感。不幸的是,当前的电子邮件设施存在一些妨碍CM电于邮件推广的不足之处。首先,许多现有的邮件服务器没有存放大的邮件消息的容量;它们一般拒绝接收或中转CM邮件消息,因此不可能给依附它们的收传人发送这样的消息。其次,收信人的用户代理只在取得完整的邮件消息后才表达其内容,对于CM电子邮件,这会导致网络带宽和本地主机存储容量的过度浪费。事实上,仓储的CM邮件消息往往不是完整地表达的,因此接收未作表达的数据显然浪费了网络带宽和本地存储容量(例如,当某人收到来自相当唠叨的同事的长篇语音邮件消息后,可能只听上前15秒就决定不再听,要删除还剩20分钟内容的整个消息)。再次,当前使用的邮件访问协议(POP3,IMAP,HTTP)不适合为收信人流播放CM邮件消息。

  具体地说,这些邮件访问协议没有提供这样的功能:允许用户暂停/恢复播放邮件消息内容,或者在邮件消息内重新定位播放点;另外,在TCP上实现流播放往往导致糟糕的接收效果。这些不足之处有望在未来的几年内得到解决。不过近来超大邮箱开始流行起来,如GMAIL等,邮箱容量的限制问题正在得到解决。

相关文章 热门文章
  • 新手入门必看:Vista中建立VPN连接
  • 新手入门:企业邮箱及邮件服务器架设
  • LINUX新手入门及安装配置faq200
  • 手把手教你玩转NAS之新手入门(图)
  • 新手入门 漫谈服务器热插拔技术
  • 新手入门:了解邮件服务与相关协议(1)
  • 新手入门:了解DNS服务基本原理
  • 新手入门:了解FTP服务与FTP协议
  • 新手入门:了解WWW服务与HTTP协议
  • 新手入门:了解网络应用与网络协议
  • 新手入门之认识典型邮件服务器(图)
  • 中文RFC文档目录
  • 手把手教你玩转免费顶级域名
  • 浅谈Base64编码
  • 手把手教你如何免费注册国际顶级域名
  • 电子邮件原理
  • 邮件-域名-DNS相关知识
  • 全面剖析E-mail收发失败的原因(一)
  • SMTP结构及原理
  • 关于邮件系统域名(DNS)设置的小常识
  • 电子邮件的工作原理
  • 邮件原文详细介绍(一)--神奇的MIME
  • 发送邮件常见出错代码
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号