GitLab 的诸多设置和选项配置主要在 /etc/gitlab/gitlab.rb 这个文件中,选项非常丰富,提供了很多不同的设置内容,也很容易出错,一旦出错就会重配置(gitlab-ctl reconfigure)失败,所以我建议一小节一小节的修改,本文介绍如何自建在 GitLab 中配置 SMTP 设置,配置完成后,就可以由系统自动发送通知邮件,包括用户注册、用户找回密码、仓库更新、CI/CD 等等操作都可以收到邮件了。
首先需要有一个 SMTP 邮件发送服务器,我推荐使用 AWS 或者一些专门的邮件发送服务器,而不要使用个人邮箱,使用个人邮箱发送邮件,数量大的话,会导致发送失败甚至会被邮件服务提供商判定为滥用服务而封锁帐号。我目前用的是 Amazon Simple Email Service、Oracle Email Delivery 和 MXroute,Amazon SES 最成熟好用,但是 MXroute 的配置最直白,所以在本文我以 MXroute 的配置为例,假设使用下列账号:
SMTP: friday.mxroute.net
用户: good@opensource.com
密码: 9876543a21
端口:465
首先,在配置文件(/etc/gitlab/gitlab.rb)中找到 Email 的段落,未修改的默认配置如下,已被注释。
说明如下:
### GitLab email server settings //Email 服务器设置
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
# gitlab_rails[‘smtp_enable’] = true // 改为 true 启用 SMTP 设置
# gitlab_rails[‘smtp_address’] = “改为 smtp 服务器地址”
# gitlab_rails[‘smtp_port’] = 465
# gitlab_rails[‘smtp_user_name’] = “替换为自己的 smtp 用户名”
# gitlab_rails[‘smtp_password’] = “替换为自己的 smtp 密码”
# gitlab_rails[‘smtp_domain’] = “替换为自己的 smtp 域名,可以注释本行”
# gitlab_rails[‘smtp_authentication’] = “login”
# gitlab_rails[‘smtp_enable_starttls_auto’] = true
# gitlab_rails[‘smtp_tls’] = false
# gitlab_rails[‘smtp_pool’] = false
对于我的自建 GitLab,并且 SMTP 服务器是使用 MXroute 的情况下,下面配置文件供参考:
修改完成后,保存退出,运行 gitlab-ctl reconfigure 重配置,再运行 gitlab-ctl restart 重启加载新的配置文件,没有红色报错,就是配置成功了,完成后可以测试一下,测试方法如下:
- 在命令行下输入 gitlab-rails console 进入 gitlab 的 console 界面,此过程可能耗时数十秒,需等候
- 打开 console 界面后,输入 Notify.test_email(‘你的邮箱地址’, ‘hello from gitlab’, ‘测试成功’).deliver_now 并回车
- 到你的邮箱地址检查是否收到测试邮件,收到的话,则证明配置成功。