Techioz Blog

Gitlab で電子メール送信をデバッグするにはどうすればよいですか?

概要

私の Gitlab (バージョン 5) は電子メールを送信していません。何が起こっているのか理解できずに途方に暮れています。ログには有益な情報はありません。 sendmailを使用するように設定しました。

ActionMailer を介して電子メールを送信する小さなスクリプトを作成しました (これは、gitlab が電子メールの送信に使用するものだと思います)。そして、電子メールは正しく送信されます。

しかし、私の Gitlab では、sendmail が呼び出されさえしていないことを保証できます。

電子メール通知を受け取るために何かを有効にする必要がありますか?問題をデバッグするにはどうすればよいですか?

問題は、どこにも情報が見つからないことです。何も言わずに失敗するだけです。ある種のログはどこで見つけられますか?ログ ディレクトリ内のログには有用な情報はありません。

私の質問は、Gitlab をより冗長にするにはどうすればよいですか?何が起こっているかを知らせるようにするにはどうすればよいですか?

バックグラウンド ジョブ セクションにスケジュールされた大量のメールを見つけました。未処理の Sidekiq::Extensions::DelayedMailer が大量にあります。それはどういう意味ですか?これらのジョブが処理されなかったのはなぜですか?

解決策

今日この問題に遭遇したので、私の調査結果を以下に示します。

GitLab GUI での SMTP 接続のデバッグはまだサポートされていません。ただし、保留中の機能リクエストとコマンド ライン ソリューションがあります。

必要な SMTP 設定 /etc/gitlab/gitlab.rb を設定し、gitlab-ctl reconfigure を実行します (https://docs.gitlab.com/omnibus/settings/smtp.html を参照)。

gitlab-rails console -eproduction を実行してコンソールを起動します。

コマンド ActionMailer::Base.delivery_method を実行して、構成された配信方法 (:smtp である必要があります) を表示します。 ActionMailer::Base.smtp_settings を実行している構成済みの SMTP 設定をすべて表示します。

テストメールを送信するには

Notify.test_email('[email protected]', 'Hello World', 'This is a test message').deliver_now

GitLab の管理ページの「バックグラウンド ジョブ」セクションには、すべてのジョブに関する情報が表示されます。失敗した SMTP 接続もそこにリストされます。

新しく構成した SMTP 設定を使用するには、GitLab インスタンスを再起動する必要がある場合があることに注意してください (私のインスタンスでは、コンソールはメールを送信できましたが、GUI は再起動が必要でした)。 gitlab-ctl restart を実行してインスタンスを再起動します。