Gitlab-ce smtp 设定
在安装 Omnibus package 时,有推荐安装 postfix 搭建 mail 服务器。这可能比较麻烦。
此外,使用 gitlab 作为简单版控工具或其它功能,大部分都不需要接收其它用户发送的邮件,而是发出邮件。例如用户注册需要验证用户账户,合并冲突发送给对应使用者提醒有冲突,重大任务分配设置邮件提醒指定开发者……考虑到这些功能 gitlab 主要是作为发件者,配置 SMTP 即可。gitlab 默认支持 SMTP 的配置。
SMTP 是一种提供可靠且有效的电子邮件传输的协议。SMTP 是建立在 FTP 文件传输服务上的一种邮件服务,主要用于系统之间的邮件信息传递,并提供有关来信的通知。
它与 POP3 和 IMAP 可共同使用。SMTP 是用于发送邮件,而 POP3 和 IMAP 用于接收邮件。
基本步骤如下:
修改 gitlab-ce 默认 SMTP 配置
打开 gitlab-ce 的配置文件,默认在/etc/gitlab/gitlab.rb
,找到对应配置 smtp 的位置,按照实际配置修改,如下图:
(为了方便修改,我把 Email Settings 部分和 GitLab email server settings 内容放到了一起)
对应的主要配置说明:
设定 Email 相关信息(设定档中「Email Settings」区块为设定 Email 相关信息部分。)
- gitlab_email_enabled:启用 Email 功能。
- gitlab_email_from:寄件人信箱。
- gitlab_email_display_name:寄件人显示名称(预设为 GitLab 或是 GitLab 账号名称)。
- gitlab_email_reply_to:回复信箱(预设为 noreply@ + 外部 URL)
设定 SMTP Server(设定档中「GitLab email server settings」区块为设定 SMTP Server 部分)
- smtp_enable:启用 SMTP 功能。
- smtp_address:SMTP Server。
- smtp_port:SMTP Port。
- smtp_user_name:SMTP 使用者账号。
- smtp_password:SMTP 使用者密码。
- smtp_domain:SMTP 网域。
- smtp_authentication:SMTP 验证模式。
- smtp_enable_starttls_auto:SMTP 开启 TLS 设定。
- smtp_tls:使用 TLS 设定。
- smtp_openssl_verify_mode:SMTP SSL 验证模式。
更多对应的配置,可参考一下官网的SMTP settings
配置更改完成之后,需要执行sudo gitlab-ctl reconfigure
使配置生效。
测试是否成功
控制台命令测试
终端输入sudo gitlab-rails console
,进入 gitlab-rails 工作区.
在命令行输入测试命令,测试命令格式:
Notify.test_email({收件者邮箱地址},{邮件主题},{邮件内容}).deliver_now
按照实际内容替换{}及其中文字即可。
如果发送成功,终端会显示测试命令发出的邮件信息,或者直接到收件者邮箱从查看。如果失败,可以根据终端中错误提示进行判断。
如下图:
值得注意,虽然我确认我是安装的 gitlab-ce 版本,但是这里显示的是 12.6.0-ee。我猜是一个小的 bug。
设定 gitlab 注册用户需验证邮箱
或者直接使用 giltab 相关功能测试
可以测试,注册用户时,需要邮件确认之后,才能登入。gitlab 账号注册时验证邮箱的正确性,在注册时可以减少使用不存在的邮箱进行注册,保证 user 的有效性。
首先开启注册需要邮件验证。
使用 root 管理员账号登入,点击“管理员区域”–>“设定”–>”注册限制”,把Send confirmation email on sign-up
打勾,最后保存。
然后新注册一个用户。
注销 root 账号之后,输入注册信息,点击注册按钮,会跳转到发送确认邮件的画面。
如果直接返回到登入页面,使用刚刚注册的账号登入,则会出现以下You have to confirm your email address before continuing
字样。
这样,说明 gitlab 的注册验证邮箱的设定生效了。
然后查看刚刚注册账号使用的邮件,如果有收到自己 gitlab 发送的注册确认邮件,那么 gitlab SMTP 设定也是成功了。
当然,后续点击蓝色连接,则会跳转到登入页面,并有显示邮箱已被成功确认的信息,这时再使用刚刚注册账号登入即可成功。