2012-05-21 205 views
32

默認gitlab有一個配置在gitlab.ymlgitlab電子郵件設置

email: 
    from: [email protected] 
    host: gitlabhq.com 

但是,我需要指定其他變量(主機,端口,用戶名,密碼等),使用其他郵件服務器。

我該怎麼做?

+0

我找相同的解決方案。請讓我知道如果你找到了更好的方法 –

+0

你不可能在運行gitlab的主機上安裝一個簡單的smtp中繼?然後您就可以將其配置爲使用經過驗證的郵件服務器中繼郵件 –

+0

看看這裏:http://stackoverflow.com/questions/16201090/gitlab-email-notifications-not-sending/16690884#16690884 - ---- –

回答

10

這讓我很困惑。但要更改郵件設置,請在config/environments/production.rb中編輯它們。只需像常規Rails應用程序那樣添加config.action_mailer.smtp_settings即可。

5

gitlab.yml中的email:host:配置實際上並不適用於郵件服務器/ SMTP主機。它被用來在電子郵件中構建到您的Gitlab主機的鏈接。我們稱之爲gitlab服務器'gitlab.local'(並且有一個DNS條目),所以我們的配置說host: gitlab.local

這樣,當用戶收到來自Gitlab的電子郵件時,鏈接將起作用,而不是鏈接到http://localhost/,這是默認設置。

那裏有一些冗餘配置。爲了在Gitlab中正確顯示git克隆URL,您還需要使用相同的主機名稱配置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:

+0

我發現這個答案對於我自己在GitLab本地虛擬機發送的GitLab帳戶邀請電子郵件中設置適當鏈接的場景很有用;看到一個問題/答案我張貼在這裏:http://stackoverflow.com/questions/24589361/how-to-change-the-host-ip-sent-in-emails-to-new-gitlab-users-to-a -publicly-visib –

30

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


在配置/環境/ 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 => '[email protected]', 
     :password => 'yourPassword', 
     :enable_starttls_auto => true 
    } 

參考的ActionMailer文檔可能配置更詳細的說明:http://api.rubyonrails.org/classes/ActionMailer/Base.html

注意:您可能需要在Gitlab更新後再次編輯文件

+4

注意:':authentication =>:login'或':cram_md5'可能是需要的,當你的郵件服務器上沒有使用tls/ssl時,應該使用':enable_starttls_auto => false'通常當端口是25時,如上所述)。 – ocodo

+1

很好的答案。這是有效的,但它是Girish KG建議的更清潔的選項。如果你修改了production.rb文件,你可以發現通過git升級gitlab的問題,你需要在升級成功之前處理一些存儲庫衝突。 – ProtheanTom

3

這是我最後在/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 => '[email protected]', ## 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 

+1

誰downwote,請添加評論說爲什麼他們downvoted。所以其他人可以理解爲什麼這位作者的方法不行/不是最好的。請。 –

+0

是否有可能通過/etc/gitlab/gitlab.rb文件完成這一切? – unc0nnected

40

現在是在Gitlab完全不同5.2+。

它位於「/home/git/gitlab/config/initializers/smtp_settings.rb.sample」中,我們只需要按照其中的說明進行操作。

+0

這是對的。請注意,默認安裝不會有smtp_settings.rb.sample。但你可以從github – look

+0

得到它,並需要配置後綴? – janwen

+3

在版本6.3.1中,該文件已被移至/home/git/gitlab/config/initializers/smtp_settings.rb.sample – damko

6

對於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