Redmine(ruby)でGmailのsmtpを使ってメールを送信する

by Christopher Chan


Amazon EC2上で稼動しているRedmineからメールが送信したくなったので頑張ってみた話。


インターネット上でサービスを動かしている場合、何かしらのタイミングでメールを送りたくなる場合があるかと思います。

でも、やっぱりメールサーバの運用の難易度と言えばそりゃもう、、、なわけで、出来るだけ自分でメールサーバの運用だけは避けたいものですよね。


ということで、GmailのSMTPサービスを使ってみることにしました。

天下のGoogle様のサービスであるGmailについては、説明不要かと思いますが、Gmailは、ただのWebメールではなく、SMTPやPOP、IMAPなんかにも対応していたりします。
しかも、SMTP経由で送信したメールも、Gmail上で保管してくれるという優れものです!


で、Gmail使えるやん、ってことで設定しはじめたんですが、すんなりとはいかなかったので、以下、頑張ったメモ。

追記(2010/05/26)

本エントリの情報が少し古くなってきましたので、以下のエントリで情報をアップデートしました。あわせてご覧ください。

Redmineの設定

Redmineについてはセットアップ済みの前提で。
セットアップ手順については「連載:Redmineを運用するためのイロハを身につけよう|gihyo.jp … 技術評論社」をどうぞ。(宣伝)

まず、Redmineのメール設定を以下のような感じで編集します。

# SMTP server configuration

config.action_mailer.smtp_settings = {
        :address => "smtp.gmail.com",
        :port => 587,
        :domain => "hostname.domain",
        :authentication => :login,
        :user_name => "username@gmail.com",
        :password => "password",
}

config.action_mailer.perform_deliveries = true


":address", ":port", ":authentication" は上記のままでOKです。
":domain"のところは、Redmineが稼動しているドメインネーム(FQDN)を記述(メールのヘッダに記載される)。
":user_name" と ":password" は使用するGmailのメールアドレスとパスワードを入力してください。

メール送信、、、しかし

じゃあ、早速テストメールを送ってみましょう。
下記は、バージョン0.7の場合のオペレーションですが、それ以前のバージョンでも、ほぼ同じなので、分かるかと思います。


Redmineにログイン(管理者で)し、上部メニューの [管理] ⇒ [設定] ⇒ [メール通知]タブ を開きます。

「送信元メールアドレス」を利用するGmailアドレス、もしくは"利用するGmailアドレスアカウントに別で登録しているメールアドレス"を入力(編集)し、保存します。

で、右下にある「テストメールを送信」のリンクをクリックすると、、、

530 5.7.0 Must issue a STARTTLS command first .....


あらら、SMTPエラーが出ました。
というのも、少し調べるとGmailのSMTPは"TLS"、つまり"SMTP over SSL"で送信する必要がある、と。


が、しかし、rubyのnet/smtpでTLSをサポートしているのはバージョン1.9からで、バージョン1.8ではサポートされていないようだ。

ruby1.8のTLS対応

というわけで、d:id:zorio:20070318:1174226862 を参考に以下のようにして対応。

# gem install tlsmail

gemでtlsmailをインストール。

で、Redmineの${RAILS_ROOT}/config/environment.rbに以下2行を追記。

require "tlsmail"
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)


対応後、Redmineから、ばっちりメールが送信できるようになりました!

めでたしめでたし。

参考

ruby 1.8系でsmtpにtlsを使う - zorioの日記
http://d.hatena.ne.jp/zorio/20070318/1174226862
Gmailヘルプ - その他のメール クライアントの設定
http://mail.google.com/support/bin/answer.py?hl=jp&answer=13287




まとめ

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)

クラウドAMAZON EC2/S3のすべて (ITpro BOOKs)