У меня есть сервер с несколькими доменами. Как я могу очистить все сообщения очереди Postfix для определенного домена?
Эта команда удаляет все письма, отправленные на адрес получателя, заканчивающийся на @example.com
sudo mailq | tail -n +2 | awk 'BEGIN { RS = "" } /@example\.com$/ { print $1 }' | tr -d '*!' | sudo postsuper -d -
Я пробовал это решение в 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 -
предполагает, что идентификатор составляет от 10 до 11 цифр (на основе inodes)
смотреть на pfdel.pl, обязательный инструмент для управления очередью. Требуется регулярное выражение и удаляет письма, ожидающие в очереди, соответствующей вашему домену.
Если вы хотите удалить сообщения с или на адреса электронной почты в определенном домене, эта команда работает для меня:
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
больше не работает, по крайней мере, на некоторых современных системах.)
Немного изменил:
mailq | grep -B1 | grep -oE "^ [A-Z0-9] {12}" | xargs -I% postsuper -d%