GitLab依赖Postfix作为邮件传输代理(MTA),首先安装Postfix:
sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
安装过程中会提示选择配置类型,选择“Internet Site”,并设置系统邮件名(如gitlab.example.com),后续可根据实际情况修改。
编辑GitLab主配置文件/etc/gitlab/gitlab.rb(需root权限):
sudo vim /etc/gitlab/gitlab.rb
找到或添加以下SMTP配置(以QQ邮箱为例,其他邮箱类似):
gitlab_rails['smtp_enable'] = true # 启用SMTP
gitlab_rails['smtp_address'] = "smtp.qq.com" # SMTP服务器地址(QQ邮箱为smtp.qq.com)
gitlab_rails['smtp_port'] = 587 # SMTP端口(常用587或465,587用于STARTTLS,465用于SSL)
gitlab_rails['smtp_user_name'] = "your_email@qq.com" # 发件邮箱地址
gitlab_rails['smtp_password'] = "your_authorization_code" # 授权码(非邮箱密码,需通过邮箱设置获取)
gitlab_rails['smtp_domain'] = "qq.com" # SMTP域名(与发件邮箱域名一致)
gitlab_rails['smtp_authentication'] = "login" # 认证方式(通常为login)
gitlab_rails['smtp_enable_starttls_auto'] = true # 启用STARTTLS加密(587端口需开启)
gitlab_rails['smtp_tls'] = false # 禁用SSL(若用465端口则设为true)
gitlab_rails['smtp_openssl_verify_mode'] = 'peer' # 验证SSL证书(生产环境建议用peer,测试可用none)
gitlab_rails['gitlab_email_from'] = "your_email@qq.com" # 发件人地址(需与smtp_user_name一致)
注意:
smtp.gmail.com:587);保存配置文件后,执行以下命令使配置生效:
sudo gitlab-ctl reconfigure
该命令会自动应用gitlab.rb中的修改,并重启GitLab相关服务。
通过GitLab控制台发送测试邮件,验证配置是否正确:
sudo gitlab-rails console
在控制台中输入以下命令(替换为实际收件人地址):
Notify.test_email('recipient@example.com', 'GitLab邮件测试', '这是一封来自GitLab的测试邮件').deliver_now
输入exit退出控制台。若配置正确,收件人将收到测试邮件。
ufw需允许587端口);sudo gitlab-ctl tail)查看错误信息,确认收件箱是否反垃圾。通过以上步骤,Ubuntu上的GitLab即可正常发送邮件通知(如合并请求、问题更新、密码重置等)。