应用层之电子邮件系统

1.电子邮件系统的组成部分

  1.用户代理(user  agent)

  2.邮件服务器(mail server)

  3.简单邮件传输协议(simple mail transfer protocol,SMTP)

  

    邮件服务器形成了电子邮件系统的核心。

    邮箱(mailbox)是邮件服务器为用户单独开辟的一个空间。

    邮件发送过程可以描述为:

      报文从发送方的用户代理开始,传输到到发送方的邮件服务器。再由发送方的邮件服务器传输到接受方的邮件服务器。最后由接受方的邮件服务器分发到接受方的邮箱(mailbox)中。

    报文队列:如果接受方的邮件服务器故障,那么发送方的邮件服务器会将要发送的报文存储在一个报文队列(massage queue)中,并在以后尝试发送。通常每30分钟左右就进行一次尝试。如果几天后仍然不能成功,服务器就删除该报文并以电子邮件的形式通知发送方。

    smtp:在一个邮件服务器上同时运行着smtp的客户端和smtp的服务端。发送邮件时,smtp客户端起作用,接受邮件时smtp起作用。

2.SMTP

  1.smtp的一个小的历史缺憾:

  smtp限制所有邮件报文的体部分(不只是其首部)只能采用简单的7比特ASCII表示。在20世纪80年代早期,这种限制是明智的,因为当时传输能力不足,没有人会通过电子邮件发送大的附件或是大的图片、声音或者视频文件。然而,在今天的多媒体时代,7位ASCII的限制的确有点痛苦,即在用SMTP传送邮件之前,需要将二进制多媒体数据编码为ASCII码,并且在使用SMTP传输后要求将相应的ASCII码邮件解码还原为多媒体数据。

  使用HTTP传送就不需要将多媒体数据编码为ASCII码。

  2.邮件发送(ASCII报文)

  假设Alice想给Bob发送一封简单的ASCII报文:

  • Alice调用她的邮件代理程序并提供Bob的邮件地址(例如[email protected]),撰写报文,然后指示用户代理发送该报文。
  • Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。
  • 运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。
  • 在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文。
  • 在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将该报文放入Bob的邮箱中。
  • 在Bob方便的时候,他调用用户代理阅读该报文。

  

  

    SMTP一般不使用中间邮件服务器发送邮件。即发送方邮件服务器和接收方邮件服务器是直接连接的(TCP 25端口)。

    

  • 在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文。
  • 在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将该报文放入Bob的邮箱中。
  • 在Bob方便的时候,他调用用户代理阅读该报文。

  一旦创建了TCP连接,就开始了如下过程:

  

    s:220 hamburger.edu     //表示连接邮件服务器成功

    C:HELO crepes.fr     //验证服务器 向服务器问好

    C:MAIL FROM:<[email protected]>    //验证发件人邮箱地址

    C:RCPT TO:<[email protected]>  //验证接收人地址

    C:DATA                          //开始写邮件了

    C:Do you like ketchup?  //邮件内容

    C: How about pickles?   //邮件内容

    C:.                               //CRLF.CRLF  表示报文结束 。CR和LF分别表示回车和换行。第一个CRLF是上一行末尾的回车和换行。

    C: QUIT                     //断开连接

3.SMTP与HTTP对比

  相同:

  1.两个协议都是用于一台主机箱另一台主机传送文件。http是在web服务器向web客户(通常是一个浏览器)传送文件,smtp是在两个邮件服务器之间传送文件。

  2.smtp和持续的http都是持续连接(长连接)。

  区别:

  1.http是一个拉协议(pull protocol),即用户使用http从服务器拉去这些信息。smtp是一个推协议(push protocol),即发送邮件服务器将文件推向接收邮件服务器。特别是,这个TCP连接是由要发送该文件的机器发起的。

  2.smtp要求每个报文(包括他们的体)使用7比特ASCII码格式。如某报文包含了非7比特ASCII字符或二进制数据(如图形文件),则该报文必须按照7比特ASCII码进行编码。而http数据则不受这种限制。

  3.对于如何处理既包含文本图形的文档。http把每个对象(多个文件对象)封装到它自己的http响应报文中,而smtp则把所有报文对象(多个报文)放在一个报文之中。

4.邮件报文格式和MIME

  MIME协议( Multipurpose Internet Mail Extensions ),通用因特网邮件扩充协议 ,作为SMTP的一种辅助协议,其引入是为了克服SMTP的如下不足:

1.SMTP只能发送使用NVT( 虚拟网络终端 ) 7位ASCII码格式的报文,它不能使用NVT 7位ASCII码不支持的语言(如汉语,日语,德语等)。

2.SMTP不能传送可执行文件或其他二进制对象(如图像文件,这里的不能传送应该指的是接受方并不能确定接受数据的准确性和完整性)。

3.SMTP不支持音频或视频文件。

4.SMTP发送的邮件的长度受到限制。

为了克服以上的不足,便引入了MIME协议,MIME协议是一种扩展协议性的辅助协议,“扩充”指的是只是对原来协议的扩展,而不是取代。它允许非ASCII码数据能够通过电子邮件传送。MIME在发送方把非ASCII码数据转换为NVT ASCII数据,之后的工作再交给SMTP完成,在接收方再将NVT ASCII数据还原成原来的数据。MIME的体系结构如下:

  •   MIME定义了5种首部,用来加在原始的电子邮件部分以定义参数的转换,这五种首部分别是: MIME-Version(MIME版本 )、 Constent-Type ( 内容类型 )、 Content-Transfer-Encoding ( 内容-传送-编码 )、 Content-Id ( 内容-标识 )和 Content-Description ( 内容描述 )。

MIME版本 :定义了MIME使用的版本。

内容-类型 :定义报文主体使用的数据类型和子类型,用<数据类型/子类型>表示。

   内容-传送-编码 :定义了邮件的主体在传送时是如何编码的。

内容-标识 :在多报文的环境中唯一地标识报文。

内容描述 :定义了主体是否为图像、音频或视频。

  •   一个简单的MIME格式报文如下(应该就是smtp命令DATA后面的内容了): 

    1Date: Thu, 18 Apr 2002 09:32:45 +0800      //首部行

    2From: <[email protected]>            //首部

    3 To:<[email protected]>           //首部  

    4Subject: Test                  //首部  

    5 Mime-Version: 1.0                //首部

    6 Content-Type: text/plain;charset="iso-8859-1"    //首部

    7                         //空行

    8 Thisis a simple mail.               //报文体

  • pop3

  pop3是一个极为简单的邮件访问协议(pull protocol),由RFC1939进行定义。用户代理(客户)打开一个到邮件服务器端口110上的tcp连接。

  pop3按照三个阶段:

  特许(authorization)-->用户代理以明文形式发送用户名和密码以鉴别用户。

      client: telnet mailserver 110    //与邮件服务器110端口建立tcp连接

      server: +OK server ready             //邮件服务器响应

      client: user bob        //用户名 bob

      server: +OK

      client: pass password     //密码

      server:+OK user successfully logged on

  事务处理

    此阶段,用户代理从邮件服务器取回邮件报文(此阶段用户代理还能对邮件报文做删除标记和取消删除标记,以及获取邮件的统计信息)

    c:list

    s: 1 498    //报文1长度

    s:2 912    //报文2长度

    c:retr 1

    s: (bla bla bla..............)  //报文1

    c: dele 2        //对报文2进行删除标记

    c:quit

    s:+OK POP3 server singing off //退出后,邮件服务器会删除邮件报文2

  结束:

    quit命令后,结束该pop3会话。

  • IMAP

pop3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。这会给那些移动用户带来不方便。

IMAP解决了此问题。IMAP服务器把每个报文与一个文件夹联系起来;报文第一次到达服务器时,它与收件人的inbox文件夹相关联。

IMAP的另一个重要特性时它具有允许用户代理获取报文组件的命令。例如,一个用户代理可以只读取一个报文的报文首部,或者只是一个多部分报文的一部分。当使用低宽带连接时,用户可能并不想取回他邮箱中的所有邮件,尤其要避免可能包含如音频或视频片段的大邮件。

  • 基于Web的电子邮件

今天越来越多的用户使用web浏览器收发电子邮件。用户代理(不管时发送方还是接受方)与邮件服务器之间都是通过http进行通信,但是邮件服务器之间发送和收发邮件时仍然使用的时SMTP。

原文地址:https://www.cnblogs.com/chen-jack/p/10236691.html

时间: 2024-10-09 09:12:26

应用层之电子邮件系统的相关文章

解析大型.NET ERP系统 电子邮件系统帐户集成

为保证ERP系统的信息流准确快速的传递,需要给系统设计一个消息盒子机制.当系统中发生业务操作后,需要提醒下一个环节的操作人员,以保证ERP信息流快速准确传递.比如生产任务单(工作单,加工单,制单)过帐完成后,需要通知仓库准备材料供车间领料生产.消息盒子的界面大致如下所示: 消息盒子包含业务通知(Messages)和工作流审批(Workflow).业务通知比如采购人员下达采购订单PO后,需要通知仓库人员准备收货.工作流审批是以审批为基础的单据流程控制. 在实现消息盒子过程中,遇到一个客户需要将消息

电子邮件系统原理详解

电子邮件系统中一般有邮件用户代理(MUA).邮件传输代理(MTA).邮件投递代理(MDA) 电子邮件协议包括: 1.SMTP(简单邮件传输协议),监听在tcp25号端口,用于发送邮件 2.POP3(邮局协议),监听在tcp110端口,用于接收邮件 3.IMAP(互联网邮件访问协议),监听在tcp143端口,同样用于接收邮件,但还提供摘要浏览功能 发信过程: 主机A要发送一封邮件时,MUA先通过SMTP协议将邮件交给服务器1,MTA收到后,判断邮件收件人是否为本地系统的用户,若是,则将邮件交给MD

电子邮件系统帐户集成

.NET ERP系统 电子邮件系统帐户集成 为保证ERP系统的信息流准确快速的传递,需要给系统设计一个消息盒子机制.当系统中发生业务操作后,需要提醒下一个环节的操作人员,以保证ERP信息流快速准确传递.比如生产任务单(工作单,加工单,制单)过帐完成后,需要通知仓库准备材料供车间领料生产.消息盒子的界面大致如下所示: 消息盒子包含业务通知(Messages)和工作流审批(Workflow).业务通知比如采购人员下达采购订单PO后,需要通知仓库人员准备收货.工作流审批是以审批为基础的单据流程控制.

电子邮件系统双机热备部署方案

双机热备部署 双机热备针对的是服务器的临时故障所做的一种备份技术,通过双机热备,来避免长时间的服务中断,保证系统长期.可靠的服务.企业为了避免服务器故障产生数据丢失等现象,旧的技术是利用RAID技术和数据备份技术,但是数据备份只能解决系统出现问题后的恢复.无论是硬件还是软件问题,都可能会造成邮件服务的中断,而RAID及数据备份技术恰恰就不能解决避免服务中断的问题. 发生宕机事故后到恢复服务器运行,再轻微的问题或者强悍的技术支持,服务器也会中断一段时间,可能会造成邮件的丢失,对于一些需要不间断在线

计算机网络之电子邮件系统

电子邮件系统 一个电子邮件系统应具有三个主要组成部分:用户代理.邮件服务器.邮件发送协议(如SMTP)与邮件读取协议(如POP). 用户代理(User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户PC机中的一个程序.一般具有撰写.显示.处理.通信等功能. 因特网上有许多邮件服务器可供用户选择,邮件服务器24小时不间断地工作,并且具有大容量的邮件信箱.邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付.被拒绝.丢失等).邮件服务器按照客户服务器

如何更好地运行并保护自己的电子邮件系统?

电子邮件是Internet上最古老的协议之一.尽管年代久远,它仍然是最受欢迎的.知名网络黑客安全专家,东方联盟创始人郭盛华曾透露:“尽管许多个人和组织选择将其电子邮件外包给谷歌.微软.网易等等,但这并不是每个人的选择.一些行业对数据所有权施加了严格的监管约束,个人担心其隐私,所以搭建自己邮件系统是非常重要.” 运行电子邮件服务器 设置电子邮件服务器不是很困难.大多数类似Unix的操作系统都包含sendmail或现成的替代产品.一些Linux发行版也这样做.更具挑战性的任务是确保邮件服务器的安全,

计算机网络(谢希仁版)--应用层

应用层: 1. 域名系统(DNS): 1. 概述: 许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统. 因特网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS. 名字到 IP 地址的解析是由若干个域名服务器程序完成的.域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器. 2.  因特网的域名结构: 因特网采用了层次树状结构的命名方法. 任何一个连接在因特网上的主机或路由器,都有一个唯

[计算机网络-应用层] 因特网中的电子邮件

下图是因特网电子邮件系统的总体情况,从该图中我们可以看出它有3个重要组成部分:用户代理(user agent).邮件服务器(mail server)和简单邮件传输协议(Simple Mail Transfer Protocol,SMTP). 用户代理允许用户阅读.回复.转发.保存和撰写报文. 邮件服务器组成了电子邮件体系结构的核心.每个接收方在其中的某个服务器上有一个邮箱.邮箱包含用户的到达报文.离开(将发送)邮件报文的报文队列:在发送电子邮件报文的邮件服务器之间采用SMTP协议. SMTP是因

规划和安装邮件系统

1.1.1电子邮件系统的组成部分 邮件系统是一套单独的系统,它有自己独立的服务器,目的是传递计算机用户之间的数据.电子邮件系统的做有包括书写,发送,存储和接受四个方面,用户通过邮件服务器申请一个邮箱,就可以使用电子邮件服务收发邮件,电子邮件系统由两大部分组成,包括MUA和MTA. 1.邮件用户代理 邮件用户代理客户端是用来阅读和书写邮件的一种程序,用于接受用户输入的各种程序指令,将用户的邮件发送到邮件服务器中,或者通过POP3或IMAP协议将邮件从邮件服务器读取到本机.目前常见的邮件用户代理软件