Failed to authenticate on SMTP server with username "hoge" using 2 possible authenticators. Authenticator LOGIN returned Expected response code 250
- ローカルでSTGと同じMAILのenv情報を使った場合はエラーにならない(普通にメール送信できる)
- ということは、環境差分?
- 上記のエラーになるってことは、多分SendGridのサーバーまではリクエストは届いてる
- そこの認証がうまくいってなさそう
- MAILパスワード等は合っているので、SendGrid側の許可IP(ホワイトリスト)にSTGのCloud Runからのリクエストを受け取っているCloud NatのIPが入っていない可能性
- ホワイトリストリストには入っていたが、Cloud Runの 「ネットワーキング > VPC > トラフィック」 の設定が、「プライベート IP へのリクエストのみを VPC にルーティングする」になっていた
- VPCコネクタ経由の通信になっていない
- つまり、そもそもCloud RunからSendGridにアクセスする際に、Cloud NatのIPが使われていなかった
- Cloud Runのservice.ymlに以下の対応が必要
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-app
spec:
template:
metadata:
annotations:
run.googleapis.com/vpc-access-egress: all-traffic
spec:
timeoutSeconds: 60
- これにより、外部トラフィックへの送信が全てVPCコネクタを通るようになり、SendGridへの送信元IPがNAT IPになる
- デフォルトだと、SendGridへの通信が(VPCコネクタを経由せずに)インターネットに直接送信されていた