많은 메일 데몬 메일을 발생시키는 도메인 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 {}