针对qmail我是这样防止垃圾邮件的
发表于:2007-05-25来源:作者:点击数:
标签:
针对qmail我是这样防止垃圾邮件的 1,安装qmail的时候增加smtpauth,这是大家都清楚的。这样避免了一些恶意的人随意使用你的 服务器 。 2,配合smtpauth需要进行对ip地址的控制。比如对本地地址就不再限制其权限了。 3,修改ucspi-tcp-x.xx的代码,编辑文件r
针对qmail我是这样防止垃圾邮件的
1, 安装qmail的时候增加smtp auth,这是大家都清楚的。这样避免了一些恶意的人随意使用你的
服务器。
2, 配合smtp auth需要进行对ip地址的控制。比如对本地地址就不再限制其权限了。
3, 修改ucspi-tcp-x.xx的代码,编辑文件rblsmtpd.c。
原文件中的"rbl.maps.vix.com",修改为"relays.ordb.org"。编译后使它支持对垃圾邮件服务器的查询。其工作原理是将一台服务器的IP地址反向书写,然后向提供服务的服务器查询,如果被登记为垃圾服务器,就返回127.0.0.2,这样本机服务器就无法和垃圾服务器通信了,举例说明,某服务器1.2.3.4来连接你的服务器,于是查询4.3.2.1.relays.ordb.org,如果返回127.0.0.2就表明是垃圾服务器,否则就是正常的服务器。如果你自己的IP也能够返回127.0.0.2的话,就要赶快和www.ordb.org联系了,这说明你的服务器由问题了。
4, 编译了代码之后,修改smtpd.sh启动脚本。1002,1001对应qmaild的uid与gid.
/usr/local/bin/tcpserver -q -p -R -c 100 -u 1002 -g 1001 -x /vmail/etc/tcp.smtp.cdb 0 smtp /usr/local/bin/rblsmtpd -b -r 'relays.ordb.org:Open relay problem - see <URL:http://ordb.org/lookup/?host=%IP%>' /var/qmail/bin/qmail-smtpd /vmail/bin/vchkpw /usr/bin/true /bin/md5checkpw /usr/bin/true 2>&1 &
5, 对qmail中增加badrcptto控制。
Qmail中缺省有一个配置文件叫做badmailfrom,字面意思很简单,只要列进这个列表就是要干掉的邮件。Mailfrom自然是源地址,同样我们可以控制目标地址,也就是对rcpt to的控制,所以把空文文件命名为badrcptto。
先修改一个简单的文件qmail-showctl.c,查找badmailfrom,复制该行,将badmailfrom改为badrcptto,编译后,就可以显示badrcptto控制文件中的内容了,不过这个修改中看不中用。
接下来修改qmail-smtpd.c,这就动真格的了。还是跟着badmailfrom走,查找bmf相关的单词,对应复制,并将其修改为brt。
并在void smtp_mail(arg) char *arg;函数中增加对brtcheck的调用。
if (flagbarf) { err_bmf(); return; }
if (relayclient) {
--addr.len;
if (!stralloc_cats(&addr,relayclient)) die_nomem();
if (!stralloc_0(&addr)) die_nomem();
}
else
if (!addrallowed()) { err_nogateway(); return; }
if (!env_get("RELAYCLIENT") && brtcheck()) { err_brt(); return; }
if (!stralloc_cats(&rcptto,"T")) die_nomem();
if (!stralloc_cats(&rcptto,addr.s)) die_nomem();
if (!stralloc_0(&rcptto)) die_nomem();
out("250 ok\r\n");
}
6, 针对垃圾邮件的特征定制代码。
前人的经验介绍了不少,自己也不能太懒惰,也整理了一些不顺眼的邮件。
正常来讲,邮件地址的开头应该是字母,不应该是数字,尽管现在很多服务器能够支持全数字的邮件地址,所以我的做法是只要是@前只有数字的就横刀砍死。
我们来看这样一个地址 a@b.cn,尽管我不知道是不是有这样的域名,但是这应该是最短的邮件地址了,所以一个邮件地址至少有6个字节,低于的杀,a@b.c显然不合法,自然不用理会他的内容。邮件地址超短有问题,超长也不多好,定义一个长度,太长的同样有问题。
其实我想说的就是对发信人的地址进行分析,合法通过,非法干掉。
对应以上分析修改了qmail-smtpd.c的addrparse函数。
都是前人的经验,整理了一下,千万不要追究我侵权。
gadfly 回复于:2003-08-12 12:32:02
|
很不错,比较全面
qmail anti-spam section 还有其它一些工具,
可以动态的针对主题内容进行过滤。
有兴趣可以参看
http://www.fanqiang.com/a6/b4/20011124/0810001589.html
|
wolf1980 回复于:2003-08-17 16:43:08
|
真不错!
|
emylekao 回复于:2004-11-18 10:32:30
|
第三点说的内容与http://www.chrishardie.com/tech/qmail/qmail-antispam.html#sysoption1文中说的
rblsmtpd -rrelays.ordb.org -rblackholes.mail-abuse.org
作用一致吗?那篇文章中好像没有提到要修改源代码。
|
原文转自:http://www.ltesting.net
|