GitLab + GitLab Runner(Docker) の構築3

GitLab のメール設定について

公式サイトのドキュメント

SMTP設定 | GitLab
GitLab product documentation.

を参考にメールの設定を行います。

おま環で申し訳ありませんが、我が家に設置されている Postfix メールサーバへの接続についてしかお話できません。プロバイダのメールサーバへ投げる設定については公式サイトを参考にトライしていただきたいです。今時、外部のメールサーバへの送信は結構苦労すると思います。最近のメーラーは自動で接続設定してくれるものですが、GitLabは認証方法や暗号化についてマニュアル設定しなければならないので理解が必要な項目が多岐にわたります。大昔はプロバイダのメールサーバに簡単な認証で投げつけとけば配信されるという良き時代がありました。しかし昨今はセキュリティを確保するために色々と難しい状況です。ここは結構ハマる部分なのでトライ&エラーで乗り切るしかありません。方向性としては、

  1. GitLab → プロバイダのメールサーバへ送信する
  2. GitLab → 内部のPostfixへ送信する(内部の専用アカウントだけで運用)
  3. GitLab → 内部のPostfixへ送信する → Postfixからプロバイダのメールサーバへrelayする

の3つのパターンになるでしょうか。GitLabの設定としては2と3は同じ設定なので、設定としては大きく2つのパターンとなります。最も難易度が低いのは2です。1は難しいかもしれませんが一番確実なやり方です。3は2の発展形で、Postfixから外部メールサーバへのrelay設定をすることになります。昨今は別ドメインからのメールを受け付けなかったり、送信したメールが迷惑メールとして受け付けられないなど、メールが未達となる可能性があります。現状、我が家は3の運用です。以下の設定はそのつもりで読んでください。

GitLab 設定ファイル

/etc/gitlab/gitlab.rb 設定ファイルを編集します。

### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "Postfixアドレス"
gitlab_rails['smtp_port'] = SMTPポート番号
gitlab_rails['smtp_user_name'] = "SMTPユーザ名"
gitlab_rails['smtp_password'] = "SMTPパスワード"
gitlab_rails['smtp_domain'] = "fermata.mydns.jp"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_pool'] = false
gitlab_rails['smtp_force_ssl'] = false

###! **Can be: 'none', 'peer', 'client_once', 'fail_if_no_peer_cert'**
###! Docs: http://api.rubyonrails.org/classes/ActionMailer/Base.html
gitlab_rails['smtp_openssl_verify_mode'] = 'none'

# gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
# gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"

### Email Settings

# gitlab_rails['gitlab_email_enabled'] = true

##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
##! can change the 'From' with this setting.
gitlab_rails['gitlab_email_from'] = '送信メールアドレス'
gitlab_rails['gitlab_email_display_name'] = 'Fermata GitLab'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@fermata.mydns.jp'
# gitlab_rails['gitlab_email_subject_suffix'] = ''
# gitlab_rails['gitlab_email_smime_enabled'] = false
# gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/gitlab_smime.key'
# gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/gitlab_smime.crt'
# gitlab_rails['gitlab_email_smime_ca_certs_file'] = '/etc/gitlab/ssl/gitlab_smime_cas.crt'ぽ

設定ポイント

gitlab_rails[‘smtp_enable’] true
gitlab_rails[‘smtp_address’] Postfix のアドレス
gitlab_rails[‘smtp_port’] SMTPポート番号
gitlab_rails[‘smtp_user_name’] SMTPユーザ名
gitlab_rails[‘smtp_password’] SMTPパスワード
gitlab_rails[‘smtp_domain’] SMTPドメイン名
gitlab_rails[‘smtp_authentication’] = “login” 環境に合わせる login or plain
gitlab_rails[‘smtp_enable_starttls_auto’] 環境に合わせる true or false
gitlab_rails[‘smtp_tls’] = false 環境に合わせる true or false
gitlab_rails[‘smtp_pool’] = false 環境に合わせる true or false
gitlab_rails[‘smtp_force_ssl’] = false 環境に合わせる true or false
gitlab_rails[‘smtp_openssl_verify_mode’] = ‘none’ 環境に合わせる none or peer
gitlab_rails[‘gitlab_email_from’] メールアドレス
プロバイダのメールサーバへ投げる場合、自分のメールアドレスでないと受け付けてくれない場合がある
gitlab_rails[‘gitlab_email_display_name’] メールアドレス表示名を適当に設定
gitlab_rails[‘gitlab_email_reply_to’] noreply@SMTPドメイン名
GitLab設定反映
sudo gitlab-ctl reconfigure
メール送信確認

gitlab-rails コンソールでメール送信テストを実施します

sudo gitlab-rails console

コンソールが起動したら

Notify.test_email('送信先メールアドレス', 'From GitLab', 'GitLab Test Mail').deliver_now

このテストで、メールサーバへの connect エラーが発生したらメールサーバの認証の方式が違うなど原因究明を行う必要があります。エラーが発生せずに、送信先メールアドレスにメールが届けばOKです。

その他必要な最低限の設定については、後日、改めて記事にします。

タイトルとURLをコピーしました