为企业配置 SMTP
- 在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
- 如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
- 在“ 站点管理”边栏中,单击“管理控制台”。
- 在“设置”边栏中,单击“电子邮件”。
- 选择“启用电子邮件”。 这将同时启用出站和入站电子邮件。 不过,要想入站电子邮件正常运行,还需要按照下文“配置 DNS 和防火墙设置以允许传入的电子邮件”所述配置 DNS 设置。
- 键入 SMTP 服务器的设置。
- 在“服务器地址”字段中,输入 SMTP 服务器的地址。
- 在“端口”字段中,输入 SMTP 服务器用于发送电子邮件的端口。
- 在“域”字段中,输入 SMTP 服务器将随 HELO 响应(如有)发送的域名。
- 在“身份验证”下拉菜单中选择 SMTP 服务器使用的加密类型。
- 在“无回复电子邮件地址”字段中,输入要在所有通知电子邮件的“发件人”和“收件人”字段中使用的电子邮件地址。
- 如果想放弃发送到无回复电子邮件地址的所有传入电子邮件,请选中“放弃发送到无回复电子邮件地址的电子邮件”。
- 在“支持”下,选择用于向用户提供附加支持的链接类型。
- 电子邮件:内部电子邮件地址。
- URL:内部支持站点的链接。 必须包含
http://
或https://
。
- 测试电子邮件传递。
测试电子邮件递送
-
在“电子邮件”部分的顶部,单击“测试电子邮件设置” 。
-
在“发送电子邮件到”下,输入用于接收测试电子邮件的地址。
-
单击“发送测试电子邮件”。
Tip
如果在发送测试电子邮件时发生 SMTP 错误(例如即时递送失败或传出邮件配置错误),将在“测试电子邮件设置”对话框中看到这些错误。
-
如果测试电子邮件失败,请排查电子邮件设置问题。
-
测试电子邮件成功后,在“设置”边栏下,单击“保存设置”。
-
等待配置运行完毕。
对 SMTP 连接强制实施 TLS
可以对所有传入的 SMTP 连接强制实施 TLS 加密,这有助于满足 ISO-27017 认证要求。
-
在 GitHub Enterprise Server 上的管理帐户中,在任一页面的右上角,单击 。
-
如果你尚未在“站点管理员”页上,请在左上角单击“站点管理员”。
-
在“ 站点管理”边栏中,单击“管理控制台”。
-
在“设置”边栏中,单击“电子邮件”。
-
在“身份验证”下,选择“强制实施 TLS 身份验证(建议)”。
-
在“设置”边栏下,单击“保存设置”。
Note
保存 管理控制台 中的设置会重启系统服务,这可能会导致用户可察觉的停机时间。
-
等待配置运行完毕。
配置 DNS 和防火墙设置以允许传入的电子邮件
如果您希望允许通知的电子邮件回复,则必须配置 DNS 设置。
- 确保您的 SMTP 服务器可以访问实例上的端口 25。
- 创建指向
reply.[hostname]
的 A 记录。 根据 DNS 提供商和实例主机配置,可以创建指向*.[hostname]
的单个 A 记录。 - 创建一个指向
reply.[hostname]
的 MX 记录,以便发送到该域的电子邮件可以路由到实例。 - 创建一个将
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
的输出文件,便于我们助你排查问题。