批量删除由 POSTFIX 管理的收件箱邮件

批量删除由 POSTFIX 管理的收件箱邮件

几个小时前,客户邮件帐户出现问题,被盗用。结果,他的 postfix 中排队了数十万封垃圾邮件,这导致了几个问题。除了一个“小”问题外,所有问题都已修复,安全性也得到了保障:客户的收件箱中现在有近 10 万封退回的垃圾邮件。显然,我正在寻找一个批量操作并进行一些过滤,因为并非所有邮件都属于垃圾邮件。PF 在 Ubuntu 服务器 v10.x 上运行,带有 maildir。

我在包含相同文件的备份文件夹上尝试了此命令:

grep -l -r 'Undelivered' | xargs rm

但它除了运行之外似乎没有做任何事情。

这是因为所有“邮件”都存储在以下命名的文件中吗:

1395063807.V902Ib2081dM533672.ip.ip.ip:2,

答案1

根据您的 版本grep,这可能会永远等待,因为您没有将文件(或目录)名称作为参数;grep当指定 时,使用当前工作目录的行为-r是一个相当新的功能。因此,如果您的版本较旧,您的调用可能会永远等待 上的输入stdin。只需将 添加到.最后一个参数即可grep避免这种情况。

为了避免文件名问题(在这种情况下不应该是问题),最安全的做法是调用

grep -Zl -r 'Undelivered' . | xargs -0 rm --

这样,grep输出以零字节('\0')分隔的匹配文件名,从而避免文件名中出现空格和类似的问题。 --告诉rm不要将以下参数视为选项,即,如果文件名以 开头,-则不会中断。

要查看此命令是否执行任何操作,您可以将选项添加-vrm,这样您就可以看到它是否确实删除了任何内容(当然是rm在前面)。--

相关内容