SMTP服务原理详解

来源:互联网 发布:高中物理实验软件 编辑:程序博客网 时间:2024/05/01 00:06
SMTP服务概述
鉴于本课程的默认读者群是那些对Internet的使用已经比较熟悉的老用户,所以我们在此并不打算花很多时间介绍e_mail的使用常识,如果读者对于收发e_mail的操作碰巧还存在不明确的地方,请参阅其他关于Internet基本操作的课程。本节我们着重讨论e_mail通信的原理及其在较低网络层次上的实现机制,我们将试图在读者头脑中建立有关e_mail在Internet中传送原理的最基本认识。
我们知道e_mail用户的唯一性标识是邮件地址,形如uesrname@domain.com,即名为uesrname的用户使用域名为domain.com的邮件服务器进行邮件的发送和接收。用户通常使用客户端邮件软件(例如foxmail、Outlook Express等)联系服务器进行邮件收发。客户将邮件提交给邮件服务器之后,还需要由服务器进行一系列复杂的传递操作,这才能将邮件传送到目的地址所在的邮件服务器主机。这一传的过程的实现就依赖于SMTP服务,SMTP定义了一套有效的邮件传递规则,它以协议的方式规定了网络中全部邮件服务器共同遵守的准则。
    这里我们要指出,我们所熟悉的电子邮件服务除了依赖于SMTP协议之外,还需要POP协议的支持,而POP协议是IIS所不能支持的,所以使用IIS服务器并不能实现完整的邮件服务,这需要大家明确。笼统的说,SMTP负责邮件的传递,例如从客户机到邮件服务器,以及服务器之间的传递工作。而POP协议能够让客户检索到由SMTP发送来的邮件,并将新的邮件下载的用户本地。 右图显示了SMTP和POP协议在电子邮件传递过程中的作用。SMTP以文件夹的方式存储邮件,用户只要将需要发送的邮件投入SMTP服务器上指的文件夹中即可实现邮件的发送,但是,用户不得不自行检索相应的文件夹得到自己的新邮件(实践中并不用这种方法)。
    现在我们来看POP,POP的含义是邮局协议(Post office Protocol),一般的,人们习惯于使用POP协议的版本号称呼POP服务器,目前在Internet上的大多数POP服务器为POP3服务器。如右图,SMTP服务器将邮件发送给POP3服务器。用户使用客户端邮件软件联系POP3服器,使用账号和密码进行身份验证之后,用户将待发邮件从本地发送到服务器,POP3服务器将用户邮件发送到用户本地。这一过程中,POP3服务器本身也是一台SMTP服务器,但它能够
为每一用户指定一个单独的文件夹,这是纯粹的SMTP服务器所不能做到的。
上述内容并非大多数电子邮件服务提供商所实际使用的方式,作为补充,我们再次简要介绍一下公用邮件服务提供商通常(例如freemail.263.net、hotmail.com)使用的工作方式。它们通常同时使用两个邮件服务器地址,如freemail.263.net:它的POP3服务器为263.net ,SMTP服务器为smtp.263.net。用户通过客户端邮件软件(需要配置SMTP及POP3服务器地址)连接到263免费邮件服务器之后,先要通过账号身份验证,然后进行邮件收发。这里涉及两个过程:SMTP和POP3。用户使用SMTP,通过TCP端口25发送邮件;而POP3检索用户的新邮件并使用TCP端口110将新邮件发送到用户本地。由此可见,完善的邮件服务需要SMTP和POP3的共同作用。但是鉴于IIS并不支持POP3,所以我们将不介绍很多POP3的内容。说到这里,读者应该清楚的了解IIS在邮件服务方面的限制,不过在某些场合,SMTP还是有它存在的价值。 SMTP工作原理
前文已经提到,IIS所支持的SMTP服务存在许多功能或性能的限制,这是由SMTP服务本身的限制所决定的。事实上,即使是IIS所支持的SMTP服务也只是Microsoft的其他邮件产品,如Exchange、Site Server,所提供的SMTP服务的简版。与其说存在技术上的瓶颈,还不如说是Microsoft的一种产品策略,毕竟IIS是随Windows 2000免费附送的,而Exchange、Site Server或其他公司等邮件(群件)产品(如Notes等)都是价值不菲的软件。同时,对于小型商业企业、政府、教育机构来说,IIS的SMTP所实现的功能已经足够了。同时,在某些只需发送邮件的场合(宣传、营销等),使用SMTP还有意想不到的作用。为了弥补SMTP服务不能主动接收邮件的缺陷,某些系统管理员还通过自己写一些ASP代码实现邮件检索功
能(通过CDO for NTS库),从而可以读取SMTP文件夹中的简单邮件等。
SMTP通过文件夹方式实现邮件的传送,一封邮件在存送的各个不同过程(状态)下被SMTP放入不同文件夹中。例如,用户只需将待发送的邮件投入发送文件夹就可以由IIS实现自动发送,而用户收到的新邮件也是被IIS投放到收件文件夹中。
由IIS自动生成的默认SMTP站点具有如右图所示的缺省文件夹,它们位于inetpub目录下的mailroot文件夹中,主要的功能文件夹有:
● Pickup:拾取待发送邮件,用户将待发邮件投入此文件夹。
● Queue:保存传送过程中的邮件,因网络繁忙、目标服务器无响应等原因不能一次发送成功的邮件暂存在此等待继续发送。 ● Drop:接收所有传入邮件。
● Badmail:存放不能投递且不能返回发送者的邮件(称为死信)。
● Route、SortTemp、MailBox:IIS使用这些目录对发往其他服务器的邮件进行排序和重组,从而使投递过程有序、快捷。
注意:上述文件夹中,除了Badmail和Drop可以移到其他分区外,其余文件夹必须保存在NTFS分区上。
    SMTP服务的工作原理如右图所示,一旦用户将待发邮件投放到Pickup文件夹中,IIS即时将信邮件拾获并加入Queue文件夹,然后由IIS判断邮件的目标地址,根据收件人位于本地或远程判断下一步工作:
● 本地邮件传送:如果邮件是送交本地收件人的,IIS将其从Queue文
件夹直接移动到Drop 文件夹中,一旦邮件存放到Drop目录,SMTP的邮件传送循环就算完成了。
● 远程邮件传送:对于收件人账号位于远程邮件服务器商的邮件,SMTP服务将进行如下操作:
1.SMTP服务将邮件进行编组,以便在发送时能够一次将多个邮件同时发送出去,以优化网络资源消耗。
2.IIS负责检验远程邮件服务器是否做好接收邮件的准备,一旦准备妥当即可进入下一步。否则,邮件将重新进入待发邮件队列(Queue文件夹),随后,IIS将每隔一定时间从新尝试联系目标服务器,尝试次数与收件间隔可在SMTP服务属性中设置(详见下文)。
2.IIS负责检验远程邮件服务器是否做好接收邮件的准备,一旦准备妥当即可进入下一步。否则,邮件将重新进入待发邮件队列(Queue文件夹),随后,IIS将每隔一定时间从新尝试联系目标服务器,尝试次数与收件间隔可在SMTP服务属性中设置(详见下文)。
3.IIS将邮件实际发送到Internet(Intranet)中,等到目标邮件服务器返回一个成功收到邮件的信息之后,邮件的发送工作就算圆满完成了。此步骤中可选的高级功能包括SSL加密、使用智能主机转发、指定特殊路由等将待稍后详述。
4.一旦目标邮件服务器不能接受邮件(主要因为目的地址不存在或邮件据收),IIS将尝试将邮件返回给发送用户,如果返回操作不成功,该邮件将作为死信投递到Badmail文件夹中。
上述过程就是IIS中SMTP服务的工作原理,除了IIS服务器之外,客户机还需安装客户端邮件程序。 配置SMTP服务器
在上文阐述的SMTP服务工作原理基础上,我们在本节中将讨论配置SMTP服务器的具体方法和技巧。SMTP服务器的创建、管理和配置工作是在IIS中完成的,其中SMTP服务器属性表单和域属性表单是对SMTP进行配置的主要界面。
创建SMTP虚拟服务器
SMTP服务也有虚拟服务器的概念,通过创建SMTP虚拟服务器可以在同一台计算机上实现多个SMTP邮件服务器。当然,不同虚拟服务器的缺省目录(邮件文件夹)是不同的。
在网络中唯一区分SMTP服务器的标识有IP地址和TCP端口号,SMTP服务的缺省TCP端口号为25。通常在IIS安装完成之后(安装过
程中已选择SMTP服务),系统自动生成一个默认SMTP站点,它与默认Web服务器和默认FTP服务器共用系统缺省的IP地址。
以下我们将新建一个SMTP虚拟服务器站点:
1.在IIS管理控制树中右击计算机节点,如右上图所示,在弹出菜单中指向【新建】单击【SMTP虚拟服务器】。
2.在【SMTP虚拟服务器创建向导】对话框中指定新站点的标识,在【SMTP虚拟服务器描述】栏中添入的名称实际用于在IIS内部区分站点,注意,这一名称并非SMTP服务器的域名。单击【下一步】。