はじめに
GitLab を利用する際にユーザー作成通知やパスワードリセットなどを行うためのメール送信機能が必要になると思います。
今回はその機能を Amazon SES を使って有効化したいと思います。
前提
今回は SES の用意ができている前提で作業を行います。
以下は SES を利用するにあたり必要な内容ですので事前に済ませておいてください。
事前準備
まずは事前準備を行います。
SMTP ユーザーの作成
GitLab が利用する SMTP ユーザーの作成を行います。
バックアップ
現在の状態にいつでも戻せるようにバックアップを取っておきましょう。
バックアップ
$ sudo cp -pi /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_yyyymmdd
Amazon SES の実装
基本的に GitLab の設定は gitlab.rb で行えます。
編集
$ sudo vim /etc/gitlab/gitlab.rb
修正差分
$ sudo diff -y --suppress-common-lines /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_yyyymmdd
gitlab_rails['smtp_enable'] = true | # gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "email-smtp.ap-northeast-1.amazonaws | # gitlab_rails['smtp_address'] = "smtp.server"
gitlab_rails['smtp_port'] = 587 | # gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "************" | # gitlab_rails['smtp_user_name'] = "smtp user"
gitlab_rails['smtp_password'] = "****************** | # gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_domain'] = "sample.hengjiu.jp" | # gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login" | # gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true | # gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'no-reply@sample.hengjiu | # gitlab_rails['gitlab_email_from'] = 'example@example.com'
gitlab_rails['gitlab_email_display_name'] = 'Hengjiu GitLab Support'| # gitlab_rails['gitlab_email_display_name'] = 'Example'
gitlab_rails['gitlab_email_reply_to'] = 'no-reply@sample.hengjiu.com| # gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.co
パラメータ概要
パラメータ | 内容 |
---|---|
gitlab_rails['smtp_enable'] | SMTPの有効/無効の設定 |
gitlab_rails['smtp_address'] | SMTPサーバー情報 |
gitlab_rails['smtp_port'] | 利用ポート ※推奨は587 |
gitlab_rails['smtp_user_name'] | SMTPユーザー名 |
gitlab_rails['smtp_password'] | SMTPパスワード |
gitlab_rails['smtp_domain'] | メール送信に利用するドメイン |
gitlab_rails['smtp_authentication'] | SMTPサーバーへの認証方法 |
gitlab_rails['smtp_enable_starttls_auto'] | STARTTLSを利用するかどうか |
gitlab_rails['gitlab_email_from'] | 送信元(from)メールアドレス |
gitlab_rails['gitlab_email_display_name'] | メール受信時の表示名 |
gitlab_rails['gitlab_email_reply_to'] | メール返信先 |
修正したら、 gitlab-ctl reconfigure します。
reconfigure
$ sudo gitlab-ctl reconfigure
[xxxx-xx-xxT04:58:08+00:00] INFO: Started Cinc Zero at chefzero://localhost:1 with repository at /opt/gitlab/embedded (One version per cookbook)
Cinc Client, version 17.10.0
Patents: https://www.chef.io/patents
Infra Phase starting
~~~
Running handlers:
[xxxx-xx-xxT04:59:39+00:00] INFO: Running report handlers
Running handlers complete
[xxxx-xx-xxT04:59:39+00:00] INFO: Report handlers complete
Infra Phase complete, 6/850 resources updated in 01 minutes 30 seconds
gitlab Reconfigured!
確認
すると、登録したメールアドレスに以下のように送信されているのが確認できます。
おわりに
EC2 を利用する場合、メール送信機能は postfix を利用するよりも SES を利用するのがおすすめです。
また、SES 以外にも Gmail や SendGrid などを利用することもできます。
メール送信機能はセキュリティや運用負荷を考えるとサーバー内で実装するのは極力避けると良いと思います。
その他の GitLab に関する投稿
GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。
参考