postsuper -d <id> deferred (-d ALL - удалить все сообщения из очереди)
Для удаления группы писем от определенного адресата, можно использовать:
mailq|grep 'test@test.ru'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferred
URL:
Обсуждается: http://www.opennet.me/tips/info/545.shtml
Вот такая ошибка на команду:
#mailq|grep 'test@test.ru'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferredwarning: invalid mail queue id: {}
А Вы уверены что в вашей очереди есть письмо от test@test.ru ??? Вместо этого адреса, нужно подставить тот, от которого вам нужно удалить письмо.К примеру для очистки почтовой очереди от засевших в ней сообщений MAILER-DAEMONa я использую вот такую строчку:
"mailq|grep 'MAILER-DAEMON'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferred"
>"mailq|grep 'MAILER-DAEMON'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferred"Одна проблемка - синтаксис xargs видимо имеет свойство меняться. :(
$xargs --help
Usage: xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]]
[-n max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
[--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
[--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
[--max-args=max-args] [--no-run-if-empty] [--version] [--help]
[command [initial-arguments]]Как заставить работать ? :)
В место команды:
mailq|grep 'MAILER-DAEMON'|awk '{print $1}'|xargs -J{} -n1 postsuper -d {} deferred
используйте команду:
mailq|grep 'MAILER-DAEMON'|awk '{print $1}'|xargs -i{} -n1 postsuper -d {} deferred
Лучше использовать команду:
mailq | grep 'MAILER-DAEMON' |awk '{print $1}'| tr -d '*' | xargs -J{} -n1 postsuper -d {} deferredДля писем, которые только что попали в очередь будет ошибка, напр.:
postsuper: warning: invalid mail queue id: 2919C45D426*
люди, а зачем придуманы мануалы?-d queue_id
Delete one message with the named queue ID from the named mail queue(s) (default: hold, incoming, active and
deferred). If a queue_id of - is specified, the program reads queue IDs from standard input. For example, to
delete all mail from or to user@example.com:mailq | tail +2 | awk ЄBEGIN { RS = "" } \
/ user@example\.com$/ { print $1 } \
Є | tr -d '*!' | postsuper -d -
...
А как быть если нужно удалить письма к получателю?
У меня в очереди большое кол-во писем одному получателю, но от разных отпровителей
# eseaarch -S * net-mail/pfqueue
Latest version available: 0.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 846 kB
Homepage: http://pfqueue.sourceforge.net/
Description: pfqueue is an ncurses console-based tool for managing Postfix queued messages
License: GPL-2
postfix
...
:) ono ?
Так попроще будетmailq|grep 'MAILER-DAEMON'|awk '{print $1}'|postsuper -d -
Твой вариант самый лучший!
Вот ещё один вариант.#!/bin/sh
for id in `/usr/local/sbin/postqueue -p | awk ' { if ($7 == "MAILER-DAEMON" ) print $1 }'`
do
/usr/local/sbin/postsuper -d $id > /dev/null 2>&1
done
тут еще есть команды советую посмотреть http://seomaster.kiev.ua/postfix.htm