温馨提示×

ubuntu gitlab 邮件通知怎么设置

小樊
48
2025-11-15 04:48:28
栏目: 智能运维

Ubuntu 上 GitLab 邮件通知设置指南

一 准备与总体思路

  • 选择邮件发送方式:
    • 使用外部 SMTP(推荐):GitLab 直接连接如 SMTP 587/TLS465/SSL 的邮件服务发信。
    • 使用本机 Postfix 作为中继:GitLab 把邮件交给本机 Postfix,由 Postfix 负责外发。
  • 安装时建议一并安装 Postfix(选择 Internet Site),或准备好外部 SMTP 账户信息(地址、端口、用户名、密码、域名)。

二 方案一 使用外部 SMTP 直接发信(推荐)

  • 编辑配置文件
    • 打开:sudo nano /etc/gitlab/gitlab.rb
    • 按你的邮件服务商填写(示例为端口 587/STARTTLS,如用 465/SSL 见下方差异):
      gitlab_rails['smtp_enable'] = true
      gitlab_rails['smtp_address'] = "smtp.example.com"
      gitlab_rails['smtp_port'] = 587
      gitlab_rails['smtp_user_name'] = "your_email@example.com"
      gitlab_rails['smtp_password'] = "your_password"
      gitlab_rails['smtp_domain'] = "example.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = true
      gitlab_rails['smtp_tls'] = false
      gitlab_rails['smtp_openssl_verify_mode'] = 'peer'  # 自签证书可用 'none'
      # 可选:设置发件人默认地址与显示名
      gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
      gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
      
    • 若使用 465/SSL,常用配置为:
      gitlab_rails['smtp_enable'] = true
      gitlab_rails['smtp_address'] = "smtp.example.com"
      gitlab_rails['smtp_port'] = 465
      gitlab_rails['smtp_user_name'] = "your_email@example.com"
      gitlab_rails['smtp_password'] = "your_password"
      gitlab_rails['smtp_domain'] = "example.com"
      gitlab_rails['smtp_authentication'] = "login"
      gitlab_rails['smtp_enable_starttls_auto'] = false
      gitlab_rails['smtp_tls'] = true
      
  • 使配置生效
    • 执行:sudo gitlab-ctl reconfigure
    • 必要时重启:sudo gitlab-ctl restart
  • 说明
    • 将示例值替换为你的实际 SMTP 信息与发件人地址;如使用 Gmail,需开启两步验证并生成应用专用密码,密码填在 smtp_password

三 方案二 使用本机 Postfix 作为邮件中继

  • 安装并配置 Postfix
    • 安装:sudo apt-get update && sudo apt-get install postfix
    • 安装时选择 Internet Site,并设置系统邮件名(如:example.com)。
    • 如需通过外部 SMTP 中继,编辑 /etc/postfix/main.cf(示例):
      relayhost = [smtp.yourmailprovider.com]:587
      smtp_use_tls = yes
      smtp_sasl_auth_enable = yes
      smtp_sasl_security_options = noanonymous
      smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
      smtp_tls_security_level = encrypt
      inet_interfaces = all
      inet_protocols = ipv4
      mydestination = $myhostname, localhost.$mydomain, $mydomain
      mynetworks = 127.0.0.0/8 [::1]/128
      
    • /etc/postfix/sasl_passwd 写入凭据:
      [smtp.yourmailprovider.com]:587 your_email@example.com:your_password
      
    • 生成映射并重启 Postfix:
      sudo postmap /etc/postfix/sasl_passwd
      sudo systemctl restart postfix
      
  • 配置 GitLab 使用本地 MTA
    • 编辑 /etc/gitlab/gitlab.rb
      gitlab_rails['smtp_enable'] = false   # 由本机 MTA 发送
      # 发件人信息
      gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
      gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
      
    • 使配置生效:sudo gitlab-ctl reconfigure
  • 说明
    • 本机 Postfix 负责外发,适合企业内网统一邮件网关或需要复杂中继策略的场景。

四 测试与常见问题排查

  • 发送测试邮件
    • 进入 GitLab 管理后台(Admin Area → Monitoring → Background Jobs)执行 Run Sidekiq,触发邮件队列处理。
    • 或创建一个项目,尝试新建 Issue/合并请求 并 @ 用户,观察是否收到邮件。
  • 查看日志定位问题
    • 关键日志:/var/log/gitlab/gitlab-rails/production.log(SMTP 交互、认证失败等会在此记录)。
  • 常见问题
    • 连接/认证失败:核对 SMTP 地址、端口、用户名、密码、加密方式;如使用自签证书,可将 smtp_openssl_verify_mode 设为 ‘none’(仅测试环境)。
    • 本机 Postfix 无法外发:检查 relayhost、SASL 凭据、TLS 配置与网络连通性(端口 25/587/465 是否被防火墙放行)。
    • Gmail 发信失败:开启两步验证,使用应用专用密码;确保账户允许不够安全的应用访问或已配置应用密码。

0