GitLab Docker SMTP

8
我正在使用gitlab/gitlab-ce:latest Docker镜像在公司的内部网络中设置GitLab。运行docker-compose up -d命令非常顺利,我可以使用root用户登录,并更改了密码并创建了一个合适的用户...但是我从未收到确认电子邮件。我一直在调整docker-compose.yml文件以尝试修复SMTP设置(我认为这是问题所在),以下是我所做的修改:
web:                                                                               
  image: gitlab/gitlab-ce:latest                                                 
  container_name: gitlab                                                         
  restart: always                                                                
  hostname: gitlab                                                               
  environment:                                                                   
    GITLAB_OMNIBUS_CONFIG: |                                                   
      external_url 'http://127.0.0.1:11141'                                  
      gitlab_rails['gitlab_shell_ssh_port'] = 11122                          
      gitlab_rails['smtp_enable'] = true                                     
      gitlab_rails['smtp_address'] = 'mail'                                  
      gitlab_rails['smtp_port'] = 25                                         
      gitlab_rails['smtp_user_name'] = 'noreply-gitlab'                      
      gitlab_rails['smtp_password'] = 'thepass'                           
      gitlab_rails['smtp_domain'] = 'ourhost.com'                         
      gitlab_rails['smtp_authentication'] = 'login'                          
      gitlab_rails['gitlab_email_from'] = 'noreply-gitlab@business.com'
      gitlab_rails['gitlab_email_reply_to'] = 'gitlab@business.com'    
  ports:                                                                         
    - '11141:11141'                                                            
    - '11122:22'                                                               
  volumes:                                                                       
    - '/srv/gitlab/config:/etc/gitlab'                                         
    - '/srv/gitlab/logs:/var/log/gitlab'                                       
    - '/srv/gitlab/data:/var/opt/gitlab'                                       

如果没有其他问题,我真的想知道如何访问日志。我知道电子邮件是作为Sidekiq作业处理的,但我在日志卷中看到的Sidekiq“current”日志中没有有关发送电子邮件的任何内容:\

production.log 文件中我看到了这个:

Started POST "/users/confirmation" for 172.17.0.1 at 2017-05-18 20:26:32 +0000                                        
Processing by ConfirmationsController#create as HTML                                                                  
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"lotsoflettershere==", "user"=>{"email"=>"sean.newell@business.com"}}
Redirected to http://git.coolsrvrname.dev/users/almost_there
Completed 302 Found in 40ms (ActiveRecord: 3.9ms)

我相信这只是请求重新发送确认电子邮件的操作。这是否意味着 gitlab 没有错误,而是 smtp 服务器出现了问题?

发现此评论 - 我没有配置ssl,所以我会尝试一下。 (还尝试gitlab_rails ['smtp_authentication'] = false).... 没有成功:\

1个回答

10
正确的yml文件应该是这样的:
web:                                                                               
    image: gitlab/gitlab-ce:latest                                                 
    container_name: gitlab                                                         
    restart: always                                                                
    hostname: gitlab                                                               
    environment:                                                                   
        GITLAB_OMNIBUS_CONFIG: |                                                   
            external_url 'http://git.coolsrvname.dev'                                   
            gitlab_rails['gitlab_shell_ssh_port'] = 10022                          
            gitlab_rails['smtp_enable'] = true                                     
            gitlab_rails['smtp_address'] = 'mail.myhost.com'                   
            gitlab_rails['smtp_port'] = '25'                                       
            gitlab_rails['smtp_domain'] = 'mail.myhost.com'                    
            gitlab_rails['smtp_authentication'] = false                            
            gitlab_rails['gitlab_email_from'] = 'noreply-gitlab@business.com'
            gitlab_rails['gitlab_email_reply_to'] = 'gitlab@business.com'    
    ports:                                                                         
        - '10081:80'                                                               
        - '10082:443'                                                              
        - '10022:22'                                                               
    volumes:                                                                       
        - '/srv/gitlab/config:/etc/gitlab'                                         
        - '/srv/gitlab/logs:/var/log/gitlab'                                       
        - '/srv/gitlab/data:/var/opt/gitlab'                                       

这是因为我们的SMTP服务器将gitlab主机的IP地址视为受信任的IP。所以我们将smtp auth设置为false。SMTP地址和域匹配似乎使其工作正常。外部URL需要与最终用户看到的内容相同,否则资产管理将不正确。此外,端口打开需要将外部端口映射到80 | 443 | 22,以确保一切正常运行。
对于GitLab接收电子邮件可能需要进行一些微调,但这不是问题的意图。虽然我仍然不知道传出SMTP作业/请求的日志存储在哪里...

很高兴你找到了答案。你能否将其标记为正确答案? - Drew Blessing
我要等到22小时后才能做。 - Sean Newell
1
@SeanNewell 你可以使用 gitlab-rails 控制台测试发送电子邮件: https://docs.gitlab.com/omnibus/settings/smtp.html#testing-the-smtp-configuration - rpgs_player
为什么SMTP不需要打开端口? - Auspex
1
我看到错误信息在/var/log/sidekiq/@...中。 - Auspex
提示:我正在使用列表设置环境变量,并且必须检查正确的语法。添加 - | 并在下一行以 GITLAB_OMNIBUS_CONFIG= 开始配置。 - wedi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接