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

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 AUTH 的帐户 (邮箱) 启用它。 有两个设置可以帮助你执行此操作:

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

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

注意

  • 如果组织中启用了安全默认值,则 SMTP AUTH 已在 Exchange Online 中禁用。 若要使用 SMTP 身份验证,需要禁用 安全默认值。 有关详细信息,请参阅 Microsoft Entra ID 中的安全默认值
  • 如果身份验证策略禁用 SMTP 的基本身份验证,则即使启用本文中所述的设置,客户端也无法使用 SMTP AUTH 协议。 有关详细信息,请参阅在 Exchange Online 中禁用基本身份验证

在组织中禁用 SMTP 身份验证

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

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

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

Set-TransportConfig -SmtpClientAuthenticationDisabled $true

注意

若要启用 SMTP AUTH(如果已禁用),请使用值 $false

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

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

Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled

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

用于启用 (或禁用) SMTP AUTH 的每个邮箱设置在 Microsoft 365 管理中心 或 Exchange Online PowerShell 中可用。

使用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 身份验证。

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 AUTH,请使用值 $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}