2020年8月6日木曜日

Gitlab で SMTP サーバに Gmail を設定する方法

概要

Gitlab で SMTP サーバに Gmail の SMTP サーバを使う方法を紹介します
アカウントが 2段階認証を有効にしている場合はアプリパスワードを使う点に注意しましょう

環境

  • GitLab Enterprise Edition 13.2.2-ee

gitlab.rb の編集

SMTP サーバの設定は gitlab 全体で一意です
gitlab.rb を編集して SMTP サーバの設定を入れましょう

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.gmail.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your-user-name@gmail.com"
gitlab_rails['smtp_password'] = "app password"
gitlab_rails['smtp_domain'] = "smtp.gmail.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

ポイントは smtp_password です
アプリパスワードを生成して設定しましょう

アプリパスワードについて

Google で二段階認証を有効にしている場合は Google アカウントのパスワードを gitlab.rb に直接設定することができません
その場合はアプリパスワードを使って専用のパスワードを生成してから gitlab.rb の smtp_password に設定しましょう

reconfigure

gitlab.rb 編集後は reconfigure が必要です

  • gitlab-ctl reconfigure

テスト送信

公式の手順でもそうなのですが gitlab-rails console コマンド使って送信するのが早いようです

  • gitlab-rails console

で Ruby の repl になったら以下のスクリプトを入力して実行しましょう

Notify.test_email('destination_email@address.com', 'Message Subject', 'Message Body').deliver_now

引数は左から「宛先アドレス」「メール本文」「メールタイトル」になります
From は smtp_user_name に指定したユーザになっていましたが Gmail を経由しているので X-Google-Original-From というヘッダが付与されておりここには gitlab@your.gilab.domain のような gitlab のドメイン情報が設定されていました
また Reply-To も gitlab のドメインになっていました

メールを受信してヘッダを確認してみると詳細がわかると思います

プロジェクトにユーザを Invite しても OK

プロジェクトから Members でユーザを Invite してもメールが送信できるのでそこで確認しても OK です

参考サイト

0 件のコメント:

コメントを投稿