2

Несколько часов назад возникла проблема с почтовой учетной записью клиента, которая была взломана. В результате у него в постфиксе были сотни тысяч спама в очереди, что привело к нескольким проблемам. Все исправлено и безопасность связана, за исключением одной "маленькой" проблемы: у клиента теперь есть около 100 тыс. Возвращенных спам-писем в его почтовом ящике. И, очевидно, я ищу массовую операцию с некоторой фильтрацией, поскольку все не мусор. PF работает на сервере Ubuntu v10.x с maildir.

Я попробовал эту команду в резервной папке, содержащей те же файлы:

grep -l -r 'Undelivered' | xargs rm

Но это, кажется, не делает ничего, кроме бега.

Может ли это произойти из-за того, что все "письма" хранятся в файлах, названных так:

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

1 ответ1

1

В зависимости от вашей версии grep , это может ждать вечно, потому что вы не указали имя файла (или каталога) в качестве аргумента; Поведение grep использовать текущий рабочий каталог, если указан -r является довольно новой функцией. Таким образом, если ваша версия более старая, этот ваш вызов может ждать ввода навсегда на stdin . Просто добавь . в качестве последнего аргумента для grep чтобы избежать этого случая.

Чтобы избежать проблем с именами файлов (что не должно быть проблемой в этом случае), было бы безопаснее позвонить

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

Таким образом, grep выводит совпадающие нулевые байты имен файлов ('\0'), что позволяет избежать проблем с пробелами и аналогичными именами файлов. -- говорит rm не обрабатывать следующие аргументы как опции, то есть, если имя файла начинается с - оно не прерывается.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .