qmail邮件服务器之垃圾邮件清除

环境:Debian 3.1 (Linux version 2.4.27)+netqmail-1.05+vpopmail

于半个多月开始接手前任留下的qmail邮件服务器,此前一直没碰过linux方面的邮件服务器,这一次可以说是逼不得已.由于前任管理员当初也是由新手做起的这个邮件服务器,一直没什么大故障.所以一些东东他也不是十分清楚.看来稳定也不一定是好事…呵.因为前一段时间qmail服务器就老是死机,要不就是发送邮件缓慢,或发送邮件时出现”SMTP服务器已经60秒内没有响应了。是否继续等待”之类的消息,因为无法从远端登录,只能跑到机房重启.邮件收发恢复正常,但想想长此以往也不是个办法,便在这半个多月里恶补了qmail方面的知识,在虚拟机环境里实践好在服务器上实施了以下过程.自查出发现有垃圾邮件后,打算用qmail-remove来解决,无奈由于内核版本的原因,无法在上面安装.不过还好,原来用几条命令就可以搞掂.

因为我不知道邮件列表里是否有正常邮件….太多了,列表里几万封邮件,查看了一下,邮件内容都是一样的且与本公司无关.但为了安全起见,我还特地观察了两天,在badmailfrom里添加了垃圾制造者的邮件地址后,近两天时间里,qmail邮件列表里的邮件由64854封逐渐减少为59463封,且数量没有再往上增长.说明badmailfrom还是起到了一定的作用.而且还将其中一个可疑的邮箱账户的密码进行了更改.也许有网友会问:如何查找垃圾制造者? 这个我只能告诉你自己去检查日志,去分析.smtpd里的日志,qmail里的日志.都仔细查看一次,观察.

为了清理垃圾邮件.特地找了一个假日来做这件事,安全起见(避免误删正常邮件啊~~~)

清理过程记录(没什么技术含量,高手略过)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
cd  /var/qmail/queue

mail:/var/qmail/queue# ls -l
total 328
drwx------   2 qmails qmail 299008 2010-06-16 15:50 bounce
drwx------  25 qmails qmail   4096 2006-11-17 18:00 info
drwx------   2 qmailq qmail   4096 2010-06-16 15:50 intd
drwx------  25 qmails qmail   4096 2006-11-17 18:00 local
drwxr-x---   2 qmailq qmail   4096 2006-11-17 18:00 lock
drwxr-x---  25 qmailq qmail   4096 2006-11-17 18:00 mess
drwx------   2 qmailq qmail   4096 2010-06-16 15:50 pid
drwx------  25 qmails qmail   4096 2006-11-17 18:00 remote
drwxr-x---   2 qmailq qmail   4096 2010-06-16 15:50 todo

mail:/var/qmail/queue# qmailctl stat
/service/qmail-send: up (pid 995) 196002 seconds
/service/qmail-send/log: up (pid 996) 196002 seconds
/service/qmail-smtpd: up (pid 991) 196002 seconds
/service/qmail-smtpd/log: up (pid 992) 196002 seconds
messages in queue: 59430 (这就是垃圾邮件队列中的数量)
messages in queue but not yet preprocessed: 3

cd /var/qmail/queue/lock

mail:/var/qmail/queue/lock# ls -l
total 4
-rw-------  1 qmails qmail    0 2006-11-17 18:19 sendmutex
-rw-r--r--  1 qmailr qmail 1024 2010-06-16 15:51 tcpto
prw--w--w-  1 qmails qmail    0 2010-06-16 15:51 trigger

mail:/var/qmail/queue#mv /var/qmail/queue/lock /var/qmail/

mail:/var/qmail/queue# ls -l
total 324
drwx------   2 qmails qmail 299008 2010-06-16 15:52 bounce
drwx------  25 qmails qmail   4096 2006-11-17 18:00 info
drwx------   2 qmailq qmail   4096 2010-06-16 15:53 intd
drwx------  25 qmails qmail   4096 2006-11-17 18:00 local
drwxr-x---  25 qmailq qmail   4096 2006-11-17 18:00 mess
drwx------   2 qmailq qmail   4096 2010-06-16 15:53 pid
drwx------  25 qmails qmail   4096 2006-11-17 18:00 remote
drwxr-x---   2 qmailq qmail   4096 2010-06-16 15:52 todo

mail:/var/qmail/queue# find /var/qmail/queue/ -type f -exec rm {} \;

由于邮件太多,这里费时很长,我中间ctrl+c断一下,查看当前qmail状态)

1
2
3
4
5
6
7
mail:/var/qmail/queue# qmailctl stat
/service/qmail-send: up (pid 995) 196072 seconds
/service/qmail-send/log: up (pid 996) 196072 seconds
/service/qmail-smtpd: up (pid 991) 196072 seconds
/service/qmail-smtpd/log: up (pid 992) 196072 seconds
messages in queue: 44672 (看,被删除了好多,之前两天自动清除太慢了)
messages in queue but not yet preprocessed: 3

继续

1
mail:/var/qmail/queue# find /var/qmail/queue/ -type f -exec rm {} \;

干净了,请看:

1
2
3
4
5
6
7
mail:/var/qmail/queue# qmailctl stat
/service/qmail-send: up (pid 995) 196481 seconds
/service/qmail-send/log: up (pid 996) 196481 seconds
/service/qmail-smtpd: up (pid 991) 196481 seconds
/service/qmail-smtpd/log: up (pid 992) 196481 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0

别忘了把lock文件夹移回原处,不然的话qmail会运行不正常.

1
mail:/var/qmail/queue# mv /var/qmail/lock /var/qmail/queue/

最后测试了一下垃圾清除后的邮件收发都没问题,但用netstat –n 与 ps –ef | grep qmail 查看发现,进程里还有几个进程残留.看准PID,后来kill掉了.

还好,整个过程没出什么差错.清除垃圾后至今运行了一个多星期感觉良好.没再出什么故障…