【问题标题】:GitLab Docker SMTPGitLab Docker SMTP
【发布时间】:2017-05-18 20:00:13
【问题描述】:

我正在使用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服务器的问题?


找到 this comment - 我没有配置 ssl,所以我会试试。 (也尝试 gitlab_rails['smtp_authentication'] = false)....没有用:\

【问题讨论】:

    标签: docker smtp gitlab


    【解决方案1】:

    正确的 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 作业/请求的日志存储在哪里...

    【讨论】:

    • 很高兴您找到了答案。请您将此标记为正确答案吗?
    • 从现在起 22 小时后我不能。
    • @SeanNewell 您可以使用 gitlab-rails 控制台测试发送电子邮件:docs.gitlab.com/omnibus/settings/…
    • 为什么不需要为 SMTP 打开端口?
    • 仅供参考,我在/var/log/sidekiq/@...中看到错误消息
    猜你喜欢
    • 2019-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2021-08-21
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    相关资源
    最近更新 更多