前言
gitlab自带的poxfix经常因为这种或者那种原因发送不出邮件,所以我们常常会使用外部的SMTP服务来让gitlab能够对外发送邮件,本篇博文首先会讲述gitlab如何配置smtp服务,而且在尝试让gitlab对接阿里云邮箱的时候便会出现问题,明明一切都是配置好的,但是发送邮件收不到,在gitlab-rails控制台中输入发送邮件命令测试则会返回“end of file reached (EOFError)”错误或则连接超时,这篇博文也会讲述如何解决这个问题
SMTP的配置以及问题的处理
要处理问题,我们来从gitlab是如何配置SMTP邮件系统的过程中来说明解决方法
第一步:配置好阿里企业邮箱(这里不在赘述)
第二部:修改gitlab的配置文件,gitlab的配置文件位于/etc/gitlab/gitlab.rb文件中,打开的文件应该长这个样子
然后我们找一下SMTP服务相关的配置选项
gitlab中本来就有上面这些配置,但是被注释掉了,我们可以选择取消注释掉他们,或者是直接复制到下面另起一行(我选择的第二种),我们需要修改如下的配置
gitlab_rails[‘smtp_enable’] = true //这个用来启用smtp服务
gitlab_rails[‘smtp_address’] = “smtp.qiye.aliyun.com” //填写smtp发件服务器的地址,这边给的是阿里云smtp的地址
gitlab_rails[‘smtp_port’] = 465 //smtp端口号,阿里云采用的是465端口
gitlab_rails[‘smtp_user_name’] = “your@example.com” //smtp登陆邮箱
gitlab_rails[‘smtp_password’] = “passwd” //smtp账号的密码
gitlab_rails[‘smtp_authentication’] = “login” //验证方法选择login即可
不要开启:gitlab_rails[‘smtp_enable_starttls_auto’] = false 一定不要有这个!!!!,就让这个保持原样,不要将这行配置启用!这里
一定要开启:gitlab_rails[‘smtp_tls’] = true //使用tls加密方法来连接,这行与上一行就是就是出现eof报错的罪魁祸首
配置完了发件服务器的设置,我们接下来就是要配置发送的邮件的设置,将配置文件向下进行滚动,我们也可以看到如下的配置(大概率是被注释掉的,请激活这些配置)
gitlab_rails[‘gitlab_email_enabled’] = true //激活gitlab的email服务
gitlab_rails[‘gitlab_email_from’] = ‘noreply@q2019.org’ //建议填写发信人的邮箱
gitlab_rails[‘gitlab_email_display_name’] = ‘noreply@q2019.org’ //邮箱展示的发件人名字
gitlab_rails[‘gitlab_email_reply_to’] = ‘noreply@q2019.org’ //展示的回信邮箱
gitlab_rails[‘gitlab_email_subject_suffix’] = ‘系统通知’ //在邮件中增加的字段
以上gitlab的smtp服务就配置完成了,进行下重载配置,在终端中执行
gitlab-ctl reconfigure
这样重新重载配置(执行完后等待一段时间,无需执行gitlab-ctl restart命令,如果宝塔面板部署的gitlab的ngnix出现故障,请查看我的这一片博文(点击访问)
验证配置是否成功
配置完成,我们就要进行验证,您可以通过两种方法来进行验证
第一种,(不推荐)直接尝试找回自己账号的密码,看自己的邮箱能不能收到邮件
第二种,(推荐) 在终端中输入以下的命令
gitlab-rails console
等待一段时间(我的服务器是等待了1分钟的时间)
然后在新出来的终端中输入以下的指令
Notify.test_email(‘收件人邮箱’, ‘邮件标题’, ‘邮件正文’).deliver_now
假如没有出错则大功告成!