gmailの転送時に421-4.7.0 rate limitedで拒否されるメールを自動で削除する

パーソナルレベルの話です。ふと、ある時メールサーバのメールログを見たら何通かのメールがキューに溜まっていました。僕のメールサーバはある特定のアドレスにて受け取ったメールを無条件にgmailのアカウントに転送しています。ささやかなメールのバックアップのつもりです。キューに溜まっているメールは某日経のメールのみで特に読む必要もなく保管しておく必要もないのでgmailへの再送は無駄と考え、1日1回適当な時間にキューを見て削除したいと思いました。

もちろん、放っておいても何度か再送が行われてそのうちgmailに届くようです。

メールキューの該当メッセージの例です
>A478010F60BE   101167 Thu Jul  5 18:40:14  21-101999-70191-0-1-1739585-1-xxxxxxxx_com@mx4.nikkei.com
>(host alt1.gmail-smtp-in.l.google.com[108.177.104.26] said: 421-4.7.0 [xxx.xxx.xxx.xxx      15] Our system has detected an unusual rate of 421-4.7.0 unsolicited mail originating from your IP address. To protect our 421-4.7.0 users from spam, mail sent from your IP address has been temporarily 421-4.7.0 rate limited. Please visit 421-4.7.0  https://support.google.com/mail/?p=UnsolicitedRateLimitError to 421 4.7.0 review our Bulk Email Senders Guidelines. c18-v6si2773616oiy.298 - gsmtp (in reply to end of DATA command))
>                                         xxxxxxxx@gmail.com
```

これを読むと僕のIPから迷惑メールが大量に来ているから、一時的に制限するという内容に見えます。いやいやいや、せいぜい1日にgmailへ転送しているメールなんか100通くらいでっせ。

## 環境
* CentOS7.5
* postfix 2.10.1

## 内容
* gmailから421-4.7.0 rate limitedで拒否されたメールがキューにあったら削除する

## コード - code
```
#!/bin/bash

bounce_sender="postmaster@xxxxx.com"
bounce_to="root@xxxxx.com"
bounce_subject_prefix="Delivery to Gmail failed: "
bounce_body="`date +"%F"` 421-4.7.0 mail report"

while read -r qid size wday month mday time sender recipient ; do
bounce_body="$bounce_body

qid       = $qid
size      = $size
date      = $wday $month $mday $time
sender    = $sender
recipient = $recipient"

postsuper -d $qid >/dev/null
done < <(postqueue -p \
  |sed -n -e '/^[0-9A-Z]*  */N' \
          -e 's/\n/ /g' \
          -e '/(host .*\.google\.com.* said: 421[- ]4\.7\.0 /N' \
          -e 's/\n  *\(.*gmail\.com\)/ \1/p' \
          | sed -e 's/(.*)//g')

echo "$bounce_body" |mail -s "$bounce_subject_prefix" -r $bounce_sender $bounce_to
```


スタックオーバーフローに以下のような記事があり、コードは参考にさせていただきました。

>[Postfixでメール送信が失敗した時にリトライせずにエラーメールを送信者に返すにはどうしたらいいですか？
](https://ja.stackoverflow.com/questions/2242/postfix%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%97%E3%81%9F%E6%99%82%E3%81%AB%E3%83%AA%E3%83%88%E3%83%A9%E3%82%A4%E3%81%9B%E3%81%9A%E3%81%AB%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E8%80%85%E3%81%AB%E8%BF%94%E3%81%99%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B/2284#2284)


1日1回はanacronで実施しました。
/etc/cron.dailyに上記シェルのシンボリックリンクをはります

残念ながら、僕のメールサーバはスパムフィルタリングはやっていません。postfixの機能で手動フィルタをやってます。どうしても迷惑メールが来てしまいますが、明らかな迷惑メールですらgmailに転送できているようなのですが、上記の某日経メールだけはgmailが拒否判定します。なんでかはよくわからないです。

### 参考

* [Postfixでメール送信が失敗した時にリトライせずにエラーメールを送信者に返すにはどうしたらいいですか？
](https://ja.stackoverflow.com/questions/2242/postfix%E3%81%A7%E3%83%A1%E3%83%BC%E3%83%AB%E9%80%81%E4%BF%A1%E3%81%8C%E5%A4%B1%E6%95%97%E3%81%97%E3%81%9F%E6%99%82%E3%81%AB%E3%83%AA%E3%83%88%E3%83%A9%E3%82%A4%E3%81%9B%E3%81%9A%E3%81%AB%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E8%80%85%E3%81%AB%E8%BF%94%E3%81%99%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%97%E3%81%9F%E3%82%89%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B/2284#2284)
* [シェルスクリプトを書くときに気をつける9箇条](https://qiita.com/b4b4r07/items/9ea50f9ff94973c99ebe)