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

时间:2022-05-03 07:22:32
近一段时间自己的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服务。

至此,设置完成,等过一个月,再看看有没有改善。

本文出自 “徒步天下我的梦” 博客,请务必保留此出处http://hiker2008.blog.51cto.com/10867/116776