Skip to main content

配置电子邮件通知

为了让用户轻松地快速响应 GitHub Enterprise Server 上的活动,可以配置 你的 GitHub Enterprise Server 实例 对问题、拉取请求和提交注释发送电子邮件通知。

谁可以使用此功能?

Site administrators can configure email for notifications.

为企业配置 SMTP

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击
  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
  3. 在“ 站点管理”边栏中,单击“管理控制台”。
  4. 在“设置”边栏中,单击“电子邮件”。
  5. 选择“启用电子邮件”。 这将同时启用出站和入站电子邮件。 不过,要想入站电子邮件正常运行,还需要按照下文“配置 DNS 和防火墙设置以允许传入的电子邮件”所述配置 DNS 设置。
  6. 键入 SMTP 服务器的设置。
    • 在“服务器地址”字段中,输入 SMTP 服务器的地址。
    • 在“端口”字段中,输入 SMTP 服务器用于发送电子邮件的端口。
    • 在“域”字段中,输入 SMTP 服务器将随 HELO 响应(如有)发送的域名。
    • 在“身份验证”下拉菜单中选择 SMTP 服务器使用的加密类型。
    • 在“无回复电子邮件地址”字段中,输入要在所有通知电子邮件的“发件人”和“收件人”字段中使用的电子邮件地址。
  7. 如果想放弃发送到无回复电子邮件地址的所有传入电子邮件,请选中“放弃发送到无回复电子邮件地址的电子邮件”。
  8. 在“支持”下,选择用于向用户提供附加支持的链接类型。
    • 电子邮件:内部电子邮件地址。
    • URL:内部支持站点的链接。 必须包含 http://https://
  9. 测试电子邮件传递

测试电子邮件递送

  1. 在“电子邮件”部分的顶部,单击“测试电子邮件设置” 。

  2. 在“发送电子邮件到”下,输入用于接收测试电子邮件的地址。

  3. 单击“发送测试电子邮件”。

    Tip

    如果在发送测试电子邮件时发生 SMTP 错误(例如即时递送失败或传出邮件配置错误),将在“测试电子邮件设置”对话框中看到这些错误。

  4. 如果测试电子邮件失败,请排查电子邮件设置问题

  5. 测试电子邮件成功后,在“设置”边栏下,单击“保存设置”。

  6. 等待配置运行完毕。

对 SMTP 连接强制实施 TLS

可以对所有传入的 SMTP 连接强制实施 TLS 加密,这有助于满足 ISO-27017 认证要求。

  1. 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击

  2. 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。

  3. 在“ 站点管理”边栏中,单击“管理控制台”。

  4. 在“设置”边栏中,单击“电子邮件”。

  5. 在“身份验证”下,选择“强制实施 TLS 身份验证(建议)”。

    管理控制台的“电子邮件”部分的屏幕截图。 标记有“强制实施 TLS 身份验证(建议)”的复选框以深橙色标出。

  6. 在“设置”边栏下,单击“保存设置”。

    注意:保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。

  7. 等待配置运行完毕。

配置 DNS 和防火墙设置以允许传入的电子邮件

如果您希望允许通知的电子邮件回复,则必须配置 DNS 设置。

  1. 确保您的 SMTP 服务器可以访问实例上的端口 25。
  2. 创建指向 reply.[hostname] 的 A 记录。 根据 DNS 提供商和实例主机配置,可以创建指向 *.[hostname] 的单个 A 记录。
  3. 创建一个指向 reply.[hostname] 的 MX 记录,以便发送到该域的电子邮件可以路由到实例。
  4. 创建一个将 noreply.[hostname] 指向 [hostname] 的 MX 记录,以便对通知电子邮件中 cc 地址的回复可以路由到实例。 有关详细信息,请参阅“配置通知”。

排查电子邮件递送问题

创建支持捆绑包

如果无法根据显示的错误消息确定什么地方出错,可以下载包含邮件服务器与 GitHub Enterprise Server 之间的整个 SMTP 对话的支持包。 在下载并提取捆绑包后,请检查 enterprise-manage-logs/unicorn.log 中的条目,查看整个 SMTP 对话日志和任何相关错误。

该独角兽日志应以类似于下面所示的方式显示事务:

This is a test email generated from https://10.0.0.68/setup/settings
Connection opened: smtp.yourdomain.com:587
-> "220 smtp.yourdomain.com ESMTP nt3sm2942435pbc.14\r\n"
<- "EHLO yourdomain.com\r\n"
-> "250-smtp.yourdomain.com at your service, [1.2.3.4]\r\n"
-> "250-SIZE 35882577\r\n"
-> "250-8BITMIME\r\n"
-> "250-STARTTLS\r\n"
-> "250-ENHANCEDSTATUSCODES\r\n"
-> "250 PIPELINING\r\n"
<- "STARTTLS\r\n"
-> "220 2.0.0 Ready to start TLS\r\n"
TLS connection started
<- "EHLO yourdomain.com\r\n"
-> "250-smtp.yourdomain.com at your service, [1.2.3.4]\r\n"
-> "250-SIZE 35882577\r\n"
-> "250-8BITMIME\r\n"
-> "250-AUTH LOGIN PLAIN XOAUTH\r\n"
-> "250-ENHANCEDSTATUSCODES\r\n"
-> "250 PIPELINING\r\n"
<- "AUTH LOGIN\r\n"
-> "334 VXNlcm5hbWU6\r\n"
<- "dGhpc2lzbXlAYWRkcmVzcy5jb20=\r\n"
-> "334 UGFzc3dvcmQ6\r\n"
<- "aXRyZWFsbHl3YXM=\r\n"
-> "535-5.7.1 Username and Password not accepted. Learn more at\r\n"
-> "535 5.7.1 http://support.yourdomain.com/smtp/auth-not-accepted nt3sm2942435pbc.14\r\n"

此日志显示该设备:

  • 打开与 SMTP 服务器的连接 (Connection opened: smtp.yourdomain.com:587)。
  • 成功连接并选择使用 TLS (TLS connection started)。
  • 执行 login 身份验证类型 (<- "AUTH LOGIN\r\n")。
  • SMTP 服务器拒绝无效身份验证 (-> "535-5.7.1 Username and Password not accepted.)。

检查 你的 GitHub Enterprise Server 实例 日志

如果需要验证入站电子邮件是否正常运行,可以在实例上查看 /var/log/mail.log/var/log/mail-replies/metroplex.log

/var/log/mail.log 可以验证消息是否送达服务器。 下面是一个成功电子邮件回复的示例:

Oct 30 00:47:18 54-171-144-1 postfix/smtpd[13210]: connect from st11p06mm-asmtp002.mac.com[17.172.124.250]
Oct 30 00:47:19 54-171-144-1 postfix/smtpd[13210]: 51DC9163323: client=st11p06mm-asmtp002.mac.com[17.172.124.250]
Oct 30 00:47:19 54-171-144-1 postfix/cleanup[13216]: 51DC9163323: message-id=<b2b9c260-4aaa-4a93-acbb-0b2ddda68579@me.com>
Oct 30 00:47:19 54-171-144-1 postfix/qmgr[17250]: 51DC9163323: from=<tcook@icloud.com>, size=5048, nrcpt=1 (queue active)
Oct 30 00:47:19 54-171-144-1 postfix/virtual[13217]: 51DC9163323: to=<reply+i-1-1801beb4df676a79250d1e61e54ab763822c207d-5@reply.ghe.tjl2.co.ie>, relay=virtual, delay=0.12, delays=0.11/0/0/0, dsn=2.0.0, status=sent (delivered to maildir)
Oct 30 00:47:19 54-171-144-1 postfix/qmgr[17250]: 51DC9163323: removed
Oct 30 00:47:19 54-171-144-1 postfix/smtpd[13210]: disconnect from st11p06mm-asmtp002.mac.com[17.172.124.250]

请注意,客户端先连接,然后队列变成活动状态。 接着,消息递送,客户端从队列中移除,会话断开连接。

/var/log/mail-replies/metroplex.log 可以显示入站电子邮件是否正在处理,以便作为回复添加到问题和拉取请求中。 下面是一个成功消息的示例:

[2014-10-30T00:47:23.306 INFO (5284) #] metroplex: processing <b2b9c260-4aaa-4a93-acbb-0b2ddda68579@me.com>
[2014-10-30T00:47:23.333 DEBUG (5284) #] Matched /data/user/mail/reply/new/1414630039.Vfc00I12000eM445784.ghe-tjl2-co-ie
[2014-10-30T00:47:23.334 DEBUG (5284) #] Moving /data/user/mail/reply/new/1414630039.Vfc00I12000eM445784.ghe-tjl2-co-ie => /data/user/incoming-mail/success

你将注意到,metroplex 会捕获并处理入站消息,然后将文件移动到 /data/user/incoming-mail/success

验证 DNS 设置

为了正确处理入站电子邮件,您必须配置有效的 A 记录(或 CNAME)和 MX 记录。 有关详细信息,请参阅“配置 DNS 和防火墙设置,以允许传入电子邮件”。

检查防火墙或 AWS 安全组设置

如果 你的 GitHub Enterprise Server 实例 位于防火墙后或者正在通过 AWS 安全组提供,请确保端口 25 对将电子邮件发送到 reply@reply.[hostname] 的所有邮件服务器开放。

联系客户支持

如果仍然无法解决问题,请通过访问 GitHub Enterprise 支持 联系我们。 请在电子邮件中附上 http(s)://[hostname]/setup/diagnostics 的输出文件,便于我们助你排查问题。