DTI@VPS 上のRailsからSendGridを使うとタイムアウトする問題の解決策
Railsからのメール送信にSendGridを使う様に変更してたら起きた問題。誰かの役に立つかもしれないので、メモ。
遭遇した現象とか雑多気味なメモ
SendGridの通例通りsmtpの設定をしてみた、けれどうまく送信されないという現象に遭遇。 同じコードをローカルで立ち上げるとちゃんとメールが送られる。なんじゃこりゃ。と。
動作を見る限りでは、タイムアウトの気配なので、おもむろに以下の様に確認した。
$ telnet smtp.gmail.com 465
まずビンゴで、telnetが通っていない事が判明。
試しにufw disable
すると、上記のtelnetが通った。
→ 原因がファイヤーウォールに搾られた
次に iptables -L
してやると、ESTABLISHED,RELATEDが読まれていない事が確認できる。何か変だぞ、と。 他の似たような設定を為ている環境でiptables -Lした結果と全然ちがう。
ここで、試しに以下の様にしてみる。
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
すると、きちんと繋がる。
(しかしここではufw経由で設定出来ないと困るなーと思っていたら、うっかりiptables -F
しちゃってサーバーからSSHがBANされたので、一回VPSの管理コンソールから再起動。)
その他の途中で見てた不穏なエラーメッセージ
検索でだれかが行き着くように、遭遇した不穏なエラーメッセージを書いておく。
problem running ufw-init # とか… iptables: Bad rule (does a matching rule exist in that chain?). # とか…
結論
どうやら OpenVZ環境でufw を使っていると起きるらしい。 (DTIはOpenVZ、らしい)
そういうわけで、以下のサイトの内容の通りにしたら上手く動作してくれました。