質問: GCPのVMインスタンスで CentOS 7.8 / Postfix 2.10.1 を利用しています。 メールをSendGrid経由で外部送信しています。 > > PHP ⇢ Postfix ⇢ SendGrid ⇢ インターネット > > > PostfixはすべてのメールをSendGridにリレーするだけのような存在ですが、 Postfixの設定で、SendGridから致命的エラーが返ってきた場合でもリトライを続けるようにはできないでしょうか? 先日、Postfix ⇢ SendGrid の配送がエラーになりメールが消失しました。 メールログには次のエラーが記録されていました。 ``` status=bounced (host smtp.sendgrid.net[IPアドレス] said: 550 The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved. Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements (in reply to end of DATA command)) ``` 550の致命的エラーで終了(bounced)したようです。 この時に終了せずリトライを続けてほしい(deferred)のですが、そのような設定はあるでしょうか? もしSendGridが運用ミスなどに起因して致命的エラーを返すようになったとしても復旧します。 Postfixがそれまでリトライを続けてくれればメールは消失せず、SendGrid復旧後に配送されると思います。 4xx は一時エラー、5xx は致命的エラーなどの規約があるとは思いますが、SendGridからどんなエラーが 返ってきてもPostfixはしばらくリトライを続けるような動きになってくれると助かるのですが・・。
回答: `soft_bounce = yes` を設定すると、リモートサーバーが返す 5xx エラーを 4xx として扱うようになると思います。