3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab のメール送信機能を SES を使って実装する

Last updated at Posted at 2023-10-26

はじめに

GitLab を利用する際にユーザー作成通知やパスワードリセットなどを行うためのメール送信機能が必要になると思います。
今回はその機能を Amazon SES を使って有効化したいと思います。

前提

今回は SES の用意ができている前提で作業を行います。
以下は SES を利用するにあたり必要な内容ですので事前に済ませておいてください。

  • 送信用ドメインの登録
    スクリーンショット 2023-10-24 19.58.05.png
  • 本番アクセス許可設定
    スクリーンショット 2023-10-24 19.58.32.png

事前準備

まずは事前準備を行います。

SMTP ユーザーの作成

GitLab が利用する SMTP ユーザーの作成を行います。
スクリーンショット 2023-10-24 19.54.01.png
スクリーンショット 2023-10-24 19.54.30.png

バックアップ

現在の状態にいつでも戻せるようにバックアップを取っておきましょう。

バックアップ
$ 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!

確認

GitLabにログインして新規ユーザーの作成を行います。
スクリーンショット 2023-10-24 11.15.48.png

すると、登録したメールアドレスに以下のように送信されているのが確認できます。
スクリーンショット 2023-10-24 17.51.22.png

おわりに

EC2 を利用する場合、メール送信機能は postfix を利用するよりも SES を利用するのがおすすめです。
また、SES 以外にも Gmail や SendGrid などを利用することもできます。
メール送信機能はセキュリティや運用負荷を考えるとサーバー内で実装するのは極力避けると良いと思います。

その他の GitLab に関する投稿

GitLab に関する記事は他にも投稿しているのでよければ読んでもらえたら嬉しいです。

参考

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?