読者です 読者をやめる 読者になる 読者になる

あおみかんのブログ

フリーランスのIT系エンジニア。ゲーム制作スタジオ4th cluster代表。

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、らしい)

そういうわけで、以下のサイトの内容の通りにしたら上手く動作してくれました。