最近,部门需要搭建一个gitlab来管理代码。gitlab搭建过程呢,网上的资料很全面,这里就不展开叙述了。
在服务器搭建完成之后,gitlab需要集成邮件,以便创建按账号后通知用户进行账号激活。在配置好git中的smtp后测试邮件发送时,出现了错误,如图:
此时出现了OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=error: wrong version number)这个错误。
附上我们gitlab中smtp的配置,如图:
出现ssl版本不兼容错误,我也是在网上找了一大堆的资料。但都没有有效的解决。
导致该问题的原因呢看起来像是ssl_version版本不兼容导致的,我们服务器上的TLS协议都是v1.2版本。gitlab服务器上的的openssl的版本为1.1.1,该版本支持TLSv1.2。
所以此时我就想到了在配置邮件相关smtp参数中正好有关tls配置的,最后再通过在gitlab官网问题中查看,发现很多人也碰见了这个问题,得出的结论smtp无法与TLSv1.2一起使用。
其中gitlab_rails['smtp_tls'] = true这一项配置是导致该报错误的元凶。
解决方法:将其设置为false
此时有小伙伴会担心设置为false后发送的邮件就不会被加密了,但是,在端口587抓取的结果中会发现邮件仍然被加密了。具体可以查看gitlab官网中对该问题的处理。
将配置文件修改后gitlab重新加载配置文件(linux下),键入命令:gitlab-ctl reconfigure
然后gitlab重启:gitlab-ctl restart
最后进行发送邮件测试:1)gitlab-rails console
2)Notify.test_email('xxxxxxxx@xxxx.cn', 'Message Subject', 'Message Body').deliver_now
发送邮件最终测试正常结果,如图: