gitlab邮件不能发送

Gitlab调试邮箱配置SMTP服务

官方关于mail的配置文档地址:

https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration

如果是新建配置,要认真查看其中段落。

在Gitlab后台中,可通过观察job来判断问题:

Gitlab调试邮箱配置SMTP服务
Gitlab中job显示邮箱有问题

以上的信息显示mail相关的job不能成功的发送邮件,需要通过gitlab的控制台先查看相关配置:

# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
 GitLab:       14.7.3 (293f6bb322b) FOSS
 GitLab Shell: 13.22.2
 PostgreSQL:   12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.4.4)

irb(main):001:0> ActionMailer::Base.delivery_method
=> :smtp
irb(main):002:0> ActionMailer::Base.smtp_settings
=> {:authentication=>:login, :user_name=>"noreply@moneyslow.com", :password=>"youpassword", :address=>"mail.moneyslow.com", :port=>25, :domain=>"moneyslow.com", :enable_starttls_auto=>true, :openssl_verify_mode=>"none", :ca_file=>"/opt/gitlab/embedded/ssl/certs/cacert.pem"}

手工进行邮件测试:

irb(main):001:0> Notify.test_email('ask@moneyslow.com', 'Hello World', 'This is a test message').deliver_now
Delivered mail 6242e70431cf0_13305adc4238f@gitlab.mail (5102.0ms)
Traceback (most recent call last):
        1: from (irb):1
Net::SMTPAuthenticationError (535 5.7.3 Authentication unsuccessful)

这里可以看到基本的报错,但是不全面,可以结合日志(/var/log/gitlab/gitlab-rails/production.log)来看。

就是两个思路:
1、邮件本身的问题排查:手工在操作系统tcpdump抓包,利用telnet发送邮件,查看具体报错。可以参考命令行发送邮件的文章:

利用mailx手动发送邮件


2、Gitlab本身配置参数问题:参考本文开头给出的官方文档。