Я потратил последний час, пытаясь выяснить, как удалить все сообщения с определенного почтового адреса из почтовой очереди exim, после того, как очередь была заполнена спам-сообщениями.
Используйте эту строку, чтобы удалить все сообщения:
exim -bp | grep email@address.com | sed -r 's/(.{10})(.{16}).*/\2/' | xargs exim -Mrm
Он делает следующее:
exim -bp
Список почтовой очереди exim
grep email@address.com
Выбирает только строки с определенным почтовым адресом
sed -r 's/(.{10})(.{16}).*/\2/'
Выбирает ID письма
xargs exim -Mrm
Удаляет сообщение из очереди
Я уверен, что его можно оптимизировать, расскажите, пожалуйста, так ли и как!
Другой способ очистить очередь exim - распечатать третье поле, которое в данном случае будет адресом электронной почты. Любой результат, совпадающий с адресом электронной почты grep, будет удален командой exim -Mrm.
exim -bp | grep emai@address.com | awk {'print $3'} | xargs exim -Mrm
В случае, если вы хотите очистить замороженное письмо, вы можете заменить email@address.com на «замороженный»
Удалите все сообщения от sender@example.com. Вы можете добавить -v к команде exim, чтобы получить более подробный вывод.
exiqgrep -i -f sender@example.com | exim -Mrm
Вы можете сделать это немного по-другому, создав сообщение о недоставке для каждого элемента. Это подчеркивает для конечного пользователя, какой вред причиняет его скомпрометированный почтовый ящик:
exiqgrep -i -f sender@example.com | exim -Mg