之前在家里的群晖里面安装了gitlab-ce,刚开始准备用的时候发现一个问题,就是给自己修改邮箱之后点击保存,页面还是自动生成的example邮箱,下方提示让去配置的邮箱里面认证啥的。
在网上搜了下,发现是需要给gitlab配置上通知邮件,也就是说,得先给gitlab服务本身配置邮件地址,然后通过该地址给其它注册用户发送邮箱注册确认链接。
下面就用我自己的163邮箱来作为示例说明。
开启163邮箱的SMTP服务
可以使用一个自己不常用的邮箱,或者自己重新申请一个,在上方导航栏中找到设置→POP3/SMTP/IMAP设置
进入之后如下图所示,开启IMAP/SMTP服务。
开启之后,会提示让你进行验证,然后生成一个有效期180天的登录授权码,该授权码主要是用来在第三方邮件客户端充当登录密码来使用的,注意有效期,意味着180天后需要重新生成。
修改gitlab邮箱配置
配置文件名称:gitlab.rb
如何找到并修改?打开容器配置中目录映射配置,比如我的群晖,就打开容器详情即可看到
我是直接通过ssh登录到群晖命令行操作的。
/volume1/docker/gitlab/etc/gitlab# vi gitlab.rb
可以直接搜索字符串smtp,在配置文件中有示例,以下为自带的示例:
### GitLab email server settings
###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
###! **Use smtp instead of sendmail/postfix.**
# gitlab_rails['smtp_enable'] = true
# gitlab_rails['smtp_address'] = "smtp.server"
# gitlab_rails['smtp_port'] = 465
# gitlab_rails['smtp_user_name'] = "smtp user"
# gitlab_rails['smtp_password'] = "smtp 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_pool'] = false
以下为我实际使用的配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxxx@163.com"
gitlab_rails['smtp_password'] = "xxxxxxx" # 163 邮箱密码或授权码
gitlab_rails['smtp_domain'] = "smtp.163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "xxxx@163.com"
gitlab_rails['gitlab_email_display_name'] = "GitLab"
再配置好邮箱地址后,需要把gitlab重启下。
测试邮件发送是否正常
可以进入gitlab控制台发送测试邮件
gitlab-rails console
Notify.test_email('receiver@163.com', 'GitLab测试邮件', '配置成功').deliver_now
receiver@163.com:为你自己的测试接收邮箱地址,比如你给gitlab配置的A@163.com,那么这里测试的时候你就填写B@163.com或者其它邮件地址。
当然了,我选择了另外一种,就是在gitlab中重新给用户配置邮件地址,然后查看是否收到了gitlab发送的确认邮件,如下:
看起来运行的很完美。