本文以企鹅家的smtp服务器为例。
如何获取smtp_password
参考gitlab配置邮件通知
上文中 gitlab.rb 的配置内容有一点小问题,以下是我实际使用的。
注意一:smtp_tls
和smtp_enable_starttls_auto
是互斥的,必须有一个设为false
。SMTP服务提供方通常使用端口465 for TLS
,端口587 for STARTTLS
。在此例中,使用TLS。
如果都配成true
,错误提示信息如下:
gitlab_rails['smtp_tls'] and gitlab_rails['smtp_enable_starttls_auto'] are mutually exclusive. Set one of them to false. SMTP providers usually use port 465 for TLS and port 587 for STARTTLS.
$ sudo vi /etc/gitlab/gitlab.rb
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "<my_qq_id>@qq.com"
gitlab_rails['smtp_password'] = "<my_smtp_password>"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true # 与'smtp_enable_starttls_auto'只能有一个为true
注意二:gitlab_email_from
必须和上面的 smtp_user_name
一致。SMTP server以此避免服务器被垃圾邮件利用。
如果不一致,错误提示信息如下:
/opt/gitlab/embedded/lib/ruby/gems/3.0.0/gems/net-smtp-0.3.3/lib/net/smtp.rb:1076:in `check_response': 501 Mail from address must be same as authorization user. (Net::SMTPSyntaxError)
##! If your SMTP server does not like the default 'From: gitlab@gitlab.example.com'
##! can change the 'From' with this setting.
# gitlab_email_from 必须和 smtp_user_name 一致。smtp server以此避免服务器被垃圾邮件利用
gitlab_rails['gitlab_email_from'] = '<my_qq_id>@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'gitlab server'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@my_company' # 这里可以随便写
#再修改了配置文件之后要重新加载配置文件
$ gitlab-ctl reconfigure
用gitlab console测试一下邮件发送功能。我的环境启动有点慢,用了26秒多。不知道是否能快一点,知道的请给我留言,谢谢!
# 在gitlab服务器上面测试
$ gitlab-rails console
Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]
GitLab: 16.6.0 (6d558d71eba) FOSS
GitLab Shell: 14.30.0
PostgreSQL: 13.11
------------------------------------------------------------[ booted in 26.48s ]
irb(main):001:0> Notify.test_email('<my_account@my_company>', 'Say hi from gitlab', 'This is a test').deliver_now
# 成功信息
Delivered mail 659bbf3e672ac_8ce012d78-4f2@my_hostname.mail (1385.8ms)
=> #<Mail::Message:451400, Multipart: false, Headers: <Date: Mon, 08 Jan 2024 17:24:14 +0800>, <From: gitlab server <my_qq_id@qq.com>>, <Reply-To: gitlab server <noreply@xxx>>, <To: my_account@my_company>, <Message-ID: <659bbf3e672ac_8ce012d78-4f2@my_hostname.mail>>, <Subject: Say hi from gitlab>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):002:0>