假如你想让互联网的邮箱服务提供商,帮你的 gitlab
发送邮件,就需要在配置文件中设置,并且需要在邮件服务提供商那里开通 SMTP
和POP3
功能。
关于 SMTP 和 POP3 的区别,访问 https://www.zhihu.com/question/24605584
这里简单说一下, SMTP
用于发邮件, POP3
用于收邮件。
这里我以 126
邮箱为例,演示一下
1.首先我们在邮箱服务提供商那里开通 SMTP 。
- 配置系统使用的发件邮箱地址等信息
在配置文件: /etc/gitlab/gitlab.rb 中做如下修改
这部分,不管是使用postmail或者SMTP都需要做如下的配置。
# 是否开启系统邮箱,默认开启
gitlab_rails['gitlab_email_enabled'] = true
# 用这个账号去发送邮件
gitlab_rails['gitlab_email_from'] = 'my@126.com'
# 发送邮件中要显示的发件人名称
gitlab_rails['gitlab_email_display_name'] = 'Admin'
# 系统接收邮件的地址,一般系统发送的邮件都不要对其回复邮件
gitlab_rails['gitlab_email_reply_to'] = 'noreply@example.com'
# 邮件的标题前缀,如下图
gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'

3.配置完系统的发件信息,接下来设置邮件服务提供商的账户登录验证信息。
要想使用邮件服务商为 gitlab 系统发送邮件,是需要进行登录, 登录就需要先验证的。
所以要填写相关用于登录验证的信息
值的注意的是,上面 gitlab_email_from 的账户必须和这里的用户名(smtp_user_name)一致。
gitlab_rails['smtp_enable'] = true
# 这个配置的密码不是邮箱的登陆密码而是网易邮箱的客户端授权密码,
# 在网易邮箱web页面的设置-POP3/SMTP/IMAP-客户端授权密码查看。
# 见下图
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.126.com"
gitlab_rails['smtp_port'] = 25
# 使用这个账号发送邮件
gitlab_rails['smtp_user_name'] = "my@126.com"
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "126.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'
# 发件人账号
user['git_user_email'] = "username@domain.cn"
# 更多查看下方网址
# https://docs.gitlab.com/omnibus/settings/smtp.html
# 如果你不配置发件人, 有些邮件服务器会发送失败,
# 所以我们最好把账号和发件人都配置了, 并且保持一致, 这样保证兼容问题
4.SMTP 客户端授权码

qq邮箱的配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = 'smtp.qq.com'
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxxxxx@qq.com"
gitlab_rails['smtp_password'] = "pgecjrbcqsxdbefa"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = "xxxxxxx@qq.com"
gitlab_rails['gitlab_email_enabled'] = true
user['git_user_email'] = "xxxxxx@qq.com"
- 重器相关服务,使最新的配置文件生效
[root@vm1 ~]# gitlab-ctl reconfigure
# 再重启一下
[root@vm1 ~]# gitlab-ctl restart
使用gitlab-rails console命令进行发送邮件测试,如下所示:
irb(main):003:0> Notify.test_email('收件人邮箱', '邮件标题', '邮件正文').deliver_now
示例
[root@vm1 ~]# gitlab-rails console
Loading production environment (Rails 4.2.10)
irb(main):001:0> Notify.test_email('xxxxxxxx@qq.com', 'Message Subject', 'Message Body').deliver_now
...
irb(main):002:0>quit
[root@vm1 ~]#
网友评论