您的位置:首页 > 运维架构 > Linux

组合使用Linux命令生成winwebmail使用的防垃圾邮件kill.ini

2008-12-02 21:56 513 查看
近一段时间自己的WINWEBMAIL上的垃圾邮件越来越多,参考官方网站上的说明,只要把垃圾邮件连接IP放到KILL.INI中,即可阻挡一部分。
要取得垃圾邮件连接IP,可以到反垃圾邮件网站上下,不过一般都很大,针对性不强。

这里介绍一个根据自己的服务器LOG生成KILL.INI的方法,供大家参考。

1. 取得服务器LOG
把winmail\log\下的Logyyyy-mm-dd.txt文件下载到本地。
-----LOG片断------------
Tue, 2 Dec 2008 03:03:02 Smtp怬. IP: 118.68.102.231 , Port 22231^M
Tue, 2 Dec 2008 03:03:02 Smtp怬. IP: 118.68.102.231 , Port 22233^M
Tue, 2 Dec 2008 03:03:02 Smtp怬. IP: 118.68.102.231 , Port 22236^M
Tue, 2 Dec 2008 03:03:14 [118.68.102.231] ¹Ø±ÕÁ¬½Ó.^M
Tue, 2 Dec 2008 03:03:14 [118.68.102.231] ¹Ø±ÕÁ¬½Ó.^M
Tue, 2 Dec 2008 03:03:14 [118.68.102.231] ¹Ø±ÕÁ¬½Ó.^M
Tue, 2 Dec 2008 03:03:14 [118.68.102.231] ¹Ø±ÕÁ¬½Ó.^M
Tue, 2 Dec 2008 03:03:52 Smtp怬. IP: 118.68.102.231 , Port 22943^M
-------LOG片断--------

2.思路:
对于在短时间内多次连接的,可以初步认为是垃圾邮件IP。

3.使用如下命令:
cat Log* |grep '\['|awk -F[ '{print $1,$2}'|awk -F] '{print $1}'|awk '{print $6}'|uniq -c|awk '$1>3{print $2}'|sort|uniq -c|awk '$1>3{print $2}'>kill.ini

有点复杂,一条一条命令说一下:
cat Log* 输出所有Log文件
grep '\[' 把含有[的行选出来,[]中是地址
awk -F[ '{print $1,$2}'|awk -F] '{print $1}' 去掉[和]
awk '{print $6}' 只显示IP地址列
uniq -c 对连续的相同IP地址进行计数
awk '$1>3{print $2}' 输出超过3次的地址
sort 对所有IP地址排序
再次应用 uniq 和 awk 对超过3次的IP进行筛选,最后的结果输出到kill.ini

4.把kill.ini拷贝到 winmail目录。

5.重启winwebmail服务。

至此,设置完成,等过一个月,再看看有没有改善。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息