对两个虚拟smtp服务器防止垃圾邮件中转的总结
我对两个虚拟smtp服务器防止垃圾邮件中转的总结:
在论坛上看到了很多高手的发言,结合自己在实践中的体会,终于有了一些比较成型的经验:
首先要说的是,想要彻底防止垃圾邮件制造者利用你的exchange 服务器进行中转,以及其他非法利用你的smtp服务的现象,两个虚拟smtp服务器是必不可少的。
这看起来是很基础的结论,却是我的“血泪”之言。因为我以前一直依靠一个虚拟服务器和一个smtp连接器,进行smtp限制,并且一直自信很有成效,结果前些日子被isp警告:我的服务器成为垃圾邮件中转服务器!
现在具体说说我之前的设置,供大家对照。如果你的设置和我相同,请务必当心!那一点也不安全!
我以前的设置:default virtual smtp server上,启用三种认证模式(匿名、基本和集成),允许所有通过认证的计算机进行relay;然后建一个smtp connector,在delivery restrictions当中,选择 by default, messages from everyone are rejected,然后将所有合法的用户,添加到后面的允许列表中。
我原先以为,有了这个smtp connector,那么只有合法的用户才能将邮件发送出去,而所有其他用户的信息,将被截留。可事实证明,垃圾邮件制造者仍然成功的利用我的服务器中转了邮件。也就是说,虚拟smtp服务器的relay可以突破这个smtp connector中的delivery restriction限制。
于是,我参考了一些帖子和微软的kb,总结出以下方法,实践中证明是有效的:
第一步,在你的exchange 服务器上,安装两块网卡;
第二步,设置网卡。一块网卡是接收内部用户smtp请求的,称为内部nic,一块网卡是接收外部用户smtp请求的,称为外部nic。每块网卡,各绑定一个固定ip(两块网卡均为内部虚拟ip即可,不必是一个外部ip,一个内部ip。因为我的内部网络是处于isa server之后的,所以只能是两个内部虚拟ip)
第三步,设置exchange 服务,让它区分内外网卡。因为我是利用isa server发布exchange服务器,包括pop3、smtp、imap4、nntp等等,所以,我把除smtp以外的服务,均绑定到外部nic的ip上。
第四步,建立两个虚拟smtp 服务器,一个绑定到外部nic的ip地址,简称为smtp1;一个绑定到内部nic的ip地址,简称为smtp2。smtp1(绑定到外部nic的虚拟smtp服务器),启用三种认证方式(匿名、基本和集成),但不启用relay(也就是在relay中选择“only the list below”,但不加入任何列表。下面的“all computers...”也不选),并且不启用外部dns服务器;smtp2(绑定到内部nic的虚拟smtp服务器),只启用基本和集成两种认证方式,然后启用relay,并且启用外部dns服务器(方法是到delivery --> advanced --> configure当中,选择外部的dns服务器)。
第五步,建立一个smtp connector,连接到smtp2(也就是绑定到内部nic的虚拟smtp服务器),然后进行必要的设置(一般是增加一个address space,也就是添加一个smtp空间*,并且建议按照以前的介绍,设置delivery restrictions,选择 by default, messages from everyone are rejected,然后将所有合法的用户,添加到后面的允许列表中。这样也是为了增加安全性。)
好了,现在可以到isa server中,发布你的exchange 服务器了。注意发布的时候,内网ip要选择 exchange服务器上的那个外部nic的ip地址,而千万不要指到那个内部nic的ip上去,否则上面的辛苦工作,等于白费。
让我们来大致看一下邮件的流程:
来自外网的邮件,是由smtp1来监听的(因为它绑定到了外部nic的ip上)。如果是发给内网用户的,那么它查询ad,然后将邮件送达;如果不是发给内网用户,而是企图利用 exchange的smtp服务,进行转发,那么对不起,smtp1上不启用relay服务,无法转发。再说,它也没有启用外部的dns服务器,根本无法解析外网的域名。
来自内网用户的邮件,是由smtp2来监听的(因为它绑定到了内部nic的ip上)。如果是发给内网用户自己的,那么仍然是直接查询ad,然后将邮件送达;如果是发到外网的,那么smtp2启用了外网dns服务器,所以可以顺利的解析到外网域名,然后通过连接到smtp2的smtp connector,将邮件relay到外网。
那么,你的合法用户,如何使用呢?
如果用户在内部网络中使用,那么他可以使用 outlook express或者foxmail等pop3邮件程序,进行收发邮件(注意pop3服务器要设置为外部nic的ip,smtp服务器要设置为内部nic的ip,分别对应exchange 服务器的设置);
如果用户是在外网中使用,那么他只能使用 outlook express或者foxmail等pop3邮件程序,进行邮件的接收,但不能用它们发送邮件。原因很简单,监听外网smtp请求的那个虚拟smtp服务器smtp1,不支持relay。不过,这时候就可以请出著名的owa了。用户可以利用浏览器,通过owa的方式,发送邮件。
另外,如果你不是通过isa server发布exchange服务器,而是直接将exchange服务器发布在inte.net上,那么原理是相同的,只是具体的设置有些细微的不同,请自己体会和调整。
以上就是我的一点粗浅认识,如果能对大家有所帮助,不胜高兴。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器