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 的位置,按照实际配置修改,如下图:

gitlab邮箱设定
gitlab邮箱服务器设定

(为了方便修改,我把 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

按照实际内容替换{}及其中文字即可。

如果发送成功,终端会显示测试命令发出的邮件信息,或者直接到收件者邮箱从查看。如果失败,可以根据终端中错误提示进行判断。

如下图:

终端指令测试SMTP配置

值得注意,虽然我确认我是安装的 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 设定也是成功了。

当然,后续点击蓝色连接,则会跳转到登入页面,并有显示邮箱已被成功确认的信息,这时再使用刚刚注册账号登入即可成功。