一、 确认你的qmail服务器不是OPEN-RELAY状态
这一点非常的关键。如果你的qmail服务器现在是OPEN-RELAY状态的话,就是允许所有的人利用你的邮件服务器对外发送垃圾邮件,这样,你的服务器就成了一个制造垃圾邮件的源头了。∶—(
如何来解决这个问题?
通过使用ESMTP协议的SMTP认证功能(SMTP AUTH)来控制发信者,只有通了认证的用户才可以通过服务器发送电子邮件。
Qmail本身是没有SMTP认证功能的,但是可以使用pacth包对Qmail打补丁增加发信认证功能,重新编译生成qmail-smtpd程序,就有了发信认证的功能了。可以从下载qmail-smtpd的auth补丁包。
安装方法是:
tar zxvf qmail-smtpd-auth-0.31.tar.gz
cd qmail-smtpd-auth-0.31
cp base64.* ../qmail-1.03
cd ..
patch -d qmail-1.03 < qmail-smtpd-auth-0.31/auth.patch
make qmail-smtpd
cp qmail-smtpd /var/qmail/bin
这样你的qmail就有SMTP发信认证功能了。但是这样是不是就可以算是关闭OPEN-RELAY了?
不,还是要确认一下,你的/etc/tcp.smtp文件中的内容为
127.0.0.1:allow,RELAYCLIENT=""
并且成功生成了tcp.smtp.cdb文件,生成方法如下:
/usr/local/bin/tcprules /etc/tcp.smtp.cdb /etc/tcp.smtp.tmp < /etc/tcp.smtp
同时确认你的服务器启动脚本为
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x \
/home/vpopmail/etc/tcp.smtp.cdb -u qmaild -g nofiles 0 smtp \
/var/qmail/bin/qmail-smtpd hostname /home/vpopmail/bin/vchkpw \
/bin/true 2>&1 | /var/qmail/bin/splogger smtpd 3 &
这样,你的qmail服务器就完全关闭了OPEN-RELAY。
二、 拒收垃圾邮件的发件人
如果邮件系统管理员在对日志进行统计分析,可以发现一些比较集中的收发件人的邮件地址,对于比较集中的发件人,我们可以根据他所发送到的邮件地址来判断,是否是垃圾邮件。如果收件人地址大量是不存在的地址,可以肯定,这是以用户名猜测方式来发送垃圾邮件的手段(这也是比较常见的垃圾邮件发送方式),需要对此发信地址进行拒收。或者是对同一个帐号发送大量的邮件,也需要对此发信地址进行拒收。
拒收的方法:
编辑/var/qmail/control/badmailfrom文件(如果没有可以新建一个)将要拒收的邮件地址写入,每条记录为一行如:
123@123.com
这样所有FROM来自123@123.com的邮件都会被邮件服务器拒收。
同样也可以对一个域进行拒收,在badmailfrom文件中加入
@test.com
这样所有来自test.com的任何地址的电子邮件都会被服务器拒收。
三、 拒收垃圾邮件的发送IP
如果利用一些工具来发送垃圾邮件,可以使发件人的邮件地址变成随机地址,可能发到你的服务器的每一封垃圾邮件的发件人地址都不一样,这样怎么办?拒收发件人的方法,就起不到应有的做用了。
我们可以通过查看邮件日志和网络的SMTP(25)端口的连接情况,找出发件数目比较高的IP和连接数比较高的IP,用防火墙来对这些IP进行拒收,从网络层就拒收这些垃圾邮件,同时也有相当高的效率。
如果是Linux系统就可以直接的用ipchains或iptables来拒收。
ipchains拒收:
ipchains –A INPUT –p tcp –s 你要拒收的IP –d 你的服务器IP 25 –j DENY
iptables 拒收
iptables –A INPUT –p tcp –s 你要拒收的IP –d 你的服务器IP --dport 25 –j \ DROP
有关Linux防火墙的更多使用参考请访问。
四、 正确的设置.qmail-default
.qmail-default文件在/var/qmail/alias目录下,相关的.qmail-文件是为了实现qmail的转发功能的,而.qmail-default是qmail-local进程找不到合适的转发规则时而要匹配的最后一个文件,如果是默认的设置,qmail会认为所有的Mailbox都是合法存在的。可以设置它的内容为
/home/vpopmail/bin/vdelivermail @#@# bounce-no-mailbox
这样不存在的邮箱都会bounce掉并且返回no-mailbox信息。
五、 使用第三方RBL
RBL(Realtime Blackhole List)是实时黑洞列表,是国际上比较流行的反垃圾邮件技术,可以采用RBL来使邮件服务器拒收在列表中已知的垃圾邮件发送服务器所发送的垃圾邮件。
你需要下载一下补丁程序来增加这个功能。
下载地址:
Qmail的rblsmtpd必须要和ucspi-tcp结合在一起使用。
rblsmtpd的安装方法很简单。在解开的源码目录中
make
make setup check
注:在新版的ucspi-tcp 0.88里,已经包含了rblsmtpd,直接安装ucspi-tcp 0.88就可以了。
安装完后修改你的SMTP启动脚本,加上/usr/local/bin/rblsmtpd。
/usr/local/bin/tcpserver -H -R -l 0 -t 1 -v -p -x \
/home/vpopmail/etc/tcp.smtp.cdb -u qmaild -g nofiles 0 \smtp /usr/local/bin/rblsmtpd \
/var/qmail/bin/qmail-smtpd hostname \
/home/vpopmail/bin/vchkpw /bin/true 2>&1 | \
/var/qmail/bin/splogger smtpd 3 &
如果你想使用第三方的RBL列表,只要加上-r选项就可以了,比如:
-r blackholes.mail-abuse.org
第三方的RBL服务器请参阅本站的【>>>>】,本站也即将推出自己的黑名单服务器。
六、 使用Anti-Spam软件
使用Anti-Spam软件来过滤,现在这项技术被越来越多的人认为是行之有效的。 有很多的Anti-Spam软件,其中一些Anti-Spam是结合来使用的(Procmail是一个非常优秀的MDA软件,使用请参考 http://www.procmail.org)。
Spamassassin
相当不错的Anti-Spam软件,可以用在多个UNIX平台的MTA上。
spambouncer
Kaspersky Anti-Spam
可以用在多种邮件MTA上,并且有邮件头的的检查。
七、 总结
垃圾邮件肯定是不能够完全制止的,但是我们采取上面的措施,肯定会制止住相当部分的垃圾邮件。这对于我们的邮件服务器的负载降低、带宽占有减少和工作效率提高都是很有意义的。