Article Image

Redmineの非同期メール送信ができなくなったので調べてみた

インフラ hironemuhironemu

先日、AWSからさくらVPSにRedmineを移行しました。AWSのスモールインスタンスだと、毎月6千円くらいかかっていたので、さくらVPS1Gプランに変更し、ランニングコストを下げようということです。さくらVPS1Gプランなら月額980円なので、年間で6万円近く安くなる感じですね。

さて、それはいいとして、Redmineを移行したあと、メール送信(非同期のメール送信)ができていなことに気づいて色々調べてみました。ということで、備忘録程度にまとめておきます。

もともAWSで動いていたRedmineはバージョン2.3系をだったのですが、移行と同時にバージョンアップしv2.4.2にしました。その辺りで何か変更があったのかも知れません。

ちなみに、ZEALOTではGoogle Appsを使っているので、GmailのSMTPを使ってメール送信しています。

v2.3で動作していた設定は以下の通り。

production:
  email_delivery:
    delivery_method: :async_smtp
    smtp_settings:
      enable_starttls_auto: true
      address: smtp.gmail.com
      port: 587
      domain: your.domain.com
      authentication: login
      user_name: "info@your.domain.com"
      password: your_password

v2.4.2でちゃんと動作している時の設定

default:
  email_delivery:
    delivery_method: :async_smtp
    async_smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com"
      port: 587
      domain: your.domain.com
      authentication: :login
      user_name: "info@your.domain.com"
      password: your_password

違いは、smtp_settingsがasync_smtp_settingsになっているところです。 いつからこうなったんですかね?(v2.4.2の設定では、default:の下に設定を書いていますが、ここでは、あまり気にしないでください)

ちなみに、メール送信のテストは、Redmineの画面から、「管理」>「設定」>「メール通知」の画面右下の「テストメールを送信」で自分にメールが送信されるようになっています。ちょっと分かりにくい。

もしくは、サーバにログインし、以下のコマンドを実行します。

$ cd redmineインストールディレクトリ
$ bundle exec rake redmine✉️test[your_name] RAILS_ENV=production

your_nameとなっているところは、Redmineに登録されているユーザ名になり、ここで指定したユーザのメールアドレス宛てにテストメールが送信されます。

ちなみに、v2.3の設定内容をそのまま コピーしてきて、上記のコマンドを実行すると以下の様なエラーと成りました。

An error occurred while sending mail (hostname "localhost" does not match the server certificate)

成功した時は次のような内容が出力されます。

An email was sent to xxxxx@your.domain.com