无法从 GitLab 发送邮件

Posted

技术标签:

【中文标题】无法从 GitLab 发送邮件【英文标题】:Unable to send mail from GitLab 【发布时间】:2016-02-03 08:18:15 【问题描述】:

我正在尝试将 GitLab 配置为使用 Microsoft Exchange 发送邮件,但是它不起作用,没有电子邮件从 gitlab 发送给用户

这是我的配置:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.company.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "gitlab@company.com"
gitlab_rails['smtp_password'] = "PASSWORD"

我还用Java邮件实现了一段代码,它发送邮件成功,这是Java邮件配置:

final String username = "gitlab@company.com";
final String password = "PASSWORD";
properties.put("mail.smtp.host", "mail.company.com");
properties.put("mail.smtp.port", "25");
properties.put("mail.transport.protocol", "smtp");

谁能指出如何解决这个问题?

【问题讨论】:

【参考方案1】:

完整的交换配置还应包含以下几行:

gitlab_rails['smtp_domain'] = "smtp.company.com" # SMTP domain to use
gitlab_rails['smtp_authentication'] = "login" # Use login credentials

Source

【讨论】:

【参考方案2】:

我正在尝试将 GitLab 配置为使用 Microsoft Exchange 发送邮件

这应该是不可能的/容易的之前 GitLab 11.7 (January 22nd, 2019) OP 之后 3 年以上。

见“GitLab now supports Microsoft Exchange and Google Groups for incoming email features like Service Desk”

从 GitLab 11.7 开始,您现在可以将 Microsoft Exchange 或 Google Groups 与您的自我管理 GitLab 实例一起使用,配置为电子邮件服务器,从而在设置传入电子邮件功能时为您提供更多选择。

以前,只有当您的电子邮件服务器支持 sub-addressing 时,自我管理的 GitLab 用户才能使用这些功能。 (illustrated here) Microsoft Exchange 和 Google Groups 不支持子寻址。

GitLab 11.7 现在支持子地址和全能电子邮件邮箱,从而与这两个提供全能电子邮件邮箱的流行选项兼容。

查看configuration example(用于 Omnibus 安装)

 gitlab_rails['incoming_email_enabled'] = true

 # The email address including the `%key` placeholder that will be replaced to reference the item being replied to.
 # The placeholder can be omitted but if present, it must appear in the "user" part of the address (before the `@`).
 # Exchange does not support sub-addressing, so a catch-all mailbox must be used.
 gitlab_rails['incoming_email_address'] = "incoming-%key@exchange.example.com"

 # Email account username
 # Typically this is the userPrincipalName (UPN)
 gitlab_rails['incoming_email_email'] = "incoming@ad-domain.example.com"
 # Email account password
 gitlab_rails['incoming_email_password'] = "[REDACTED]"

 # IMAP server host
 gitlab_rails['incoming_email_host'] = "exchange.example.com"
 # IMAP server port
 gitlab_rails['incoming_email_port'] = 993
 # Whether the IMAP server uses SSL
 gitlab_rails['incoming_email_ssl'] = true

是的,这适用于所有版本的 GitLab,包括核心“CE”版本(“社区版”,免费)。 见release notes:

GitLab 有一些使用传入电子邮件的强大功能,例如电子邮件回复、电子邮件新问题、电子邮件新合并请求和服务台。以前,只有使用配置为使用子地址的电子邮件服务器才能利用这些功能。

在此版本中,GitLab 现在支持子地址和包罗万象的电子邮件邮箱,使用新的电子邮件格式,允许更多电子邮件服务器与 GitLab 一起使用,包括 Microsoft Exchange 和 Google Groups(不支持子寻址)。

【讨论】:

【参考方案3】:

我有同样的问题,并设法用这个配置解决它:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.company.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "gitlab@company.com"
gitlab_rails['smtp_password'] = 'PASS'
gitlab_rails['smtp_domain'] = "smtp.company.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
#gitlab_rails['smtp_tls'] = false
gitlab_rails['gitlab_email_from'] = 'gitlab@conpany.com'

【讨论】:

以上是关于无法从 GitLab 发送邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 Gitlab docker 映像发送电子邮件

GitLab 电子邮件未发送?

GitLab 电子邮件设置:通过另一个邮件服务器发送

Gitlab配置邮件发送服务

Gitlab CE不发送电子邮件

配置gitlab通过smtp发送邮件