如何删除活动/传入队列中的滞留邮件 - Postfix

如何删除活动/传入队列中的滞留邮件 - Postfix

遭受 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进程具有失控脚本时,这些脚本会创建数千个中间文件。

如果要减小目录文件的大小,基本步骤如下:

  1. 使用以下方式终止所有进程bigdir

  2. mv bigdir bigdir.x

  3. mkdir bigdir

  4. mv bigdir.x/* bigdir ;; 将现有文件移动到新的较小的目录

  5. mv bigdir.x/.[a-zA-Z0-9]* bigdir ;;复制隐藏文件但不复制 . 和 .

  6. 更改权限、ACL、SEL 标签以匹配biddir.x

  7. rmdir bigdir.x ;; bigdir.x 应该为空

  8. 您可以自由地(重新)启动任何进程,使用bigdir

生成的目录将比原始目录小得多。

相关内容