官方关于mail的配置文档地址:
https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration
如果是新建配置,要认真查看其中段落。
在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发送邮件,查看具体报错。可以参考命令行发送邮件的文章:
2、Gitlab本身配置参数问题:参考本文开头给出的官方文档。