在 Exchange Online 中启用或禁用经过身份验证的客户端 SMTP 提交 (SMTP 身份验证)

重要

从 2022 年 12 月起,经典 Exchange 管理员 中心将在全球客户中弃用。 Microsoft 建议使用新的 Exchange 管理员中心(如果尚未这样做)。

虽然大多数功能已迁移到新的 EAC,但某些功能已迁移到其他管理中心,其余功能将很快迁移到新 EAC。 在“其他功能”中找到新 EAC 中尚不存在的功能,或使用全局搜索来帮助你在新 EAC 中导航。

SMTP 客户端电子邮件提交 (也称为经过身份验证的 SMTP 提交SMTP 身份验证) 在 Office 365 和 Microsoft 365 的以下方案中使用:

  • POP3 和 IMAP4 客户端。 这些协议仅允许客户端接收电子邮件,因此它们需要使用经过身份验证的 SMTP 发送电子邮件。
  • 生成和发送电子邮件的应用程序、报表服务器和多功能设备。

SMTP 身份验证协议用于 SMTP 客户端电子邮件提交,通常在 TCP 端口 587 上。 除了基本身份验证之外,SMTP AUTH 还支持新式身份验证 (新式身份验证通过 OAuth) 。 有关详细信息,请参阅 使用 OAuth 对 IMAP、POP 或 SMTP 连接进行身份验证

几乎所有连接到 Office 365 或 Microsoft 365 中Exchange Online邮箱的新式电子邮件客户端 (例如 Outlook、Outlook 网页版、iOS 邮件、Outlook for iOS 和 Android 等) 不使用 SMTP AUTH 发送电子邮件。

因此,强烈建议在Exchange Online组织中禁用 SMTP AUTH,并仅针对仍需要它的邮箱) (帐户启用它。 有两个设置可以帮助你执行此操作:

  • 用于禁用 (或启用) SMTP 身份验证的组织范围设置。
  • 覆盖租户范围的设置的每个邮箱设置。

请注意,这些设置仅适用于托管在 Exchange Online (Office 365 或 Microsoft 365) 中的邮箱。

注意

在组织中禁用 SMTP 身份验证

可以在新的 EAC 中全局为组织禁用 (或启用) SMTP AUTH,也可以使用 Exchange Online PowerShell

若要在新的 EAC 中全局禁用组织中的 SMTP AUTH,请转到“设置”下的“邮件流设置”页,并切换标记为“关闭组织的 SMTP AUTH 协议”的设置

若要使用 PowerShell 在组织中全局禁用 SMTP 身份验证,请运行以下命令:

Set-TransportConfig -SmtpClientAuthenticationDisabled $true

注意:若要启用 SMTP 身份验证(如果已禁用),请使用值 $false

你如何知道此过程的工作原理?

若要验证是否已在组织中全局禁用 SMTP AUTH,请运行以下命令并验证 SmtpClientAuthenticationDisabled 属性的值是否为 True

Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled

为特定邮箱启用 SMTP 身份验证

Microsoft 365 管理中心或 powerShell Exchange Online中提供了用于启用 (或禁用) SMTP AUTH 的每个邮箱设置。

使用Microsoft 365 管理中心在特定邮箱上启用或禁用 SMTP 身份验证

  1. 打开Microsoft 365 管理中心并转到“用户>活动用户”。

  2. 选择该用户,然后在出现的浮出控件中,单击“ 邮件”。

  3. “Email应用”部分中,单击“管理电子邮件应用”。

  4. 验证 “经过身份验证的 SMTP ”设置:unchecked = disabled,checked = enabled。

  5. 完成后,单击“保存更改”。

使用 Exchange Online PowerShell 在特定邮箱上启用或禁用 SMTP 身份验证

使用以下语法:

Set-CASMailbox -Identity <MailboxIdentity> -SmtpClientAuthenticationDisabled <$true | $false | $null>

$null 指示邮箱的设置由组织的全局设置控制。 使用 $true (禁用) 或 $false 启用 (的值) 来替代 组织设置。 邮箱设置优先于组织设置。

本示例为邮箱 sean@contoso.com启用 SMTP AUTH。

Set-CASMailbox -Identity sean@contoso.com -SmtpClientAuthenticationDisabled $false

此示例禁用邮箱 chris@contoso.com的 SMTP AUTH。

Set-CASMailbox -Identity chris@contoso.com -SmtpClientAuthenticationDisabled $true

使用 Exchange Online PowerShell 在多个邮箱上启用或禁用 SMTP AUTH

使用文本文件标识邮箱。 不包含空格 (的值,例如别名、电子邮件地址或帐户名) 效果最佳。 文本文件的每一行上必须包含一个邮箱,如下所示:

akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com

语法使用以下两个命令 (一个用于标识邮箱,另一个用于为这些邮箱启用 SMTP AUTH) :

$<VariableName> = Get-Content "<text file>"
$<VariableName> | foreach {Set-CASMailbox -Identity $_ -SmtpClientAuthenticationDisabled <$true | $false | $null>}

本示例为文件 C:\My Documents\Allow SMTP AUTH.txt 中指定的邮箱启用 SMTP AUTH。

$Allow = Get-Content "C:\My Documents\Allow SMTP AUTH.txt"
$Allow | foreach {Set-CASMailbox -Identity $_ -SmtpClientAuthenticationDisabled $false}

注意

若要禁用邮箱的 SMTP 身份验证,请使用值 $true。 若要将控制权返回到组织设置,请使用 值 $null

如何知道操作成功?

若要验证是否已为特定邮箱启用或禁用 SMTP AUTH,请执行以下步骤:

  • Microsoft 365 管理中心中的单个邮箱:转到“用户>”“活动用户>”,选择用户>单击“邮件>”单击“管理电子邮件应用”,并验证“经过身份验证的 SMTP (选中 = 启用、取消选中 = 禁用) 的值。

  • Exchange Online PowerShell 中的单个邮箱:将 替换为<MailboxIdentity>邮箱的名称、别名、电子邮件地址或帐户名称;运行以下命令;并验证 smtpClientAuthenticationDisabled 属性的值 (False = enabled, True = disabled,blank = use organization setting) 。

    Get-CASMailbox -Identity <MailboxIdentity>  | Format-List SmtpClientAuthenticationDisabled
    
  • 禁用 SMTP AUTH 的所有邮箱:运行以下命令:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $true}
    
  • 启用 SMTP AUTH 的所有邮箱:运行以下命令:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $false}
    
  • SMTP 身份验证由组织设置控制的所有邮箱:运行以下命令:

    $Users = Get-CASMailbox -ResultSize unlimited
    $Users | where {$_.SmtpClientAuthenticationDisabled -eq $null}