さくらのメールボックスをSMTPサーバとしてGitLabでメール送信ができるようにする

GitLab

私はさくらのメールボックスを使って独自ドメインでメールが送信できるようにしているのですが、GitLabをセルフホスティングした時に、SMTPサーバの設定をさくらのメールボックスの場合どのようにすれば良かったのかを迷っていたためここにメモをしておきます。

スポンサーリンク

前提

  • 送信したいメールのドメイン(gitlab@example.comなど)からメールが送信できることを確認している。
  • サーバ上でGitlabが使える状態になっている。

準備(事前に確認しておくこと)

①SMTP(送信)サーバの名前

SMTPサーバ名はさくらのレンタルサーバのサーバーコントロールパネルの画面右上のところから確認することができます。

赤枠で囲った初期ドメインがSMTPサーバ名となるのでメモしておきます。

② 使用するメールアドレス

③ 使用するメールアドレスのパスワード

設定

SMTPサーバの設定はgitlab.rbを編集することで行えるので、そのファイルのディレクトリまで移動します。

私の場合はdockerでGitlabをインストールしましたが、dockerの場合は、

docker container ls

と入力して、GitLabコンテナのIDを確認した後に、

docker container <GitLabコンテナのID> -it /bin/bash

で、GitLabコンテナの中に入ります。そして、

vi /etc/gitlab/gitlab.rb

でSMTPサーバの設定を記入します。(慣れていない人のために説明を加えると、viの場合は、「i」と入力してファイルを変更した後、エスケープキーを押した後で「:wq」と入力し編集内容を保存します。)

以下の2つの方法のどちらかで設定を行なってください。

メールアドレスとパスワードを直接ファイルに書き込む方法

このgitlab.rbファイルに次の内容を追加してください。一番上の部分に追加しても、ファイル内を移動してコメントアウトされているSMTPサーバの設定部分を編集してもどちらでもいいです。

gitlab_rails['smtp_enable'] = true                                                                     
gitlab_rails['smtp_address'] = "example.sakura.ne.jp" #準備①の初期ドメイン                                             
gitlab_rails['smtp_port'] = 587                                                                        
gitlab_rails['smtp_user_name'] = "gitlab@example.com" #準備②のメールアドレス                                      
gitlab_rails['smtp_password'] = "************" #準備③のパスワード                                                      
gitlab_rails['smtp_domain'] = "example.sakura.ne.jp" #準備①の初期ドメイン                                              
gitlab_rails['smtp_authentication'] = "login"                                                          
gitlab_rails['smtp_enable_starttls_auto'] = true                                                       
gitlab_rails['smtp_tls'] = false                                                                       
gitlab_rails['gitlab_email_from'] = "gitlab@example.com" #準備②のメールアドレス  

そしてファイルを保存した後に、以下のコマンドで編集内容を反映させます。

gitlab-ctl reconfigure

メールアドレスとパスワードを暗号化されたファイルに追加する方法

このgitlab.rbファイルに次の内容を追加してください。一番上の部分に追加しても、ファイル内を移動してコメントアウトされているSMTPサーバの設定部分を編集してもいいです。

gitlab_rails['smtp_enable'] = true                                                                     
gitlab_rails['smtp_address'] = "example.sakura.ne.jp" #準備①の初期ドメイン                                             
gitlab_rails['smtp_port'] = 587                                                                                                                       
gitlab_rails['smtp_domain'] = "example.sakura.ne.jp" #準備①の初期ドメイン                                              
gitlab_rails['smtp_authentication'] = "login"                                                          
gitlab_rails['smtp_enable_starttls_auto'] = true                                                       
gitlab_rails['smtp_tls'] = false                                                                       
gitlab_rails['gitlab_email_from'] = "gitlab@example.com" #準備②のメールアドレス  

ファイルを編集・保存した後、以下のコマンドで暗号化されたファイル内にメールアドレスとパスワードを書き込みます。(コマンド入力後、編集できるようになるまで少し待ちます)

gitlab-rake gitlab:smtp:secret:edit

「i」と入力をした後に、ファイルを以下のように編集します。

user_name: 'gitlab@example.com' #準備②のメールアドレス
password: 'gitlabpassword' #準備③のパスワード

入力したら、エスケープキーを押し、「:wq」で編集内容を保存します。

そしてファイルを保存した後に、以下のコマンドで編集内容を反映させます。

gitlab-ctl reconfigure

メール送信の確認

ここまで設定をしたら、実際にメールが送信できるのかを確認します。

以下のコマンドでGitLabのRailsコンソールを起動します。

gitlab-rails console

その後に、以下のコマンドで送信したいメールアドレス(ここではtarget@example.com)にメールを送信します。

irb(main):001:0> Notify.test_email('target@example.com', 'SMTPテストメール', 'このメールはGitLabのテストメールです').deliver_now

コマンドを実行した後に以下のように表示されていれば成功です。

=> #<Mail::Message:529840, Multipart: false, Headers: <Date: Tue, 06 May 2025 10:25:19 +0000>, <From: GitLab <gitlab@example.com>>, <Reply-To: GitLab <noreply@gitlab@example.com>>, <To: target@example.com>, <Message-ID: <681a37efe172_206d630ac63854@gitlab@example.com.mail>>, <Subject: SMTPテストメール>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>