Redmine から AWS SES 経由でメールを送信可能にする

Redmine上でなんらかのアクションがあった場合にメールで通知するように出来るのですが、その際に利用するSMTPサーバをAWSのSES(Amazon Simple Email Service)にしましょうという話です。既にRoute53でドメインを管理している場合、SESを利用している場合にはそれほど難しい処理ではありませんが、唯一重要なこととしては、IAMユーザーを作成できる権限が必要です。



基本的な流れはこちらのサイトを参考にさせて頂きました。


Redmineのメール通知に使用するSMTPサーバーとして、SES(Amazon Simple Email Service)を利用するための手順を説明しています。

[Redmine] Using AWS SES as SMTP Server for Redmine notification – TechNote


こちらで書かれている手順に沿って作業を行えば問題なく設定が完了するはずです。
注意点としては、

MXレコードを上書きしない

これぐらいですかね?

Route53でドメインを管理していると、ドメイン保持証明の作業中にSESの設定からボタンひとつでRoute53にDNSレコードを追加することが出来ますが、その際にMXレコードを上書きしてしまうと、通常使用しているメールの受信が出来なくなってしまいます。SESも心得たもので「MXレコード上書きするとヤバいからチェック外しとくね」っていってくれるので、そのまま素直にボタンを押せば大丈夫です。



Redmineへの設定

IAMユーザー作成後に表示されるSMTP認証情報をRedmineに設定すれば、設定は完了です。僕が触っていた環境では、以下のようなコマンドでdocker上のRedmineコンテナを起動していました。


$ docker run --name=redmine -d  -p 10088:80 --env-file=~/docker/redmine.conf -v /mnt/data/redmine:/home/redmine/data sameersbn/redmine:3.3.0


つまり環境設定は「~/docker/redmine.conf」というファイルで行っていたので、ここにSMTP認証情報を追加すれば完了です。


入力例

REDMINE_PORT=10088
DB_TYPE=mysql
DB_HOST=*.*.*.*
DB_NAME=redmine
DB_USER=user
DB_PASS=pass
SMTP_HOST=email-smtp.ap-northeast-1.amazonaws.com ← 追加
SMTP_DOMAIN=hoge.net ← 追加
SMTP_USER=59K7FOQAEPX5NJD0PPGO ← 追加
SMTP_PASS=xN5JUoa3MppLcs4Z09ReT25g8sGGoRo8Q3w4AvGwbjDE ← 追加


docker-compose.yml を使っている人はそこに書いて起動、configuration.yml をホスト側からコピーしている人はそこに書いて適宜コピーしてください。



設定確認

設定後「管理 > 設定 > メール通知」内の一番下、「テストメールを送信」を押して送信が完了すればOKです。



ちなみに:通知が送信されるシチュエーションは

デフォルトの設定は恐らくこうなっているはずです。
(「管理 > ユーザー > ユーザーごとの設定」から確認)





「ウォッチ中または自分が関係しているもの」の送信条件は、


デフォルト設定です。次の場合に送信されます。
・自分がウォッチしているチケットが更新された
・自分が作成したチケットが更新された
・自分が担当するチケットが更新された
・チケットの更新により自分が担当者に設定された

個人設定「メール通知」各選択肢の通知内容 — Redmine.JP


とのことなので、概ね自分に関連した動きがあれば通知を受け取れるって感じでしょうか。必要に応じて適宜変更してください。