文档详情

编写简化的SMTP邮件服务器081106.doc

发布:2017-09-22约2.55万字共21页下载文档
文本预览下载声明
编写简化的SMTP邮件服务器 11.1 电子邮件系统工作原理 电子邮件是因特网上最为流行的应用之一用户代理、邮件简单邮件传协议(simple Mail Transfer Protocol,简称SMTP)邮件消息格式。因特网电子邮件系统发信人A1ice给收信人Bob发送电邮件消息 图11.1 因特网电子邮件系统概貌用户代理用户代理用户阅读、保存、回复、转、编写和邮件消息。Alice写完电子邮件消息后,用户代理把这个消息发送给Alice邮件,再由该邮件服务器把这个消息入外出消息队列中Bob邮箱所在的邮件服务器。当Bob想阅读电子邮件消息时,用户代理将从其邮件服务器上的邮箱中取得邮件。20世纪90年代后期,图形用户界面(GUI)的电子邮件用户代理变得流行起来,允许用户阅读和编写消息。当前流行的用户代理包括Outlook、Foxmail等。邮件服务器邮件服务器构成了电子邮件系统的核心。每个收信人都有一个位于某个邮件服务器上的邮箱(mailbox)。Bob的邮箱用于管理和维护已经发送给他的邮件消息。一个邮件消息的典型程是从发信人的用户代理开始,经发信人的邮件服务器,中转到收信人的邮件服务器,然后投递到收信人的邮箱中。当Bob想查看自己的邮箱中的邮件消息时,邮箱的邮件服务器将以他提供的用户名和口令认证他。Alice邮箱邮件服务器还处理Bob邮箱邮件服务器出故障情况。如果Alice的邮件服务器无法把邮件消息立即递送到Bob的邮件服务器,A1ice方的服务器就把它们存放在消息队列(message queue)中,以后再尝试递送。这种尝试通常每30分钟左右执行一次要是过了若干天仍未尝试成功,该服务器就把这个消息从消息队列中,同时以另一个邮件消息通知发信人(即Alice)。简单邮件传协议SMTPSMTP是因特网电子邮件系统要的应用层协议。它使用由TCP提供的可靠的数据传输服务把邮件消息从发信人邮件服务器传送到收信人邮件服务器。SMTP发信人邮件服务器执行的客户端和收信人邮件服务器执行的服务器端。SMTP的客户端和服务器端同时运行在每个邮件服务器上。当一个邮件服务器向其邮件服务器发送邮件消息时,它是作为SMTP客户。当一个邮件服务器从其邮件服务器接收邮件消息时,它是作为SMTP服务器。SMTP规范定义在RFC 821中,它的作用是把邮件消息从发信人的邮件服务器传送到收信人的邮件服务器。SMTP限制所有邮件消息的信体必须是简单的7位ASCII字符格式。这个限制使二进制多媒体数据在由SMTP传送之前编码成7位ASCII文本SMTP传送完毕之后,再把相应的7位ASCII文本邮件消息解码成二进制数据。下面通过假设Alice给Bob发送一个简单的ASCII文本邮件消息的情形来说明SMTP的基本操作Alice调用自己的电子邮件用户代理,给出Bob的电子邮件地址(如bob@),写好邮件内容,然后让用户代理发送本邮件消息。Alice的用户代理把该邮件消息发送到邮件服务器中,由邮件服务器把该消息某个消息队列中。运行在A1ice的邮件服务器上的SMTP客户端看到消息队列中的这个邮件消息后,打开一个到运行在Bob的邮件服务器主机上的SMTP服务器端的TCP连接。经过最初的一些SMTP握手之后SMTP客户把A1ice的邮件消息发送到TCP连接上。在Bob的邮件服务器主机上,SMTP服务器收到这个邮件消息后,把这个消息投递到Bob的邮箱中。Bob在方便的时候调用自己的电子邮件用户代理阅读该邮件消息。图11.2展示了上述情形。 图11.2 A1ice的邮件服务器把邮件消息传送到Bob的邮件服务器SMTP通常不使用中间的邮件服务器主机中转邮件如果Bob的邮件服务器不工作了,那么A1ice发给Bob的邮件消息将存留在Alice的邮件服务器中等待新的尝试,而不会存放到某个中间的邮件服务器中。SMTP协议与面对面交互的礼仪之间有许多相似之处。首先,运行在发送端邮件服务器主机上的SMTP客户,发起建立一个到运行在接收端邮件服务器主机上的SMTP服务器端口号25之间的TCP连接。如果接收邮件服务器当前不工作,SMTP客户就等待一段时间后再尝试建立该连接。这个连接建立之后,SMTP客户和服务器先执行一些应用层握手操作。就像人们在转手东西之前往往先自我介绍那样,SMTP客户和服务器也在传送信息之前先自我介绍一下。在这个SMTP握手阶段,SMTP客户向服务器分别指出发信人和收信人的电子邮件地址。彼此自我介绍完毕之后,客户发出邮件消息。SMTP提供的可靠数据传输服务TCP服务)把该消息无错地传送到服务器如果客户还有其邮件消息需发送到同一个服务器,它就在同一个TCP连接上重复上述过程否则,它就指示TCP关闭该连接客户所在主机名为,服务器所在主机名为。前面标以“C:”的ASCII文本行是客户发
显示全部
相似文档