自建的Gitlab服务器在阿里云上,阿里云默认屏蔽了对外的25端口连接。每添加新用户,就会反馈重置密码的邮件收不到。解决方法是登录到服务器上用mailq
命令找到邮件ID,接着用postcat命令找出链接发给对方完成密码重置工作。
这次的新用户比较奇怪(也可能是gitlab升级),使用postcat获取到的链接无效,无法重置密码。为了让其正常使用,先从管理员身份切换过去并添加SSH公钥。
事后为了解决这个问题,暂时想到两个办法:1. 使用海外的服务器;2. 使用465等SSL加密端口。第一个方法作为备选方案,优先考虑了第二种方案。遗憾的是按照官方文档配置,Gitlab不屈不挠的使用sendmail而非SMTP方式发送邮件。折腾了一个多小时还没弄好,有点心累。
快要放弃的时候转念一想,我需要的是重置密码功能,邮件先放一边吧!于是开始寻找重置用户密码方法,该过程可谓是轻松加愉快,很快就重置了用户的密码。
具体步骤如下:
# 进入gitlab控制台 gitlab-rails console # 找出用户并重置密码 user = User.find_by(email: '[email protected]') user.password='1234ABCD' user.password_confirmation='1234ABCD' user.save! # 退出控制台 exit
输出内容示例如下:
[root@localhost gitlab]# gitlab-rails console Loading production environment (Rails 4.2.8) irb(main):001:0> user = User.find_by(email: '[email protected]') => #irb(main):002:0> user.password='1234ABCD' => "1234ABCD" irb(main):003:0> user.password_confirmation='1234ABCD' => "1234ABCD" irb(main):004:0> user.save! Enqueued ActionMailer::DeliveryJob (Job ID: ea0072d2-5cd5-4b6e-bdad-fa938d977e47) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/12 => true