遭受 DoS Postfix 攻击后,我们的传入队列和活动队列中都充满了邮件:
drwx------. 2 postfix root 1007616 nov 5 17:01 active
drwx------. 2 postfix root 4096 nov 5 11:31 bounce
drwx------. 2 postfix root 4096 feb 20 2014 corrupt
drwx------. 18 postfix root 4096 jun 30 2014 defer
drwx------. 18 postfix root 4096 jun 30 2014 deferred
drwx------. 2 postfix root 4096 sep 8 10:41 flush
drwx------. 2 postfix root 4096 feb 20 2014 hold
drwx------. 2 postfix root 1093632 nov 5 17:01 incoming
drwx-wx---. 2 postfix postdrop 4096 nov 5 17:01 maildrop
drwxr-xr-x. 2 root root 4096 nov 5 16:49 pid
drwx------. 2 postfix root 4096 nov 5 16:49 private
drwx--x---. 2 postfix postdrop 4096 nov 5 16:49 public
drwx------. 2 postfix root 4096 feb 20 2014 saved
drwx------. 2 postfix root 4096 feb 20 2014 trace
活动队列:
[root@revres]# ls -la /var/spool/postfix/active/
total 992
drwx------. 2 postfix root 1007616 nov 5 17:01 .
drwxr-xr-x. 16 root root 4096 nov 5 09:06 ..
传入队列:
[root@revres]# ls -la /var/spool/postfix/incoming/
total 1076
drwx------. 2 postfix root 1093632 nov 5 17:01 .
drwxr-xr-x. 16 root root 4096 nov 5 09:06 ..
运行该postsuper -d ALL
命令不会删除任何内容,也不会给出任何输出。
还有其他方法可以清空这些箱子吗?
答案1
如果ls -la
只显示两个“文件”,.
那么..
它是空的。
如果你问:“为什么.
它空着却这么大?”那么答案是:这在 ext3 或 ext4 文件系统中很常见。它们为目录中的 inode 保留空间。即使所有文件都被删除(inode 消失了),用于管理 inode 的保留空间仍然存在。所以不用担心。(即使:它只有一兆字节“大”)
答案2
我确信在那次攻击之后,您的 postfix 会失去一致性。队列实际上是内存数据结构,因此消息可能在磁盘上,但 postfix 可能不知道它们。我建议您停止 postfix 服务,运行postsuper -s
(修复并检查文件结构)并重新启动它。
答案3
同样的问题。
须藤ls -ln /var/spool/postfix/incoming显示 1472 个文件。
#sudo ls /var/spool/postfix/incoming/ -ln
total 1472
-rw------- 1 89 89 8192 Feb 14 15:38 0007B120A83
-rw------- 1 89 89 0 Feb 14 16:38 0030E120A9B
-rw------- 1 89 89 4096 Feb 14 18:04 04548120AE7
-rw------- 1 89 89 102400 Feb 14 16:34 069CA120A94
-rw------- 1 89 89 0 Feb 14 17:56 06E53120ADF
-rw------- 1 89 89 0 Feb 14 17:10 08ADF120AB6
-rw------- 1 89 89 0 Feb 14 18:36 09A56120B24
-rw------- 1 89 89 0 Feb 14 18:32 0B0D0120B11
-rw------- 1 89 89 36864 Feb 14 16:43 0BC4D120A9A
-rw------- 1 89 89 0 Feb 14 19:01 0C150120B3E
-rw------- 1 89 89 0 Feb 14 18:30 0CED5120B16
重新启动了 MailScanner 和 postfix 服务。我还从我正在过滤并充当网关的 Exchange 2010 服务器中收到一堆错误。
Out: 250 2.1.5 Ok
In: DATA
Out: 354 End data with <CR><LF>.<CR><LF>
Out: 451 4.3.0 Error: queue file write error
In: RSET
Out: 421 4.3.0 Mail system error
邮件或者后队列-p显示一个空队列...
#mailq
Mail queue is empty
你可以看到它撞到墙上的那一刻。不幸的是,我正在运行EFA 项目在 Centos 6.8 上,因此尽管:
#yum info postfix
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
* EFA: dl4.efa-project.org
* base: mirror.fusioncloud.co
* epel: archive.linux.duke.edu
* extras: mirrors.lga7.us.voxel.net
* updates: mirrors.evowise.com
Installed Packages
Name : postfix
Arch : x86_64
Epoch : 2
Version : 3.1.3
Release : 1.efa.el6
Size : 14 M
Repo : installed
From repo : EFA
Summary : Postfix Mail Transport Agent
URL : http://www.postfix.org
License : IBM
Description : Postfix is a Mail Transport Agent (MTA), supporting LDAP, SMTP AUTH (SASL),
: TLS built for Email Filter Appliance (EFA)
我找不到为该操作系统打包的 postfix-perl 脚本。我试图伪造 Fedora 软件包,但我的 rpm-foo 非常弱。
... 已编辑 ...
从文件名中获取 ID,并尝试使用以下方法查看它后猫产量。
#postcat -vq 0007B120A83
postcat: name_mask: ipv4
postcat: inet_addr_local: configured 2 IPv4 addresses
postcat: fatal: open queue file 0007B120A83: Permission denied
[ssmith@foster-spam ~]$ sudo postcat -vq 0007B120A83
postcat: name_mask: ipv4
postcat: inet_addr_local: configured 2 IPv4 addresses
*** ENVELOPE RECORDS incoming/0007B120A83 ***
message_size: 0 0 0 0 0 0
postcat: fatal: invalid size record: 0 0 0 0 0 0
搜索邮件日志:
#sudo grep -i '0007B120A83' /var/log/maillog
Feb 14 15:36:36 foster-spam postfix/smtpd[16368]: 0007B120A83: client=foster-mail.foster2007.local[10.0.2.28]:63650
Feb 14 15:36:36 foster-spam postfix/cleanup[16371]: 0007B120A83: hold: header Received: from mail.fosterfuels.com (foster-mail.foster2007.local [10.0.2.28])??(using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits))??(No client certificate requested)??by mx.fosterfuels.com from foster-mail.foster2007.local[10.0.2.28]:63650; from=<[email protected]> to=<[email protected]> proto=ESMTP helo=<mail.fosterfuels.com>
Feb 14 15:36:36 foster-spam postfix/cleanup[16371]: 0007B120A83: message-id=<6B24BD0263D83043837040657FCAC53414F05903@foster-mail.FOSTER2007.local>
Feb 14 19:41:51 foster-spam postfix/postsuper[20067]: queue: 0007B120A83
Feb 14 19:41:51 foster-spam postfix/postsuper[20067]: fatal: invalid directory name: 0007B120A83
我想此时我可能会认为所有这些文件都只是垃圾,并且疯狂地希望在引发此事的 DOS/病毒洪流期间没有邮件被吞噬......
答案4
目录文件是一种特殊文件,它只会随着其下的文件和目录越来越多而扩展,而不会收缩。我曾遇到过这个问题,尤其是当文件中的/tmp
进程具有失控脚本时,这些脚本会创建数千个中间文件。
如果要减小目录文件的大小,基本步骤如下:
使用以下方式终止所有进程
bigdir
mv bigdir bigdir.x
mkdir bigdir
mv bigdir.x/* bigdir
;; 将现有文件移动到新的较小的目录mv bigdir.x/.[a-zA-Z0-9]* bigdir
;;复制隐藏文件但不复制 . 和 .更改权限、ACL、SEL 标签以匹配
biddir.x
rmdir bigdir.x
;; bigdir.x 应该为空您可以自由地(重新)启动任何进程,使用
bigdir
生成的目录将比原始目录小得多。