温馨提示:本文最后更新于 2021年2月10日 一些文章具有时效性,如有错误或已失效,请在下方为我 留言 或者直接 联系

浅谈 Microsoft Exchange 设置 SMTP 的一些问题

因为博客改用了 WordPress 所以自然评论邮件通知也是必须有了,之前因为使用 Hexo 博客,没有方便的办法设置评论系统的邮件提醒,实际上还是造成了不少的麻烦就是了(毕竟不能立即知道大家给我的留言了)

这一篇我的话还是主要介绍如何配置 Exchange 来方便使用 SMTP 如果有需要我也会写一篇关于如何配置 WordPress 邮件系统的方法以及一个简单插件 Easy WP SMTP 的介绍
注意本教程适用于 Exchange Online PowerShell 不适用于 Exchange Online PowerShell V2
Exchange Online PowerShell 下载

首先还是总结一下会遇到的注意点:

1.使用 SMTP 的账号不能有两步验证,否则会造成客户端无法验证

2.Azure Active Directory 不能使用安全默认值(这种安全默认值是禁止使用 SMTP 的)

3.必须使用 Exchange Online PowerShell 为特定邮箱启动 SMTP (不为整个组织启动是为了防止滥用)

4.你必须是你的租户的全局管理员或者 Exchange 管理员,否则请联系管理员操作(这个是重点,迫真

如果没有正确配置 SMTP 则会出现以下错误

CLIENT -> SERVER: EHLO domain.com
CLIENT -> SERVER: STARTTLS
CLIENT -> SERVER: EHLO domain.com
CLIENT -> SERVER: AUTH LOGIN
CLIENT -> SERVER: bm8tcmVwbHlAbG9saWxvbGkubW9l
CLIENT -> SERVER: TG9saWxvbGkyNjI5MjA=
SMTP ERROR: Password command failed: 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Mailbox. Visit aka.ms/smtp_auth_disabled for more info. [SN7PR04CA0190.namprd04.prod.outlook.com]
SMTP Error: Could not authenticate.CLIENT -> SERVER: QUIT
SMTP Error: Could not authenticate.

参考资料链接:

微软 Exchange 文档:https://docs.microsoft.com/zh-cn/exchange/

创建一个合适的账号用于 SMTP 发送通知

创建用户这一步可以在 Azure Active DirectoryMicrosoft 365 admin center 完成

Azure Active Directory 操作方法

完成用户创建,先点击用户,然后点击所有用户并且新建用户(如下图)

为了保证 Exchange 可用,必须为用户分配拥有 Exchange 订阅的许可

这里我们会到选卡点击许可证,进入后选择所有产品,点击任意含有 Exchange 的订阅则将会进入如下界面,点击许可用户并且分配即可

含有 Exchange 订阅的主要订阅类型

教育类:OA 系列全部产品,除去 MA1 系列以外的全部 MA 系列产品

商业类:E 系列全部(不含 E4 )商业应用版、企业应用版等

Microsoft 365 admin center 操作方法(建议)

Microsoft 365 admin center 操作相对简单且单一,建议使用该方案

如下图引导选择进入用户创建界面

填写信息

分配许可

选择完成创建


以上就是用户创建方法

关闭租户安全默认值

这里只能通过 Azure Active Directory 完成,因此将会按照步骤给出图示


如上进入属性,点击管理安全默认值选择否即可

到目前为止,前置设置已经完成

使用 Exchange Online PowerShell 启动 SMTP

这里操作之前请注意先登录一下创建的账号,保证 Outlook 可以进入,且可以使用

首先下载 Exchange Online PowerShell 并进行按照(关于安装方面不再过多说明,和普通软件安装一样)

当你的菜单出现了如下图的软件,就代表安装无误,即可进行接下来的操作,如发生安装失败等情况请查看官方文档或者检查系统完整性。

单击打开并且登录

Connect-EXOPSSession -UserPrincipalName <admin@domain>

这里完成登录后,我们可以查看组织是否禁用 SMTP 使用如下指令

Get-TransportConfig | Format-List SmtpClientAuthenticationDisabled

如果返回值为 True 则组织 SMTP 已经禁用,如下图

这里我们可以通过指令开启组织 SMTP 功能

Set-TransportConfig -SmtpClientAuthenticationDisabled $false

当然我们仅需开放某一个用户的 SMTP 权限即可,因此如下操作

Set-CASMailbox -Identity <MailboxIdentity> -SmtpClientAuthenticationDisabled $false

解释一下,这里存在 <$true | $false | $null> 三个参数 $true 代表启动 SmtpClientAuthenticationDisabled 即禁止 SMTP 的使用 $false 则是启动 SMTP, $null 代表使用组织默认值,则和上面的操作有关

使用如下指令即可验证是否开启 SMTP

Get-CASMailbox -Identity <MailboxIdentity>  | Format-List SmtpClientAuthenticationDisabled

如下图显示 False 则代表 SMTP 权限正常

那么接下来我们可以为需要 SMTP 的客户端完成剩下的设置了

Microsoft Exchange 相关配置

SMTP 服务器:smtp.office365.com

加密类型: STARTTLS

SMTP 端口:587

SMTP用户名:<MailboxIdentity>

SMTP密码:<Password>