Массовое удаление почтовых ящиков, управляемых POSTFIX

Несколько часов назад возникла проблема с почтовой учетной записью клиента, которая была взломана. В результате у него в постфиксе были сотни тысяч спама в очереди, что привело к нескольким проблемам. Все исправлено и безопасность связана, за исключением одной "маленькой" проблемы: у клиента теперь есть около 100 тыс. Возвращенных спам-писем в его почтовом ящике. И, очевидно, я ищу массовую операцию с некоторой фильтрацией, поскольку все не мусор. 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 не обрабатывать следующие аргументы как параметры, т.е. если имя файла начинается с - это не ломается.

Чтобы увидеть, что эта команда вообще что-то делает, вы можете добавить -v возможность rm, так что вы могли видеть, rm на самом деле удалить что-нибудь (перед --, конечно).

Другие вопросы по тегам