如何从 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 - '

我成功地从第二个命令获取了所有 MAILER-DAEMON 的队列 ID。但不确定xargs是否将这些队列id从q.txt一一传递到postsuper。

如果我为此获得一个工作脚本,我希望创建一个脚本来清除该集群中所有 pod 中的所有 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 --

带有双引号的管道的 Shell 命令将在 pod 上运行:

/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 {}

相关内容