前に書いたこちらの記事を、よりステップを追うと共に実運用に沿って記述したものです。
本記事で実施すること
- RedmineとGmailアカウントを紐付け、Redmineからの各種通知をメールで受け取れるようにする。
想定している読者
- メール通知機能を行いたいが、SMTPサービスを用意したくない
- (AWSはSMTP機能を遮断しているなど)
- Redmineのconfiguration.ymlを設定していない
前提
以下が必須です。
- Redmine稼働サーバのSSHアクセス権限がある
- かつ管理者権限を持っている
- Gmailアカウントを持っている
- ※この連携のためだけに、一つ、連携専用のアカウントを作成することを「強く、強く」推奨します。
また、Redmineのディレクトリを
/home/www-data/redmine
としていますので、自分の環境に合わせてください。
注意事項
本記事により、以下のリスクが発生します。
- Gmailアプリパスワード漏洩により、用意したアカウントでメールが送信される。
- その他、 Googleアカウント全体が危険にさらされる。
そのため、この作業は細心の注意を払ってください。
さっくりとした手順
- Gmailの2段階認証を有効にします。
- アプリパスワードを発行します。
- Redmine稼働サーバでメールの設定を行います。
- 送信確認を行います。
Googleアカウントで設定をします。
- Googleアカウント > セキュリティに移動します。
- Googleへのログインで「2段階認証プロセス」をオンにします。
どういう方法で認証をするかは運用に合わせてください。
アプリパスワードを用意します。
- Googleアカウント > セキュリティに移動します。
- Googleへのログイン > アプリパスワードに移動します。
- プルダウンメニューから以下を入力し、「生成」をクリックします。
- アプリを選択:メール
- デバイスを選択:その他(名前を入力)
- 任意の名前(redmine等)を入力
- 生成されたパスワードを控えます。
- このパスワードはGoogleアカウントへのアクセス権が付与されることに注意ください。
- このパスワードはRedmineサイトのDBパスワードと同様の厳密さで運用しましょう。
メールサーバ情報を設定します。(RedmineサーバにSSH接続)
【】内は、自分の環境に合わせます。
cat <<- __EOF__ | sudo tee -a 【/home/www-data/redmine/config/configuration.yml】
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "smtp.gmail.com"
port: 465
ssl: true
authentication: :plain
domain: "smtp.gmail.com"
user_name: "【Gmailアドレス】"
password: "【上述したアプリパスワード】"
__EOF__
ls -l /home/www-data/redmine/configconfiguration.yml
配置したディレクトリは自分の環境に合わせます。
設定を反映します。
sudo systemctl restart apache2.service
自分が使っているWebサービスに合わせます。
Redmineサイトに管理者アカウントでログインします。
- 管理>設定に移動します。
- 「メール通知」がタブが有効になっているので、このタブをクリックします。
通知メールの設定を行います。
以下を設定して「保存」をクリックします。
- 送信元メールアドレス:自分のメールアドレス
- 宛先を非表示(bcc):チェックを外す
- メール通知の送信対象とする操作:運用に合わせます。
通知メールの確認を行います。
- Redmineの個人設定に移動します。
1.「自分自身による変更の通知は不要」のチェックを外し、保存をクリックします。 - 任意のチケットを発行/変更し、メールが届いていることを確認します。
以上で、設定は完了です。
トラブルシューティング:メールが届かない場合
Googleからのセキュリティ通知を確認する
新しいサーバー(VPS)からの最初のログインは、Googleによって「不審なログイン試行」と見なされ、一時的にブロックされることがあります。
その場合、Gmailアカウントの受信トレイに「セキュリティ通知」メールが届いているはずです。メールの内容に従い、「はい、心当たりがあります」などの操作を行って、アクセスを許可してください。
サーバーからGmailへの接続を確認する:
RedmineサーバーからGmailのSMTPサーバーに到達できるかを確認します。SSHで以下のコマンドを実行します。
telnet smtp.gmail.com 587
Connected to smtp.gmail.com.
のように表示されれば、ネットワーク的な接続は問題ありません。(終了するには quit
と入力します)