如何在Gitlab上调试电子邮件发送?

时间:2013-04-20 21:58:06

标签: ruby-on-rails ruby gitlab

我的Gitlab(第5版)没有发送任何电子邮件,我迷失了,试图弄清楚发生了什么。日志没有提供有用的信息。我将其配置为使用sendmail

我写了一个小脚本,通过ActionMailer发送电子邮件(我想这是gitlab用来发送电子邮件的,对吧?)。它正确发送电子邮件。

但是,在我的Gitlab上,我可以保证甚至不会调用sendmail。

我是否需要启用某些内容才能收到电子邮件通知?我该如何调试我的问题?

更新

问题是我无法在任何地方找到任何信息。事情就是默默地失败了。我在哪里可以找到某种日志? log目录中的日志没有提供有用的信息。

我的问题是,如何让Gitlab更加冗长?我怎样才能告诉我发生了什么?

更新2

我刚刚在Background jobs部分发现了很多邮件。很多未经处理的Sidekiq::Extensions::DelayedMailer。这是什么意思?为什么这些工作没有得到处理?

5 个答案:

答案 0 :(得分:8)

首先,我将告诉我的问题:sidekiq负责处理发送电子邮件。由于某种原因,我的sidekiq卡住了,重新启动它解决了问题。

我在Gitlab上找到有关问题的信息:

  1. 日志目录。它有一些信息。
  2. 在管理页面上,“后台作业”部分提供有关sidekiq的信息。
  3. javascript控制台(如果您的浏览器支持它)也有有用的信息。仅当您的问题与javascript有关时才会发生。
  4. 如果你达到这一点,你可以修改Gitlab的代码,这样你就可以“追踪它”写入文件:

    File.open('/tmp/logfile','a') { |file| file.write("Hello World!\n") }

答案 1 :(得分:5)

今天偶然发现了这个问题,这是我的研究:

尚不支持在GitLab GUI中调试SMTP连接。但是,有待处理的feature requestcommand line solution

设置所需的SMTP设置/etc/gitlab/gitlab.rb并运行gitlab-ctl reconfigure(请参阅https://docs.gitlab.com/omnibus/settings/smtp.html)。

启动运行gitlab-rails console production的控制台。

显示运行命令:smtp的已配置传递方法(应为ActionMailer::Base.delivery_method)。显示运行ActionMailer::Base.smtp_settings的所有已配置的SMTP设置。

发送测试邮件

Notify.test_email('youremail@example.com', 'Hello World', 'This is a test message').deliver_now

在GitLab的管理页面上,“后台作业”部分显示了有关所有作业的信息。此处也列出了失败的SMTP连接。

请注意,您可能需要重新启动GitLab实例才能使用新配置的SMTP设置(在我的实例上,控制台能够发送邮件,GUI需要重新启动)。运行gitlab-ctl restart以重新启动您的实例。

答案 2 :(得分:2)

也许尝试在生产模式下启用交付错误,看看会发生什么

  config.action_mailer.raise_delivery_errors = true

答案 3 :(得分:1)

我遇到了同样的问题,发现我需要修改application.rb:

diff --git a/config/application.rb b/config/application.rb
index d85bcab..274976f 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -11,6 +11,8 @@ end

 module Gitlab
   class Application < Rails::Application
+    config.action_mailer.sendmail_settings = { :arguments => "-i" }
+
     # Settings in config/environments/* take precedence over those specified here.
     # Application configuration should go into files in config/initializers
     # -- all .rb files in that directory are automatically loaded.

注意:我正在运行Debian 7,它使用exim进行邮件。

答案 4 :(得分:1)

在后台作业下的管理部分中,如果“预定”选项卡中有大量项目,请尝试重新启动sidekiq

cd /home/git/gitlab    
exec rake sidekiq:start RAILS_ENV=production