Redmine2.3のGmailを利用したメールでのチケット登録方法
Redmineのメールでのチケット登録でつまったので、その時のメモ。
メールでのRedmineのチケット登録方法
Redmineのメールでのチケット登録方法は、大きく分けて以下の3つがありますが、 (1)、(3) は設定するのが面倒だったので、メールアドレスを新規で作るだけの 一番簡単そうな (2) の方法を実施する。
(1) メールサーバからメールを転送:
- 利点: メールサーバがRedmineとは異なるサーバでもよい, メールが即座に処理される, 高速(アプリケーションのリロードが不要) - 欠点: needs some configuration on your mail transfer agent (eg. Postfix, Sendmail…)
(2) IMAPサーバからの受信:
- 利点: 設定が容易、MTAの設定が不要, メールサーバがRedmineとは異なるサーバでもよい - 欠点: メールの処理が即座には行われない (定期的にメールの取得を行うためのcronのジョブを追加する必要がある)
(3) 標準入力からのメール読み込み:
- 利点: テスト用途に最適 - 欠点: 遅い(メールが到着するごとにRedmineのアプリケーションのリロードが行われる), MTA上での設定が必要
参考:http://redmine.jp/guide/RedmineReceivingEmails/
Gamilを用いたチケットの登録、通知の設定手順
設定方法としては、IMAPサーバに送られたメールをチェックして、更新があるならメール通知するだけの以下の図の感じ。
設定環境は以下のようになります。
Redmine構築環境 ・OS:CentOS 6.4 ・Redmine:2.3.3 Redmineユーザ用アカウント:sender@gmail.com Redmine用メールアカウント:recever@gmail.com
▼ Redmine 構築手順
Redmine 構築方法は良いサイトがいろいろとあるので割愛。 注意点としては、Ruby 2系だとPassengerがうまく動作しないので、Ruby 1.9.3を使用する。
▼ Gmailアカウント作成し、IMAP機能を有効にする
redmineチケット登録用のIMAPが利用可能なメールアドレスを取得。
色々とあるとは思いますが、私はGmailアカウントを新規に作成しました。
※ デフォルトだとIMAP機能は無効なので、[設定] → [メール転送とPOP/IMAP] → [IMAPアクセス] → [IMAPを有効にする] よりIMAP機能を有効にする。
▼ Gmailアカウントからのチケット登録設定
Redmine登録ユーザのメールアドレス(sender@gmail.com)より、Redmine用メールアドレス(receiver@gmail.com)にチケット登録メールを送る。メールでのチケット登録でも、プロジェクトだけでなく、担当者や優先度など様々な項目をきめれるので、詳細については次のサイトを参照
メールサンプル例: 宛先:receiver@gmail.com 件名:チケット登録テスト 本文: チケット登録テストメール。 start date: YYYY-MM-DD assigned to: test
メール送信後、Redmineサーバより以下のコマンドを実行し、Redmineを更新する。
rake -f /var/www/html/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" port=993 ssl=1 host=imap.gmail.com username=receiver@gmail.com password=****** project=sample
※Rakefileの場所は、自身がインストールしたRedmineのRakefileを指定。 ※「username」と「password」は、Redmine用のメールアドレスを指定。 ※「project」は更新するプロジェクトを指定しているので、省略可能。
毎回、redmineに入って、上記のコマンドを実行するのは現実的ではないので、
以下の用に設定ファイルを変更し、cronで定期的に実行。(例:一分毎にコマンドを実行)
← crontabの設定ファイルにPATHを追加しても、「/usr/bin/env ruby そのようなファイルやディレクトリはありません」というふうに怒られるので、コマンド実行前に「source /root/.bashrc」するシェルスクリプトを作成し、それをcronに登録しました。(20131006 追記)
- 修正前:
% vim /etc/crontab SHELL=/bin/bash PATH=/usr/local/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ % crontab -e */1 * * * * /usr/local/bin/rake -f /var/www/html/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" port=993 ssl=1 host=imap.gmail.com username=receiver@gmail.com password=****** project=sample
- 修正後:
% vim CronFile/redmine_mail.sh #!/bin/bash source /root/.bashrc rake -f /var/www/html/redmine/Rakefile redmine:email:receive_imap RAILS_ENV="production" port=993 ssl=1 host=imap.gmail.com username=receiver@gmail.com password=****** project=sample % crontab -e */1 * * * * /root/CronFile/redmine_mail.sh % service crond restart
▼ Gmailアカウントからの通知設定
以下の用に設定することで、チケットが登録、更新された際にRedmine用GmailアカウントからRedmineユーザに通知がいく。
% vim /root/redmine/config/configuration.yml production: email_delivery: delivery_method: :smtp smtp_settings: enable_starttls_auto: true address: "smtp.gmail.com" port: 587 domain: "smtp.gmail.com" authentication: :plain user_name: "receive@gmail.com" password: "******"
これで、通知がきたメールに返信するだけで、チケットが更新されるので、便利。
以上