# 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)
点击上方的设置,跳转到邮箱设置,然后点击账户。
向下滚动网页,找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,然后点击
生成授权码
,同时确保POP3/SMTP
服务已开启。- 邮箱地址:
# 二. 编辑 GitLab 配置文件
- 输入以下命令用 vi 打开 GitLab 配置文件,用
/smtp
快速搜到所在的位置。
vi /etc/gitlab/gitlab.rb
找到如下图所示部分,使用上一步所获得的的信息对其进行更新。
一定要记得将每一行配置信息最前方的
#
删掉以取消注释。修改 smtp_address 为
smtp.qq.com
修改 smtp_domain 为
smtp.qq.com
修改 smtp_user_name 为 QQ邮箱账号
修改
smtp_password
为QQ邮箱授权码
,并非QQ邮箱登录密码!
修改完成并保存后,在终端运行以下命令使配置生效。
gitlab-ctl reconfigure
# 三. 测试邮箱设置是否生效
- 在终端运行
gitlab-rails console
命令进入 GitLab console 命令行,输入以下命令向测试邮箱发送邮件。
Notify.test_email('XXXXXX@gmail.com', 'GitLab Email Title', 'Email Content').deliver_now
把
XXXXXX@gmail.com
换成你想要接收邮件的邮箱,也可以和上面配置的发件邮箱用同一个邮箱。(自己给自己发邮件,发件人和收件人都是自己)
若能看到以下输出信息,则说明发送邮件成功
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>>
登录收件邮箱,检查收件箱中是否收到 GitLab 服务器发送过来的测试邮件。
用户若忘记密码,在登录页面点击忘记密码,输入注册账户时使用的邮箱,即可从服务器获取重置密码链接的邮件。
参考资料:
https://juejin.cn/post/6991924908242501669 (opens new window)