Tagbangers Blog

Jiraテスト環境でのメール送受信のための設定

やりたいこと

Jiraの検証として、メールの送受信設定に問題がないかテストを行いたい。

本番環境からコピーして検証環境を作成した場合は、本番環境と同じ設定が入っているため、メールが間違って解析されてしまったり、ユーザーに誤った通知が送信される可能性があり、 危険です。

これを防ぐため、①検証環境から本番環境に関連するメールの処理を全て除外し、②検証用の設定を新たに加える、という手順により検証を行う。

必要項目

  • メール送信用のアカウント情報(すでに設定されている情報をもう一回)
  • メール受信テスト用のメールボックスのアカウント情報
  • テストユーザ(アプリケーションアクセス+課題作成パーミッションがあるユーザが必要)

構築・設定手順

参考:https://confluence.atlassian.com/jirakb/how-to-prepare-a-development-server-s-mail-configuration-297669416.html

  1. 既存のインスタンスをバックアップ(AMI, RDS Snapshot)
  2. AMIから新インスタンスにデータをコピー
  3. メールハンドラを無効にするため、起動するJVMパラメタに以下を追加する(/var/lib/atlassian-jira/bin/setenv.sh)

    /bin/setenv.sh
    DISABLE_NOTIFICATIONS="-Datlassian.mail.senddisabled=true -Datlassian.mail.fetchdisabled=true -Datlassian.mail.popdisabled=true"
  4. Jira再起動
  5. メールハンドラを全て削除 
  6. SMTP、IMAP / POP サーバ を全て削除
  7. インスタンス停止
  8. フィルターサブスクリプションの削除
    delete from filtersubscription; 

    テストに必要であればこの設定は飛ばして良いが、11を行い他のユーザにメールが送信されないようにする

  9. 以下のエントリーを削除
    delete from notificationinstance;
  10. 本番環境を参照しているメールサーバが全部なくなったら、ステップ2の設定を戻して再起動
  11. テストに必要なメールサーバの設定を行う
  12. テスト中に正規のユーザーにメールが送信されないようにダミーデータで更新

    全ユーザ適用。この時に非アクティブなユーザがいた場合、削除しておく
    update cwd_user set email_address='test@example.com', lower_email_address='test@example.com';
  13. メールを含むすべてのプロパティエントリを選択したものに置き換える
    update propertystring set propertyvalue ='test@example.com' where id in (select pe.id from propertyentry pe where pe.property_key='jira.project.email.sender');

送信テスト

メールの送信ができるか、だけであれば管理画面に用意されている「メール送信」画面にて、ユーザ・グループなどを指定し、送信テストを行う。

受信テスト

テスト用メールボックスを用意(空っぽの状態にしておく)し、メールハンドラのテスト、JSDのメールによるリクエストを行う。


手順12について

同じメールアドレスを全ユーザに設定した時にハマったポイントとして、メールボックスにメールが入っていて、パーミッションも問題ないのに、そのユーザからメールを送信してもチケットが自動起票されないという現象がありました。これはこちらにばっちり書いてあるので、非アクティブのユーザを消すか、非アクティブのユーザだけ違うメールアドレスに変更するという対応で回避します。