Ответы:
Эта команда удаляет все письма, отправленные на адрес получателя, который заканчивается @example.com
sudo mailq | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com$/ { print $1 }' | tr -d '*!' | sudo postsuper -d -
tr -d
может быть преобразован в скрипт Awk. Заменить { print $1 }
на{ r = $1; gsub(/[!*]/, "", r); print r }
Я пробовал это решение в Ubuntu 12.04, и это не работает таким образом:
sudo mailq | tail +2 | awk 'BEGIN { RS = "" } / @example\.com$/ { print $1 }' | tr -d '*!' | sudo postsuper -d -
Мне нужно изменить таким образом:
postqueue -p | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com/ { print $1 }' | tr -d '*!' | postsuper -d -
Grep решение
mailq | grep example.com -B1 | grep -oE "^[A-Z0-9]{10,11}" | sudo postsuper -d -
предполагается, что ID от 10 до 11 цифр (в зависимости от inode)
Когда вы хотите удалить сообщения с или на адреса электронной почты в определенном домене, эта команда работает для меня:
mailq | \
tail -n +2 | \
awk 'BEGIN { RS = "" } / @example\.com$/ { print $1 }' | \
tr -d '*!' | \
postsuper -d -
Также работает для удаления электронной почты с или на определенные адреса электронной почты , предоставляя, например, mail@example\.com$/
вместо @example\.com$/
.
Взято из комментария на howtoforge.com . Смотрите там для связанных решений и команды в одной строке. (Я использовал продолжение строки bash для удобства чтения).
Очень похожая команда, которая позволяет сделать удаление зависимым от того, появляется ли адрес как отправитель, получатель и т. Д., Находится там man postsuper
, где говорится о -d
:
Например, чтобы удалить всю почту только с одним получателем user@example.com:
mailq | \ tail -n +2 | \ grep -v '^ *(' | \ awk 'BEGIN { RS = "" } { if ($8 == "user@example.com" && $9 == "") print $1 }' | \ tr -d '*!' | \ postsuper -d -
(Переменные означают: $ 7 = отправитель, $ 8 = получатель1, $ 9 = получатель2. Я изменил кавычку, чтобы использовать tail -n +2
, так как они tail +2
больше не работают, по крайней мере, в некоторых современных системах.)
@example\.com
кажется неправильным.
|
(или ||
или &&
или несколько других).
Я немного изменил это:
mailq | grep -B1 | grep -oE "^ [A-Z0-9] {12}" | xargs -I% postsuper -d%
postsuper
вообще не является улучшением. xargs
хорошо, когда вы используете его правильно, но это не одна из тех ситуаций.
tail -n +2
вместоtail +2
.