RedmineからGmailを使ってメール通知をしようとして死ぬほどはまった

はい。

環境はUbuntu 14.04 + nginx + unicorn, Redmine 2.5.1、さくらのVPS。

とりあえず普通にconfig/configuration.ymlに設定を書いて管理画面からテストメールを送信してみるのだが、Execution expiredとエラーが出る。時間がかかるのでタイムアウトっぽい。sendmail代替のssmtpを入れて、そこからメールを送ってみるがダメ。

結論から言うと問題が2つあった。

  • hostnameを後から変えていたので、IPアドレスから逆引きできるものと違っていた
  • うちのプロバイダのDNSサーバでsmtp.gmail.com をIPv6で解決できなかった サーバからsmtp.gmail.comへv6で繋がらなかった (2014/11/09 訂正)

つらい。

前者の問題は割とぐぐると出てきたので、すぐに気付いて修正した。hostnameをデフォルトのものに戻してあげたところ、ssmtpから送れるようにはなった。但し2分くらいかかる。なんぞ。Redmineは気が短いのかExecution expiredに落ちる。

ssmtpにvオプションをつけて実行してみると、

user@hostnamee~$ echo "test mail 4321"|ssmtp -v "test" ***@gmail.com
(ここで2分かかる)
[<-] 220 mx.google.com ESMTP *******.68 - gsmtp 
[->] EHLO hostname.sakura.ne.jp
[<-] 250 SMTPUTF8 
[->] STARTTLS
(以下正常に進む)

 

ふむ。

いろいろ調べてみるがわからず、telnetなど試していたところ、smtp.gmail.comが解決できないことがあることがわかった。pingは解決できるけどping6はできない。resolv.confを見直せ、というのは散々見かけたのでnslookupはしていたのだが、v6だけ解決できないというのは盲点であった。v6で試して、タイムアウト後にv4にフォールバックしていたんですかね。つらかった。sysctlをいじってv6まるごと無効にして解決(すいません)。こうしてv6の普及は遅々として進まないんですね(他人事)。

ちなみに、Gmailを諦めてOutlook.comのメール(**@live.jp)で試してみたところ、一瞬で接続できて送信できたんですが、

 

Requested action not taken; We noticed some unusual activity in your Hotmail account. To help protect you, we've temporarily blocked your account.

と出て一発でアカウントをロックされました。マジかよ……。とりあえず解除申請しようとしたんですが、携帯キャリアのメールアドレスがないとだめらしいです。シンジラレナイ。サポートセンターにメールしましたが使えるのはいつになることやら。やっぱGoogle様ですね。とりあえず、僕のようにIIJに移行してしまったような人はOutlookに無茶なアクセスをするのはやめたほうがよさそうです。

ここまで7時間。つらい。v6が普及するのが先かメールが滅びるのが先か。どっちも来ないのかもしれない。