# GitLab 配置系统发件邮箱

本文介绍如何为 Gitlab 服务配置邮箱,实现服务器向用户自动发送邮件。

发邮件的使用场景有很多,比如:用户忘记密码后申请密码重置用户自行注册账户时,接受邮件用于验证账户等。

# 一. 配置前准备工作及说明

  • 服务器系统版本:CentOS 7

  • 需要服务 postfix,并在终端运行 systemctl status postfix 检查服务是否已在运行状态,如果看到绿色的小圆点或者 active (running) 则表示服务正在运行。

  • 若在安装 Gitlab 之前未安装 postfix,则需运行以下命令安装并启动 postfix 服务。

    sudo yum -y install postfix
    sudo systemctl enable postfix
    sudo systemctl start postfix
    
  • 邮箱信息准备,以QQ邮箱为例。

    • 邮箱地址:xxxxxxxx@qq.com
    • SMTP服务器地址:一般是 smtp.qq.com
    • SMTP服务器端口号:一般是 456
    • 登录QQ邮箱并生成QQ邮箱第三方登录授权码

    打开 QQ 邮箱:https://mail.qq.com/ (opens new window)

    点击上方的设置,跳转到邮箱设置,然后点击账户。

    image-20220425080409310

    向下滚动网页,找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,然后点击 生成授权码,同时确保 POP3/SMTP 服务已开启。

image-20220425080851778

# 二. 编辑 GitLab 配置文件

  1. 输入以下命令用 vi 打开 GitLab 配置文件,用 /smtp 快速搜到所在的位置。
vi /etc/gitlab/gitlab.rb
  1. 找到如下图所示部分,使用上一步所获得的的信息对其进行更新。

    一定要记得将每一行配置信息最前方的 # 删掉以取消注释。

    修改 smtp_address 为 smtp.qq.com

    修改 smtp_domain 为 smtp.qq.com

    修改 smtp_user_name 为 QQ邮箱账号

    修改 smtp_passwordQQ邮箱授权码并非QQ邮箱登录密码!

image-20220425083342490

  1. 修改完成并保存后,在终端运行以下命令使配置生效。

    gitlab-ctl reconfigure
    

# 三. 测试邮箱设置是否生效

  1. 在终端运行 gitlab-rails console 命令进入 GitLab console 命令行,输入以下命令向测试邮箱发送邮件。
Notify.test_email('XXXXXX@gmail.com', 'GitLab Email Title', 'Email Content').deliver_now

XXXXXX@gmail.com 换成你想要接收邮件的邮箱,也可以和上面配置的发件邮箱用同一个邮箱。(自己给自己发邮件,发件人和收件人都是自己)

  1. 若能看到以下输出信息,则说明发送邮件成功

    Delivered mail 610835daa71d5_21d35a645978a@sage.novalocal.mail (40062.2ms)
    => #<Mail::Message:173540, Multipart: false, Headers: <Date: Mon, 02 Aug 2021 18:13:46 +0000>, <From: GitLab <xxxxxx@qq.com>>, <Reply-To: GitLab <noreply@xx.xx.4.62>>, <To: xxxxxxx@gmail.com>, <Message-ID: <610835daa71d5_21d35a645978a@sage.novalocal.mail>>, <Subject: test Gitlab Email>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
    
  2. 登录收件邮箱,检查收件箱中是否收到 GitLab 服务器发送过来的测试邮件。

用户若忘记密码,在登录页面点击忘记密码,输入注册账户时使用的邮箱,即可从服务器获取重置密码链接的邮件。

参考资料:

https://juejin.cn/post/6991924908242501669 (opens new window)