实现SMTP

来源:互联网 发布:疯狂美工注册码 编辑:程序博客网 时间:2024/05/16 06:26

设置邮件属性通过邮件属性,SMTP虚拟服务器可以对用户邮件的大小、数量进行限制。这种限制的核心目的在于合理的分配网络资源,尤其带宽资源。例如对用户邮件大小的限制,避免了单个用户独占网络流量;又如对邮件的收件人数量限制,有效的控制了垃圾邮件。    SMTP服务器的邮件属性是在虚拟服务器属性表单的【邮件】选项卡中进行配置的,如右图所示。默认时,全部限制统统有效。下面我们先来看看这里的四种邮件限制:限制邮件大小:限制SMTP服务器所能够接收的最大邮件尺寸,以KB为单位(缺省为2048KB)。当客户邮件程序试图发送一个大于此限制的邮件时,将收到一条未发送报告(NDR),随后将邮件退回客户端。对于远程邮件服务器,如果其支持EHLO,则在实际发送邮件之前会检查此限制,发现邮件过大时自动生成NDR并报告发件人。而不支持EHLO的服务器则试图发送过大的邮件,直到超过此  限制而被迫结束发送并声称NDR。若不想对此值进行限制,在此应取消选择【限制邮件大小为】复选框,以下皆如此。

限制会话大小:限制一个连接中的全部邮件大小的总和,亦即一次连接过程中的总数据流量大小。设置该值时应考虑邮件代理(MTA)反复提交邮件的效应。该值的单位是KB,默认的最大邮件限制为10240KB。限制每个连接的邮件数:限制邮件客户在一次连接中最多可以发送的邮件数目,默认是20。超出这一限制的邮件将被拒绝发送。限制此值时应考虑对大通讯量邮件用户所造成的性能限制,用户为了完成大量的邮件发送工作,将不得不重新建立连接。限制每个邮件的收件人数:限制每封邮件的收件人数上限,默认为100。超出该上限的邮件将退回发件人,并附上一个未发送报告(NDR)。有些客户机会再将带有NDR的邮件再次返回SMTP服务器,这时SMTP服务器将不再拒收,而是重新建立一个连接发送这些邮件。【邮件】选项卡中还可以设置【将未发送报告的副本发送到】这样的值,该值指定了一个mail地址,SMTP服务器所产生的全部NDR报告都将以副本的形式发送给该地址,通常由SMTP服务器管理员处理这些报告。另一个可设定值是【死信目录】,死信是既不能成功发送,又不能返回发件人的邮件,死信目录用于存储这些死信。 设置SMTP传递属性在前文阐述的SMTP工作原理中,我们尚未提到如果邮件一次发送不能够成功,SMTP服务器将如何处理这些邮件。事实上,一封邮件在其实际发送的过程中,所遇到的情况是相当复杂的,如何处理在各种情况下邮件的命运,就是SMTP邮件传递属性。如右图所示,SMTP邮件传递属性是在虚拟服务器属性表单中的【传递】选项卡进行设置的。邮件传递属性分为出站属性和本地属性两部分。邮件的出站传递属性中可以设置一系列参数值,与上一小节的邮件限制参数不同,这些参数不是可选的,也就是说,管理员必须指定传递参数或者使用默认值。第一、第二、第三次重试间隔:一旦IIS打开某一连接,并且接收服务器已准备好接收数据,则邮件就可以被发送出去。但是如果SMTP服务器第一次尝试联系邮件接收服务器失败后,SMTP服务器如何处理邮件呢?这里的三个参数  就定义了一旦邮件没能成功发送,SMTP服务器再次尝试联系收件服务器的间隔时间,缺省值为15、30、60分钟。就是说,对于一封首次传递不成功(联系目标服务器失败)的邮件,SMTP服务器将在首次尝试发送的15分钟后,进行一次重试;一旦还不成功则在30分钟后再次尝试(第二次重试);第三次重传间隔以此类推。这里所谓重传,实际上就是IIS将这些邮件从新投放到邮件队列文件夹(Drop)中。

后续重传间隔:定义前三次重传之后,(如果还不成功)SMTP将以均匀的间隔时间进行重新传递尝试,默认的后续重传间隔为240分钟。现在,我们来考虑重传时间的长短对邮件用户和SMTP服务器所造成的影响。应该说邮件用户希望邮件能够快速、准确的到达收件人的服务器,由于总的重传次数是固定不变的(48次),所以较小的重传间隔额可以提高邮件传递的及时性;而较大的重传间隔则可以提高邮件重传的可靠性。但是,在很短的时间间隔内将邮件重新进行发送往往并不会成功,这是由于传递失败的原因多在于远程邮件服务器的状态。故如果将重传间隔设置的很小,除了给SMTP系统造成更大的带宽压力之外,并不会改善邮件的传递性能。在预定的重传次数达到之后,如果邮件仍然未能寄交收件人,SMTP服务器就会将邮件返回给发件人,同时附加一份NDR(未传递报告)。以下两个参数对于本地和出站邮件属性都有效。延迟通知:为了允许本地和远程邮件系统之间的时间延迟(在网络上传递信息需要时间),在此设置一个默认的网络延迟时间,SMTP服务器在发送诸如NDR之类的报告时,会考虑到这一延迟时间。该值默认为12小时,我们可以以分钟、小时、天为单位设置研制时间,最大值为9999天。过期超时:前面提到的邮件最大重传次数并不是限制邮件重传的唯一标准,这里指定的过期超时就是在一定时间之后,SMTP服务器自动放弃邮件的发送,而不考虑重传的次数。默认的过期超时是2天,与延迟通知参数一样,我们可以在1分钟和9999天之间指定该值。 上述指定的传递属性可以一般性的满足邮件发送要求,而对于高级的邮件传递属性,我们则要单独的在【高级发送】对话框中进行设置。在虚拟服务器属性表单的【传递】选项卡中单击【高级】,打开如右上图所示的【高级发送】对话框。其中可以指定的参数如下:最大跳数:跳数(hops)是报文在Internet上通过路由器的数量,最大跳数指定了一封邮件在传送到收件人服务器的过程中所通过的路由器数目的上限,默认为15,即邮件在传过15个路由器之后,将被自动放弃继续传送,返回发送服务器并附交NDR。跳数的限制基于Internet本身的设计缺陷,某些路由可能是循环的,从而形成死循环。跳数限制的实现方式是在邮件上附加一个跳数计数器,每过一个路由器,计数器自动减一,减到0时即认为发送失败。虚拟域:我们知道在SMTP协议中规定邮件的包头包含一个"mail from"值,该值指示邮件的发送主机域名,虚拟域的值就是在"mail from"中代替真实域名的别名。这种方式有效的解决了域名安全保密问题,甚至可以使用中文。完全规范域名:在DNS服务器上的两种记录可以对邮件服务器的域名进行解析:MX记录和A记录。MX(邮件交换)记录用于在邮件服务器的完全规范域名(FQDN)和IP地址之间做出映射;A(地址)记录用于映射主记名和IP地址。两种记录在DNS服务器上共同使用时可以有效的解决解析问题。指定一个SMTP虚  

 拟服务器的完全规范域名由两种方式:在Windows 2000系统属性中的【网络标识】选项卡中指定;或者在这里输入一个不同的FQDN。新指定的FQDN必须是在DNS服务器中有效的完全规范域名,为了检验其有效性,输入FQDN后单击【检查DNS】,则IIS会自动在DNS服务器上检查名称是否有有效。成功验证域名的提示对话框如右下图所示。

中继主机:通过中继主机可以将全部待发邮件交由另一台服务器上的SMTP远程域(也就是前面创建域时指定的远程域)来进行实际发送。在【中继主机】栏中指定中继主机的域名(FQDN)或IP地址以标识之,推荐使用IP地址(且要用"[ ]"括起来)以较少解析时间。采用中继主机的理由无外乎是费用和安全两点。鉴于网络中主机的接入方式不同,同样数据流量的费用也不同,记费方式更是千差万别,例如DDN接入就要比ISDN专线贵不少。这样,使用流量费用低的计算机做中继主机显然可以节省大笔网络开销。另一个重要原因是安全性,在防火墙普遍使用的网络环境下,将邮件服务器放在防火墙之内(Intranet中),显然会给黑客留下入侵的方便。比较典型的做法是:将一台防火墙之外的主机作为中继主机,而防火墙之内的邮件服务器并不直接发送邮件,只起到转发和管理的作用。此外,作为公司分支机构的小型组织通常也适用中继主机,只不过它们将中继主机设置为位于公司总部的中心邮件服务器,从而使整个公司的邮件得到统一的发送和分布的管理。对于中继主机,还有一个属性,即【在发送到中继主机之前尝试直接连接】,选择此复选框后,SMTP服务器将优先采用直接发送的方式进行邮件发送,不能直接发送时才使用中继主机方式。采用这一方式无疑增加了系统的可靠性。对待收的邮件执行反向 DNS 查询:如果选择此复选框,SMTP服务将试图验证客户机的IP地址是否与 EHLO/HELO命令中客户机提交的主机/域名相匹配。如果反向DNS查询成功,则邮件的"已收到"标题将完整保留。如果验证失败,邮件的"已收到"标题中IP地址后面将出现"未验证"的字样。注意:因为该功能将验证所有接收邮件的地址,所以使用它会极大的影响SMTP服务器的性能。