为自己的域名配置 Microsoft 365 邮件服务
使用 Microsoft 365 订阅来搭建自定义域名邮箱,配置好域名邮箱之后,就可以使用自己域名后缀的邮箱来发送邮件了
教程同样适用于 Microsoft 365 开发者订阅,也就是 E5
0x01 准备
- Microsoft 工作或学校账户(需要全局管理员权限)
- 一个域名(需要能修改 DNS 记录)
0x02 绑定域名
- 先打开 Microsoft 365 后台 - 设置 - 域,点击
添加域
,输入域名并进行验证
按照 Microsoft 后台的说明添加验证记录
不同 Microsoft 账号记录值不同,注意修改主机名 类型 值 优先级 TTL @
TXT MS=msXXXXXXXX
1
天(86400
秒) - 接下来,Microsoft 后台会提示你添加 DNS 记录,我们需要先勾选上 Exchange 和 Exchange Online Protection,然后按照网页说明再添加一波
不同 Microsoft 账号 MX 记录值不同,注意修改主机名 类型 值 优先级 TTL @
MX mbr-moe.mail.protection.outlook.com
0
1
天(86400
秒)@
SPF 或 TXT v=spf1 include:spf.protection.outlook.com -all
1
天(86400
秒)autodiscover
CNAME 或 ALIAS autodiscover.outlook.com
1
天(86400
秒)
MX 记录用于声明往你的域名发送的邮件应该发给 Microsoft 的服务器,SPF 记录用来证明“以你域名的身份发送的邮件 是你信任的服务器发出的”,最后一条 CNAME 记录是部分电子邮件客户端自动配置时使用的
0x03 为账户绑定邮箱
- 打开 Microsoft 365 后台 - 用户 - 活跃用户
- 为所有需要使用邮件服务的用户执行下面的操作:
- 找到用户名右侧的修改密码(钥匙)按键,右边有三个点,点击那三个点(
更多操作
) - 点击
管理用户名和电子邮件
主电子邮件地址和用户名
改为你想要的默认收发邮箱,修改完需要重新登录- 如果需要多个收发邮箱,就在下面继续添加
注 1:其他收发邮箱(默认邮箱以外的绑定邮箱,下文简称 ALIAS)大多数邮件客户端都不能直接发信(发件人列表只有默认邮箱),但 ALIAS 其实是可以 SMTP 的(登录凭据写默认邮箱,
From:
指定 ALIAS 即可);注 2:Microsoft 365 组织内人员互相发送邮件,即使你使用 ALIAS,对方收件时会显示发件人为你的默认邮箱,如果你发给组织内成员的 ALIAS,对方邮件客户端会显示自己的主邮箱收到邮件(组织内 你:ALIAS > ALIAS 收件人: 主 > 主);组织外其他人(指不使用你域名的邮箱,例如 Gmail 用户)向你的 ALIAS 发送邮件,你的客户端会显示是主邮箱收到邮件(组织外 发件人: 对方 > ALIAS 你: 对方 > 主);你通过 SMTP 使用 ALIAS 给组织外其他人发送邮件,对方客户端会显示你的 ALIAS 发信(组织外 你:ALIAS > 对方 收件人: ALIAS > 对方);抄送也适用于以上规则,当作收件人就好
- 找到用户名右侧的修改密码(钥匙)按键,右边有三个点,点击那三个点(
0x04 配置 DKIM 签名
DKIM 是一种验证邮件是否由你发送的方法,它依赖于公钥加密来验证而不仅仅是 IP 地址,所以 DKIM 被认为是比 SPF 更强大的验证形式。配置 DKIM 签名可增强安全性,并防止邮件误判进入垃圾箱
SPF 失败后,DKIM 成功,邮件仍能正常传递
- 打开 Microsoft 365 Defender - DKIM
- 点击你的域名
- 点击
创建 DKIM 密钥
- 打开上方开关,添加 DNS 记录
记录值包含了组织注册时的邮箱(不可更改)以及你的域名主机名 类型 值 优先级 TTL selector1._domainkey
CNAME selector1-mbr-moe._domainkey.mbrstudio.onmicrosoft.com 86400 selector2._domainkey
CNAME selector2-mbr-moe._domainkey.mbrstudio.onmicrosoft.com 86400 注 3:组织内人员互相发送邮件,邮件不会被 DKIM 签名
0x05 配置 DMARC
DMARC 也是一种验证邮件的方法,在配置 DMARC 之前,建议先配置好 SPF 和 DKIM
配置 DMARC 也需要添加一条 DNS TXT 记录,这个记录你可以使用生成器产生,也可以手写,以下是我的邮箱域名 mbr.moe 的 DMARC 记录
主机名 | 类型 | 值 | 优先级 | TTL |
---|---|---|---|---|
_dmarc | TXT | v=DMARC1; p=reject; sp=reject; pct=100; ruf=mailto:dmarc@mbr.moe; rua=mailto:dmarc@mbr.moe; fo=0:1:d:s; rf=afrf; ri=604800; aspf=s; adkim=s | 86400 |
DMARC 的参数和注意事项可以看 Cymetrics Tech Blog 的一篇文章: 關於 email security 的大小事 — 設定篇 DKIM、DMARC
0x06 收信配置
配置好邮箱服务器基本设置后,接下来看看如何收信
Microsoft 365 邮件服务支持了常见的邮件协议,比如 IMAP、POP 和 Exchange ActiveSync(EAS),也可以使用 Outlook 网页版登录
IMAP/POP3
先来讲一下 IMAP/POP3 协议的登陆方法
使用 IMAP/POP3 登陆时,邮件客户端一般需要你指定服务器和一些其他信息,在你的邮件客户端上填入以下信息即可:
- 用户名:填写你的默认邮箱
- 密码:填写你 Microsoft 账户的密码
- 服务器:
outlook.office365.com
- 端口号:IMAP
993
POP995
- 需要 SSL/TLS
- SMTP 配置:详见 SMTP 发信配置
配置好这些信息后保存,就可以正常收信了
EAS
使用 EAS 登录邮箱不会很复杂,登陆时输入用户名和密码验证即可,输入完成后,你的邮件客户端还会打开一个网页,提示你进行授权,而且使用 EAS 登陆是可以使用 2FA 验证的,也许可以提高一些账户安全性
Outlook 网页版
登录这个网址即可 https://outlook.office365.com/mail/
0x07 发信配置
除了收信,发信也是很重要的,Microsoft 365 支持使用 SMTP、EAS 或者 Outlook 网页版发信
SMTP
SMTP 配置可能有些复杂,因为 Microsoft 账户默认是不允许发信的,需要先给账号开启 SMTP 功能,还需要关闭安全默认值
- 打开 Microsoft 365 后台 - 用户 - 活跃用户
- 为所有需要使用邮件服务的用户执行下面的操作:
- 点击用户的显示名称
- 点击
邮件
- 点击
管理电子邮件应用
- 勾上
SMTP
,保存
- 打开 Azure Active Directory Legacy
- 点击
属性
(Properties
)-管理安全默认值
(Manage security defaults
) - 禁用安全默认值,保存
- 点击
然后就可以用 SMTP 发信了,SMTP 发信信息填写:
- 用户名:填写你的默认邮箱
From:
标头:可以是默认邮箱,也可以是 ALIAS- 部分客户端无法指定 From 标头
- 密码:填写你 Microsoft 账户的密码
- 服务器:
smtp.office365.com
- 端口号:
587
- 需要 STARTTLS
EAS(Sending)
EAS 同时支持发信和收信,因此不需要额外配置,配置好收信就可以了
EAS 发信,From:
标头默认是你 Microsoft 账户的名字
Outlook 网页版(sending)
同样不需要额外配置,配置好收信就可以了
0x08 功能设置
邮箱的部分功能(例如发件人白名单)需要进入 Outlook 网页版配置,建议用电脑登录然后过一遍全部设置,看看有没有要改的
0x09 常见错误
列举一些常见的配置错误
E535
完整错误是 535 5.7.139 Authentication unsuccessful, SmtpClientAuthentication is disabled for the Tenant. Visit https://aka.ms/smtp_auth_disabled for more information.
账号没有开启 SMTP,再看一遍发信配置教程
E554
完整错误是 554 5.2.252 SendAsDenied; neko@mbr.moe not allowed to send as MAILER-DAEMON@PVE.MBR
没有配置 From:
标头或者配置错误,Linux 容易出现此错误(未配置发件邮箱,直接使用了 root@localhost.localdomain 这样的邮箱)
配置发件人即可,Linux Postfix 可以按下面方法配置:
/etc/postfix/main.cf
1 |
|
/etc/postfix/headers
1 |
|
然后在 /etc/postfix/headers
里面设置发件人信息就好,配置完成后,所有发出的邮件 From:
都会改写为你配置的邮箱
0x0A 测试
配置好之后就可以测试收发了:
正常发送邮件