多くのメールデーモンメールを発生させるドメインfoo.comがあるので、kubernets pods postfixメールキューからこれらのメールを削除したいと思います。私はスクリプトを書いたが、それが正しい方法であるかどうかわかりません。
kubectl config use-context <context-name>
kubectl exec postfix-pod-0 -n <namespace> -- postqueue -p | grep -B2 foo.com | grep MAILER-DAEMON | awk {'print $1'} > q.txt
cat q.txt | xargs -n1 'kubectl exec postfix-pod-0 -n <namespace> -- /usr/sbin/postsuper -d - '
2番目のコマンドでは、すべてのMAILER-DAEMONのキューIDが正常に取得されました。しかし、xargsがq.txtからpostsuperにこれらのキューIDを1つずつ渡すかどうかはわかりません。
これについての作業スクリプトを取得したら、クラスタ内のすべてのポッドからfoo.com MAILER-DAEMONメッセージをすべて消去するスクリプトを生成したいと思います。
答え1
kubectl -n namespace exec -ti postfix-pod-0 -- /bin/sh -c "postqueue -j | grep ${DEL_ADDR} | jq -r .queue_id | xargs -I {} postsuper -d {}"
説明する。 "--"の後に実行コマンドを作成します(この場合はパラメータを含む/ bin / sh)。
kubectl -n namespace exec -ti postfix-pod-0 --
二重引用符で囲まれたシェルコマンドがポッドで実行されます。
/bin/sh -c "command"
json形式でpostfixキューを取得します。 Averyで印刷された行はjsonオブジェクトです。
postqueue -j
grepコマンドで必要な行を取得してjqに渡すことができます。
grep ${DEL_ADDR}
jqからメッセージIDの値を取得します。
jq -r .queue_id
次に、queue_idをxargに渡し、postsuper -dを介して削除します。
xargs -I {} postsuper -d {}