利用DRAC杜绝邮件Spammer

  杨劭彤   现今,网络上电子邮件广告满天飞。造成这种状况的一个主要原因就是,标准的电子邮件传输协议(SMTP)在传输邮件时,不进行用户身份认证,邮件可以被匿名/冒名发送。   为了解决以上问题,需要修改SMTP服务器,加入SMTP认证,相关内容请参阅文章:《SMTP认证让Spammer走开》。除此以外,还有一种更为灵活的方法来实现——动态转发授权控制(Dynamic Relay Authorization Control),DRAC可以通过动态控制IP来阻止Spammer。本文主要就DRAC进行详细的说明。   DRAC的机理   DRAC(Dynamic Relay Authorization Control——动态转发授权控制)是一个运行在后台的Daemon,它可以动态地更新Sendmail的Relay授权,合法用户通过它可以在任何地方发送电子邮件。而且同时又能阻止非法用户使用SMTP Server发送邮件。一旦合法用户正确地收取了邮件,DRAC就会将合法用户的IP动态加入到SMTP Server的数据库中,允许他通过服务器向外发信。   DRAC 实际上是一个客户/服务系统,客户、服务之间通过使用RPC进行网络通讯。在这个系统中,POP或IMAP server是客户程序, DRAC daemon 是服务程序, 可以同时为网络上的多台邮件服务器提供动态转发的功能。如果你的网络中还有其他的服务器上需要实现动态转发邮件的功能,DRAC daemon 必须与SMTP server(Sendmail)运行在同一台计算机上。所以,实际应用时,Sendmail 和DRAC运行在同一台机器上,而POP或IMAP可以运行在网络中的其他计算机上。   如果你有多个POP/IMAP服务器,它们分别运行在不同的计算机上,那么你可以通过配置文件:/etc/mail/dracd.allow 来使这些机器使用DRAC。Dracd.allow文件中应该包含所有的POP/IMAP server的IP地址。文件格式参见/var/yp/securenets ,文件内容举例如下:   255.255.255.252 130.179.16.0    255.255.255.255 130.179.16.8   255.255.255.255 127.0.0.1   所以,在实际配置时,,POP/IMAP servers 可以运行在网络中的其他计算机上。通过向DRAC发送RPC,动态地将用户的IP添加到数据库中。当然,POP/IMAP server必须配置成能够发送RPC请求到DRAC服务器。有关多台POP/IMAP服务器的情况,有兴趣的读者可以进一步研究。   移动用户邮件的Relay   拨号上网的用户IP是一个不定值。只有把他的IP加入到access.db中,用户才能使用邮件服务器发邮件。如果采用动态控制,在用户收取邮件时,进行身份验证。对于验证通过的用户,后台监控程序会实时地将用户当前的IP记录到数据库中。具体实现过程是:先“收”后“发”, 收件时要经用户身份认证,认证后将用户的IP加入数据库,IP地址在SMTP Server的数据库中保存30分钟。每收取一次邮件,计时重新开始。30分钟内如果用户不使用邮件服务收发,则DRAC将用户的IP从数据库中删除。这种做法保证了拨号用户可以收发自己的邮件。唯一不方便的是:用户第一次发邮件时,需要先收一次邮件。感觉上,这好像很麻烦,不过,如果大家都习惯了先收后发,那么就一点儿也不会有别扭的感觉了。在以下站点可以查到更为详细的资料:。   实际安装   实际安装分三步:安装DRAC、安装POP/IMAP服务器、配置Sendmail服务。   1.安装DRAC   首先下载软件包,下载地址: (19KB)。   编译时需要根据操作系统的种类更改相应的Makefile文件,对于Linux,则更改内容如下:   #### Makefile for drac   INSTALL = install   EBIN = /usr/local/sbin   MAN = /usr/local/man/man   # OS-Dependant settings   DEFS = -DSOCK_RPC -DFCNTL_LOCK -DGETHOST -DDASH_C # Socket RPC   # Compiler flags   CC = gcc   RANLIB = :   CFLAGS = $(DEFS) -g   LDLIBS = -ldb   TSTLIBS = -L. -ldrac -lnsl   RPCGENFLAGS = -C -I   # Man sections   MANLIB = 3   MANADM = 8   接下来,对DRAC进行安装,过程如下:   # make; make install (安装)   # make install-man  (安装man)   启动DRAC,直接运行方式:   #/etc/rc.d/init.d/dracd start   这样会启动一个运行在后台的服务进程——dracd,由它来充当服务器,它将POP/IMAP提交的用户IP动态加入到邮件服务器的数据库中。   2.安装Qpopper   原版本的Qpopper是不会自动向DRAC发信息的,所以,要对Qpopper进行一些改写,以便POP Server与DRAC进行通讯,目前有补丁的Qpopper版本有3.02、3.12版。也可以选择使用IMAP server,同样也要对它打补丁。本文中笔者以Qpopper 3.02为例。   $ tar -zxvf qpopper-3.0.2.tar.gz (支持多种POP3及IMAP软件)   $ patch -p0 /etc/mail/sendmail.cf   最后,重新启动Sendmail。   测试DRAC   通过网络中的另一台Linux主机远程登录邮件服务器的110端口:   [abc@rh62 abc]$ telnet 192.168.1.200 110(笔者在一台IP地址为192.168.1.13的电脑上操作)   系统显示:   Trying 192.168.1.200…   Connected to ns1.chinatrend.com (192.168.1.200).   Escape character is ^].   +OK ready   user abc  (用户名为abc)   +OK Password required for abc.   pass abcabc (输入口令为abcabc)   +OK abc has 0 visible messages (0 hidden) in 0 octets. (服务器上有0个邮件)   quit (退出)   +OK Pop server at mail.chinatrend.com signing off.   Connection closed by foreign host.   接下来,再试验在IP为192.168.1.111这台计算机上使用Outlook收发一次邮件,然后到邮件服务器上查看动态数据库的内容:   [abc@mail mail]$ db_dump -p dracd.db (记录存放在一个dracd.db文件中,显示文件内容)   format=print   type=btree   bt_minkey=2   db_pagesize=512   HEADER=END   192.168.1.111   986957888   192.168.1.13 (登录成功主机的IP)   986957984   从前面的显示可以看到192.168.1.13及192.168.1.111已经加入到动态数据库中了。至此成功安装。   以上是通过自行编译安装DRAC的过程,做起来不太容易,是吗?实际上,你也可以不用自己动手编译,而是采用别人编译好了现成的RPM软件包,直接下载安装就可以。下载地址:ftp.minn.net/user/mmchen。   不过,提醒大家注意:配置sendmai.cf的步骤不能省,方法同上。以上方法在Redhat 6.2环境下通过,针对Redhat 6.2的软件包,可以在:找到编译好的RPM软件包的地址链接。 自己选择的路,跪着也要把它走完。

利用DRAC杜绝邮件Spammer

相关文章:

你感兴趣的文章:

标签云: