Die Konfiguration von Gitlab zum Senden von E-Mails lautet wie folgt (Snippet zur E-Mail-Konfiguration für Unternehmen von Tencent):
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "xxxxxxxxxxxxxxxxx"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]'
gitlab_rails['smtp_domain'] = "exmail.qq.com"
gitlab_rails['gitlab_email_display_name'] = '[email protected]'
Die obige Konfiguration wurde normalerweise vor Gitlab Version 15.10 verwendet und der E-Mail-Versand verlief immer normal.
Später habe ich ein Upgrade durchgeführt. Nach dem Upgrade stellte ich fest, dass die E-Mail nicht erfolgreich gesendet werden konnte. Nachdem ich die Informationen überprüft hatte, stellte ich sie ein, startete smtp_enable_starttls_auto
den false
Gitlab-Dienst neu und die E-Mail wurde erfolgreich gesendet.
Um den E-Mail-Versand über die Befehlszeile zu testen, können Sie auf die folgenden Methoden zurückgreifen:
root@326adcd27dab:/# gitlab-rails console
--------------------------------------------------------------------------------
Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]
GitLab: 15.11.3 (332cca52b7e) FOSS
GitLab Shell: 14.18.0
PostgreSQL: 13.8
------------------------------------------------------------[ booted in 42.62s ]
Loading production environment (Rails 6.1.7.2)
irb(main):001:0> Notify.test_email('[email protected]','测试gitlab','邮件正文测试内容').deliver_now
Delivered mail [email protected] (3059.9ms)
=> #<Mail::Message:296880, Multipart: false, Headers: <Date: Mon, 12 Jun 2023 02:04:41 +0000>, <From: "[email protected]" <[email protected]>>, <Reply-To: "[email protected]" <[email protected]>>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: 测试gitlab>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
Als ich den E-Mail-Versand getestet habe, bevor ich das Problem gelöst habe, war die Fehlerausgabe wie folgt:
root@2f6ce0bee2e5:/# gitlab-rails console
--------------------------------------------------------------------------------
Ruby: ruby 3.0.6p216 (2023-03-30 revision 23a532679b) [x86_64-linux]
GitLab: 15.11.3 (332cca52b7e) FOSS
GitLab Shell: 14.18.0
PostgreSQL: 13.8
------------------------------------------------------------[ booted in 48.03s ]
Loading production environment (Rails 6.1.7.2)
irb(main):001:0> Notify.test_email('[email protected]','测试gitlab','邮件正文测试内容').deliver_now
Delivered mail [email protected] (1.4ms)
/opt/gitlab/embedded/service/gitlab-rails/config/initializers/mail_starttls_patch.rb:60:in `build_smtp_session': :enable_starttls and :tls are mutually exclusive. Set :tls if you're on an SMTPS connection. Set :eARTTLS for secure TLS upgrade. (ArgumentError)
(ENDE)