用阿里云企业邮箱作为Gitlab的邮箱SMTP服务。
申请阿里云企业邮箱
首先,需要在阿里云的控制台申请一个企业邮箱,这要求你至少有一个ECS服务器和对应的域名。我这里用的是10knet.com来申请的,每个阿里云账号只能申请一个免费企业邮箱。
阿里云企业邮免费版申请地址:https://wanwang.aliyun.com/mail/freemail/
如果你的公司在使用【钉钉】,那么也可以免费获得一个企业域名后缀的免费邮箱。
申请成功之后在阿里云官网的【控制台-企业邮箱】可以看到邮箱的基本信息。
注意这里的管理员账号是postmaster@10knet.com,我们从阿里云企业邮箱网址https://qiye.aliyun.com用这个账号登录,如果不知道密码你可以先【重置密码】。
登录之后进入【账号管理】(或右上角的小扳手域管理),设置员工账号,你可以创建一个类似service@10knet.com
的账号,用来专门发送各种自动邮件,设置好之后建议测试一下这个新账号登录企业邮箱是否能正常。
查看SMTP设置
用管理员账号登录企业邮箱,在管理设置右上角进入【帮助中心】,然后搜索SMTP
,找到企业邮箱的POP3、SMTP、IMAP地址是什么?
,点进去可以得到以下信息:
企业邮箱POP、SMTP、IMAP地址列表如下:
(阿里云邮箱web端通用访问地址:https://qiye.aliyun.com/),客户端推荐以下参数配置:
协议 服务器地址 服务器端口号(常规) 服务器端口号(加密)
POP3 pop.qiye.aliyun.com 110 995
IMAP imap.qiye.aliyun.com 143 993
SMTP smtp.qiye.aliyun.com 25 465
以下老地址和上面新地址一样可以正常使用:
协议 服务器地址 服务器端口号(常规) 服务器端口号(加密)
POP3 pop3.mxhichina.com 110 995
SMTP smtp.mxhichina.com 25 465
IMAP imap.mxhichina.com 143 993
推荐您使用加密端口连接,更加安全,使用时请注意加密端口是否已在您的本地电脑和网络中开放。
我们需要关注SMTP的服务器地址和加密端口号,稍后要用到。
设置Gitlab.rb
用sftp工具登录你的Gitlab部署的服务器,找到/etc/gitlab/gitlab.rb
文件并打开编辑,添加如下内容。
gitlab_rails['smtp_enable'] = true
gitlab_rails['gitlab_email_from'] = 'service@10knet.com'
gitlab_rails['gitlab_email_display_name'] = '10knet.com'
gitlab_rails['gitlab_email_reply_to'] = 'service@10knet.com'
gitlab_rails['smtp_address'] = "smtp.qiye.aliyun.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "service@10knet.com"
gitlab_rails['smtp_password'] = "你的邮箱密码"
gitlab_rails['smtp_domain'] = "10knet.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
需要特别注意的是端口选择465,不要忘记最后一行gitlab_rails['smtp_tls'] = true
。否则后面发送测试邮件可能遇到eoferror (end of file reached)
或net::opentimeout (execution expired)
的问题。
修改保存,上传更新Gitlab.rb之后,执行下面的命令刷新设置并重新启动Gitlab:
gitlab-ctl reconfigure
gitlab-ctl restart
发送测试邮件
上面的两个命令成功之后,我们用下面的命令进入Gitlab控制台状态。
gitlab-rails console
稍等会出现提示
-------------------------------------
GitLab: 13.1.1 (bdb9883705a) FOSS
GitLab Shell: 13.3.0
PostgreSQL: 11.7
-------------------------------------
然后输入下面的命令发送测试邮件:
Notify.test_email("88888888@qq.com","title","gitlab").deliver_now
正常的话将收到成功的提示,邮件也会正确的发送到指定邮箱。
欢迎访问我的个人站点,获取最新文章和更多资源