Redmine 2.5 + Ruby 1.8 環境下で TLS でメールが送れなくなった場合の対処
Ruby 1.8 の環境下で Redmine を 2.5 に上げたら TLS でメールが送れなくなりました。
logs/production.log を見てみると以下のようなメッセージが出力されています。
wrong argument (NilClass)! (Expected kind of OpenSSL::SSL::SSLContext)
原因と以前の対処
これは Redmine 2.3 の頃から同様だった気がするのですが、Ruby 1.8 + mail gem 2.5.4 以上 + SSL は相性が悪いことが判明。
Problem with ssl context for smtp · Issue #548 · mikel/mail · GitHub
そこで、Redmine 2.4 では Redmine の Gemfile に
gem 'mail', '2.5.3'
とバージョンを明示して対処していました。
Redmine 2.5 では・・・
Rails のバージョンが 3.2.17 に上がりました。
このバージョンが依存している actionmailer 3.2.17 が mail gem 2.5.4 に依存するようになってしまいました。
このため、mail gem 2.5.3 を指定するとバージョンが衝突してインストールできません。
Redmine 2.5 での対処
この問題に対処してくれている fork がありました。
Problem with ssl context for smtp · Issue #548 · mikel/mail · GitHub
これにより、Redmine の Gemfile の
source 'https://rubygems.org'
の直後に以下の行を追加して bundle install すれば動きます。
gem 'mail', '= 2.5.4', :git => 'https://github.com/sofatutor/mail', :branch => '2.5.4-with-fix-548' # see https://github.com/mikel/mail/issues/548
結論
さっさと Ruby のバージョンを上げよう