kubernetes pod postfixキューからすべてのMAILER-DAEMONメッセージを消去する方法

kubernetes pod postfixキューからすべてのMAILER-DAEMONメッセージを消去する方法

多くのメールデーモンメールを発生させるドメイン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 {}

おすすめ記事