Exchange2019CU12认证模式设置

Wilbur Lee 0 信誉分
2025-12-16T09:05:44.1166667+00:00

相同的配置,2台不一样的exchange2019 CU12上 其中一台25端口HELO 有250-AUTH LOGIN,另外一台HELO 无250-AUTH LOGIN,HELO是 250-AUTH NTLM,相同的配置,2台不一样的exchange2019 CU12上 其中一台587端口HELO 有250-SMARTTLS,另外一台587端口HELO 没有250-SMARTTLS,请问,如何设置成25端口HELO有250-AUTH LOGIN 和587端口HELO 有250-SMARTTLS

Exchange | Exchange 服务器 | 其他
Exchange | Exchange 服务器 | 其他

一款由 Microsoft 开发的强大电子邮件、日历和协作平台,专为支持企业级通信和数据管理而设计。不属于特定类别的其他主题。

0 个注释 无注释

1 个答案

排序依据: 最新
  1. Hin-V 16,830 信誉分 Microsoft 外部员工 审查方
    2025-12-16T11:34:05.26+00:00

    此回复已自动翻译,因此可能存在语法错误或表达不自然的情况。

    您好 @LiBO

    感谢您在 Microsoft Q&A 上发布问题。
    根据我的研究,在 Exchange Server 2019 中,EHLO(或您描述的 HELO)在端口 25 和 587 上返回的 SMTP 功能取决于相关接收连接器的配置,尤其是它们的身份验证机制(由 AuthMechanism 属性控制)和 TLS 设置。

    即使两个服务器“配置相同”,仍可能出现差异,原因可能包括:

    手动修改接收连接器(例如有人为了安全添加或删除身份验证方法)。

    TLS 证书绑定差异(例如某台服务器未设置 TlsCertificateName)。

    连接时选择的连接器不同(基于远程 IP 范围、本地绑定或权限组,如 AnonymousUsers 与 ExchangeUsers)。

    传输服务重启未在更改后统一应用。

    CU12 安装残留或补丁应用不一致。

    要重新配置服务器上的端口,可以尝试按照以下步骤操作:

    在端口 25 上设置 AUTH LOGIN 并处理 EHLO(HELO)响应

    默认情况下,Exchange 2019 在端口 25 的连接器的 AuthMechanism 中包含 BasicAuth 和 BasicAuthRequireTLS,但 AUTH LOGIN(BasicAuth)通常只会在 STARTTLS 之后被公布,以确保安全(避免明文密码)。如果在初始 EHLO 中立即公布,则表示 BasicAuth 在未强制要求 TLS 的情况下启用,这是不安全且不推荐的,因为它会使凭据暴露于窃听风险。安全配置中通常会先显示 NTLM(来自 Integrated)。

    要在端口 25 的初始 EHLO 中强制显示 250-AUTH LOGIN(即启用 BasicAuth 且不强制 TLS):

    运行以下 PowerShell 命令(将 <ServerName> 替换为你的实际服务器名称):

    Set-ReceiveConnector -Identity "<ServerName>\Default Frontend <ServerName>" -AuthMechanism Tls,BasicAuth,Integrated,ExchangeServer
    

    这会添加 BasicAuth(用于 AUTH LOGIN),同时移除 BasicAuthRequireTLS(该参数用于强制 BasicAuth 必须通过 TLS)。

    默认的 AuthMechanism 包含:Tls、BasicAuth、BasicAuthRequireTLS、ExchangeServer、Integrated, 请根据需要进行调整,但避免明文暴露 BasicAuth。

    重新启动 Microsoft Exchange Transport 服务:

    Restart-Service MSExchangeTransport
    

    从远程主机使用 Telnet 进行测试: telnet <ServerFQDN> 25 EHLO test.com

    在响应中查找 250-AUTH LOGIN。

    注意:在端口 25 上启用纯 BasicAuth 存在安全风险。建议保留 BasicAuthRequireTLS,并指导客户端先使用 STARTTLS。

    在端口 587 的 EHLO 响应中设置 STARTTLS

    端口 587 用于客户端提交,如果 AuthMechanism 中包含 Tls 且已绑定有效证书,默认会公布 250-STARTTLS。

    如果未公布,可能是因为:

    连接器缺少 Tls, 启用了 ExternalAuthoritative(常见于配置错误的中继,这会禁用 STARTTLS), 或缺少证书。

    确保端口 587 上显示 250-STARTTLS:

    确认或设置 AuthMechanism 以包含 Tls(将 <ServerName> 替换为实际服务器名称):

    Set-ReceiveConnector -Identity "<ServerName>\Client Frontend <ServerName>" -AuthMechanism Tls,BasicAuth,BasicAuthRequireTLS,Integrated
    

    这是默认设置, 确保未启用 ExternalAuthoritative(如果存在,请移除,因为它会为受信任的中继禁用 STARTTLS)。

    绑定有效的 TLS 证书(必须与服务器的 FQDN 匹配,并启用 SMTP):

    首先,获取你的证书指纹(Thumbprint):

    Get-ExchangeCertificate | Format-List Thumbprint, Services, Subject
    

    然后进行设置(将 <Thumbprint> 替换为实际证书指纹):

    $TLSCert = Get-ExchangeCertificate -Thumbprint <Thumbprint>
    $$ TLSCertName = "<I> $$($$ TLSCert.Issuer)<S> $$($TLSCert.Subject)"
    Set-ReceiveConnector -Identity "<ServerName>\Client Frontend <ServerName>" -TlsCertificateName $TLSCertName
    

    然后重复之前的步骤:重新启动传输服务,并使用 Telnet 进行测试,查看响应中是否包含 250-STARTTLS。

    如果问题仍然存在,请在连接器上启用协议日志(Set-ReceiveConnector -ProtocolLoggingLevel Verbose),并在以下路径查看日志以获取线索:

    C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\ProtocolLog\SmtpReceive

    如果连接器已被自定义,请使用 Microsoft 文档中的脚本重新创建默认配置,或通过导出/导入配置在服务器之间进行比较。对于生产环境,请先在实验室中测试更改。

    希望这些信息对你有所帮助。

    请理解,我们的初步回复可能无法立即解决问题。但只要您提供更多详细信息,我们将能够与您一起找到解决方案。


    如果答案对您有帮助,请点击「接受答案」并按赞。如果您对此答案还有其他疑问,请点击「评论」。   

    注意: 如果您希望收到此討論串的相關電子郵件通知,請依照我們的文件步驟啟用電子郵件通知。

    此答案是否有帮助?

    2 个人认为此答案很有帮助。

你的答案

提问者可以将答案标记为“已接受”,审查方可以将答案标记为“已推荐”,这有助于用户了解答案是否解决了提问者的问题。