Массовое удаление почтовых ящиков, управляемых 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
на самом деле удалить что-нибудь (перед --
, конечно).