【问题标题】:GitLab email setup: sending via another mail serverGitLab 电子邮件设置:通过另一个邮件服务器发送
【发布时间】:2012-05-28 05:58:28
【问题描述】:

默认情况下gitlab在gitlab.yml有下一个配置:

email:
  from: notify@gitlabhq.com
  host: gitlabhq.com

但是,我需要指定其他变量(主机、端口、用户、密码等)才能使用另一个邮件服务器。

我该怎么做?

【问题讨论】:

  • 我正在寻找相同的解决方案。如果您找到更好的方法,请告诉我
  • 你不能在运行 gitlab 的主机上安装一个简单的 smtp 中继吗?然后,您将能够将其配置为使用经过身份验证的邮件服务器中继邮件

标签: ruby-on-rails ruby-on-rails-3 git smtp gitlab


【解决方案1】:

现在在 Gitlab 5.2+ 中完全不同了。

它在“/home/git/gitlab/config/initializers/smtp_settings.rb.sample”中,我们只需要按照其中的说明进行操作即可。

【讨论】:

  • 这是对的。请注意,默认安装不会有 smtp_settings.rb.sample。但是你可以从github得到它
  • 需要配置postfix吗?
  • 在 6.3.1 版本中,该文件已移至 /home/git/gitlab/config/initializers/smtp_settings.rb.sample
  • 当我尝试复制设置时出现异常:stackoverflow.com/questions/26684035/…
【解决方案2】:

注意:此方法对旧版本的 Gitlab 很有用。 See the answer 的 Girish 用于更新版本。


在 config/environments/production.rb 的末尾,您可以添加如下内容:

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
      :address => 'yourserver.com',
      :port => 25,
      :domain => 'gitlab.yourserver.com',
      :authentication => :plain,
      :user_name => 'gitlab@yourserver.com',
      :password => 'yourPassword',
      :enable_starttls_auto => true
  }

有关可能配置的更详细说明,请参阅 ActionMailer 文档:http://api.rubyonrails.org/classes/ActionMailer/Base.html

注意:您可能需要在 Gitlab 更新后再次编辑文件

【讨论】:

  • 注意::authentication => :login:cram_md5 可能是需要的,:enable_starttls_auto => false 也应该在邮件服务器上未使用 tls/ssl 时使用(通常当端口为 25 时上面。)
  • 好答案。这可行,但它是 Girish KG 建议的更清洁的选择。如果你修改了production.rb文件,你会发现通过git升级gitlab会出现问题,你需要处理一些仓库冲突才能升级成功。
【解决方案3】:

这也让我很困惑。但是要更改邮件设置,您可以在 config/environments/production.rb 中编辑它们,只需添加一个 config.action_mailer.smtp_settings 就像常规的 Rails 应用程序一样。

【讨论】:

    【解决方案4】:

    对于 Gitlab > 7 综合,编辑 /etc/gitlab/gitlab.rb 如下并运行 sudo gitlab-ctl reconfigure

    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtp.server"
    gitlab_rails['smtp_port'] = 465
    gitlab_rails['smtp_user_name'] = "smtp user"
    gitlab_rails['smtp_password'] = "smtp password"
    gitlab_rails['smtp_domain'] = "example.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_openssl_verify_mode'] = 'none'
    

    来源:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md

    【讨论】:

      【解决方案5】:

      gitlab.yml 中的email:host: 配置实际上并不适用于邮件服务器/SMTP 主机。它用于在电子邮件中构建指向 Gitlab 主机的链接。我们称我们的 gitlab 服务器为“gitlab.local”(并为其设置了一个 DNS 条目),因此我们的配置为 host: gitlab.local

      这样,当用户收到来自 Gitlab 的电子邮件时,链接将起作用,而不是默认链接到 http://localhost/

      那里有一些冗余配置。为使 git clone URL 在 Gitlab 中正确显示,您还需要将 web:host:git_host:host: 配置为相同的主机名。

      web:
        host: gitlab.local
        port: 80
        https: false
      
      email:
         host: gitlab.local
         protocol: http
      
      git_host:
         host: gitlab.local
      

      如果您使用的是 HTTPS,请更改 web:https:web:port:email:protocol:

      【讨论】:

      • 我发现这个答案对我自己在从我的 GitLab 本地 VM 发送的 GitLab 帐户邀请电子邮件中设置正确链接的场景很有用;查看我在此处发布的问题/答案:stackoverflow.com/questions/24589361/…
      【解决方案6】:

      这是我最后在 /config/environment/production.rb 中的条目,这对我有用。


      注释掉 sendmail 选项并使用外部 SMTP 中继


        # #config.action_mailer.delivery_method = :sendmail ## Comment out this
      
        # Defaults to:
      
        # # config.action_mailer.sendmail_settings = {
      
        # #   :location => '/usr/sbin/sendmail',
      
        # #   :arguments => '-i -t'
      
        # # }
      
        config.action_mailer.perform_deliveries = true
      
        config.action_mailer.raise_delivery_errors = true
      
        # # SMTP Settings
      
        config.action_mailer.delivery_method = :smtp
      
        config.action_mailer.smtp_settings = {
      
            :address => '10.146.10.90', ## My SMTP Relay/Gateway
      
            :port => 25, ## SMTP Port
      
            :domain => 'gitlab.example.com', ## My Domain
      
            :authentication => :plain, ## Let it be plain as it is inside my LAN
      
            ##:user_name => 'gitlab@yourserver.com', ## This is not required as long as 
      
            ##:password => 'yourPassword', ## SMTP Gateway allows anonymous relay
      
            ##:enable_starttls_auto => true ## In LAN
      
            ##:user_name => '',
      
            ##:password => '',
      
            :enable_starttls_auto => true
        }
      end
      

      【讨论】:

      • 投反对票的人,请添加评论说明他们投反对票的原因。以便其他人可以理解为什么这个作者的方法不起作用/不是最好的。请。
      • 是否可以通过 /etc/gitlab/gitlab.rb 文件来完成这一切?
      【解决方案7】:

      自从最初提出这个问题以来,这些设置的位置显然已经改变了(几次)。目前截至 2018-11-02:

      根据官方文档,设置在gitlab.rb

      https://docs.gitlab.com/omnibus/settings/smtp.html

      【讨论】:

        猜你喜欢
        • 2018-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        • 2015-04-17
        • 2015-03-21
        • 2012-03-21
        相关资源
        最近更新 更多