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가 q.txt에서 postsuper로 이러한 대기열 ID를 하나씩 전달하는지 확실하지 않습니다.

이에 대한 작업 스크립트를 얻으면 클러스터의 모든 포드에서 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 {}

관련 정보