前回「UbuntuにGitLabをインストール」の続きです。
GitLab からユーザにメールの通知ができるようにします。
メールの送信はSendGrid というメール配信サービスを利用することにしました。
はじめに
GitLab のメールを送信する方法は下記のどちらかになります。
- Sendmail やPostfix のようなメールサーバ(MTA)をインストールして送信する
- SMTP サーバ経由で送信する
今回、前者の方でやろうと進めていましたが手こずったので、諦めて後者の「SMTP サーバ経由で送信する」で対応することにしました。
SMTP サーバの選定
軽く使う程度なので、無料で使えることと設定がしやすさよさそうだったという点で、Twilio社のSendGrid にすることにしました。
- SendGrid – Twilio
Free プランは100通/1日を上限として無料で使うことができます。
最初の3ヶ月だけ無料というような期間限定もないです。
環境について
ローカル環境
GitLab はLAN環境でのみアクセス可能(インターネット上に公開しない)
- Raspberry Pi 4 Model B / 8GB
- Ubuntu Server 20.04.4 LTS (64bit)
- GitLab Enterprise Edition 14.9.3-ee (Omnibus)
ウェブサービス
- SendGrid
SendGrid の設定
1. SendGrid のアカウントを作成
SendGrid のウェブサイトにアクセスして、Free プランでアカウントを作成します。
一般的な手順で作成できたので解説は省略します。
- SendGrid – Twilio
2. Sender Identity の作成
アカウントを作成してログインすると、下記の緑色のバー「最初のメールを送る前にsender identity の作成が必要」があるので、[Create a sender identity] をクリックします。
※ サイドバーの[Settings] > [Sender Authentication] からもSender Identity を作成することができます。
Sender Identity は下記の2つの方法で作成できます。(両方も可能)
- Domain Authentication
- 送信ドメイン認証(SPFとDKIM)。独自ドメインのDNS の設定が必要
- Single Sender Verification
- SendGrid を使って送信するメールの差出人の情報を登録する。メールを受信できるメールアドレスが必要
今回は、DNS の設定が不要な”Single Sender Verification” にするので、Single Sender Verification の右の[Get Started] をクリックします。
送信したメールの受信者側に表示される情報(メール差出人の名前・メールアドレス)や迷惑メールの防止に関する法律を遵守する上で必要な情報(会社の住所など)を登録します。
- Twilio Acceptable Use Policy – Twilio
- Twilio サービス利用ポリシー (Twilio Japan Acceptable Use Policy-AUP) (日本語) – Twilio
日本の場合は特定電子メール法に、特定電子メールの送信者に課される表示義務(特定電子メールである旨、送信者の情報:氏名・名称・住所、送信者の送信に使ったメールアドレス、送信者の受信用のメールアドレス)というのがあるので、この辺のことと思われます。
今回の使用目的はGitLab ユーザーへのメール通知なので、ここの登録を難しく考えるより、アカウントの乗っ取りを気をつける方を重視しようと思います。(→後述「4. アカウントの保護(2要素認証の設定)」)
入力にあたっては、下記のサイトが参考になりました。
- ステップ1 差出人情報の作成 – 構造計画研究所
入力して[Create] をクリックすると、”From Email Address” に入力したメールアドレス宛にメールが送られ、下記のページが表示されます。
届いたメールがこちらです。
[Verify Single Sender] をクリックします。
SendGrid を使って送信するメールの差出人のメールアドレスが認証されました。
[Return to Single Sender Verification] をクリックすると元のページに戻り、下記のように認証された差出人の情報が表示されています。
3. API Key の作成
サイドバーの[Settings] >[API Keys] をクリックします。
[Create API Key] をクリックします。
“API Key Name” に任意の名称を入力して、下記のいずれかを選択します。
- Full Access
- Restricted Access
- Billing Access
今回の使用目的はGitLab ユーザーへのメール通知なので、機能制限ができる”Restricted Access” を選択します。
Access Details の”Mail Send” の右にある線をクリックして”Full Access” まで青い線が引かれた状態にして[Create & View] をクリックします。
作成されたAPI Key が表示されるのでコピーしてどこか安全な場所に保存しておきます。
- 表示されているAPI Key は再度表示できない
- 安全な場所に保存とのことなので、パスワードマネージャーに作成したSendGrid のアカウントの一項目の情報として登録しておきました
[Done] をクリックすると元のページに戻り、下記のように作成したAPI Key が表示されます。
左のAPI Key ID はAPI Key の一部で、中央のAPI KEY はマスクされた状態でクリックなどしても表示されないようになっています。
4. アカウントの保護(2要素認証の設定)
本題からそれますが、前述「2. Sender Identity の作成」の手順の途中で記載したアカウントの乗っ取りを気をつける方を重視の対応です。
サイドバーの[Settings] >[Two-Factor Authentication] をクリックして、Authy またはSMS を選択して2要素認証の設定をします。
※ 手順の解説は省略します
GitLab の設定
1. /etc/gitlab/gitlab.rb
GitLab の公式ドキュメントを参考に設定します。
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.sendgrid.net"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "apikey"
gitlab_rails['smtp_password'] = "the_api_key_you_created"
gitlab_rails['smtp_domain'] = "smtp.sendgrid.net"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
# If use Single Sender Verification You must configure from. If not fail
# 550 The from address does not match a verified Sender Identity. Mail cannot be sent until this error is resolved.
# Visit https://sendgrid.com/docs/for-developers/sending-email/sender-identity/ to see the Sender Identity requirements
gitlab_rails['gitlab_email_from'] = 'email@sender_owner_api'
gitlab_rails['gitlab_email_reply_to'] = 'email@sender_owner_reply_api'
黄色いマーカーの3ヶ所に任意の値を指定します。
- smtp_password
- 作成したAPI Key
- gitlab_email_from
- 認証したSender Identity のFrom Email Address
- gitlab_email_reply_to
- 認証したSender Identity のReply To
設定ファイルを再読み込みして設定を反映します。
sudo gitlab-ctl reconfigure
2. テストメールの送信
下記のコマンドを実行してテストメールを送信します。
sudo gitlab-rails console
Notify.test_email('[email protected]', 'Message Subject', 'Message Body').deliver_now
→ テストメールが送信される
※ 黄色いマーカーの3ヶ所に送信先メールアドレス、メールのタイトル、メールの本文を指定します。
3. ユーザの作成
ブラウザでGitLab にroot ユーザなどAdministrator 権限のユーザでログインしてユーザを作成して、作成時に登録したメールアドレスにGitLab からメールが届くか確認します。
届いたメールのリンクをクリックして初期パスワードを設定することで作成したユーザが使えるようになります。
※ 手順の解説は省略します
あとがき
これで普通にGitLab を使えるようになったのではないでしょうか。管理者ユーザと一般ユーザを作って管理するという感じで。
インストール後の推奨される次のステップ、他にも何かあるので必要そうであれば対応してみようと思います。
- Steps after installing GitLab – GitLab Docs
参考
- Installing GitLab with Omnibus packages – GitLab
- SMTP settings – GitLab Docs
- SendGrid – Twilio
- WordPressのメール送信に無料SMTPサーバーを使用する方法(GmailのSMTPサーバーなど)(2020.7.30) – KINSTAブログ
- Twilio Acceptable Use Policy – Twilio
- Twilio サービス利用ポリシー (Twilio Japan Acceptable Use Policy-AUP) (日本語) – Twilio
- Reserved Substitution Tags – SendGrid (Twilio)
- ステップ1 差出人情報の作成 – 構造計画研究所