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

1105
shroom

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

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

grep -l -r 'Undelivered' | xargs rm 

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

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

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

2
Какой у вас тип почтового ящика? `mbox`,` maildir` или другое? Какой сервер `pop / imap` вы используете? clement 10 лет назад 0
Используя maildir, но проблема была исправлена: просто использовала старую версию grep, для работы которой требуется каталог. shroom 10 лет назад 0

1 ответ на вопрос

1
Andreas Wiese

Depending on your version of grep, this might wait forever because you don't have given a file (or directory) name as argument; grep's behavior to use the current working directory when -r is specified is a rather new feature. Thus if your version is an older one, this your call might wait forever for input on stdin. Just add . as last argument to grep to avoid this case.

To avoid issues with file names (which shouldn't be a problem in this case), it would be safest to call

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

This way, grep outputs the matching file names zero-byte ('\0') separated, which avoids trouble with spaces and alike in file names. -- tells rm to not treat the following arguments as options, i.e. if a file name starts with a - it doesn't break.

To see whether this command does anything at all, you could add the -v option to rm, so you could see whether rm does actually remove anything (in front of --, of course).

Большое спасибо, я чувствую себя глупым из-за того, что забыл эту точку, поскольку именно это и стало причиной зависания. shroom 10 лет назад 0
Мне тоже пришлось отредактировать этот ответ, чтобы не чувствовать себя плохо. ;) Я использую Gentoo / testing, поэтому мой `grep` также поддерживает опущенный` .`, и я регулярно проваливаюсь над этим на других машинах. Andreas Wiese 10 лет назад 0

Похожие вопросы