1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

パーソナルレベルの話です。ふと、ある時メールサーバのメールログを見たら何通かのメールがキューに溜まっていました。僕のメールサーバはある特定のアドレスにて受け取ったメールを無条件に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)
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?