使用 Microsoft 365 订阅来搭建自定义域名邮箱,配置好域名邮箱之后,就可以使用自己域名后缀的邮箱来发送邮件了
教程同样适用于 Microsoft 365 开发者订阅,也就是 E5


0x01 准备

  • Microsoft 工作或学校账户(需要全局管理员权限)
  • 一个域名(需要能修改 DNS 记录)

0x02 绑定域名

  • 先打开 Microsoft 365 后台 - 设置 - 域,点击添加域,输入域名并进行验证
    按照 Microsoft 后台的说明添加验证记录
    主机名类型优先级TTL
    @TXTMS=msXXXXXXXX1 天(86400 秒)
    不同 Microsoft 账号记录值不同,注意修改
  • 接下来,Microsoft 后台会提示你添加 DNS 记录,我们需要先勾选上 Exchange 和 Exchange Online Protection,然后按照网页说明再添加一波
    主机名类型优先级TTL
    @MXmbr-moe.mail.protection.outlook.com01 天(86400 秒)
    @SPF 或 TXTv=spf1 include:spf.protection.outlook.com -all1 天(86400 秒)
    autodiscoverCNAME 或 ALIASautodiscover.outlook.com1 天(86400 秒)
    不同 Microsoft 账号 MX 记录值不同,注意修改
    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 签名可增强安全性,并防止邮件误判进入垃圾箱

DKIM
SPF 失败后,DKIM 成功,邮件仍能正常传递

  • 打开 Microsoft 365 Defender - DKIM
  • 点击你的域名
  • 点击 创建 DKIM 密钥
  • 打开上方开关,添加 DNS 记录
    主机名类型优先级TTL
    selector1._domainkeyCNAMEselector1-mbr-moe._domainkey.mbrstudio.onmicrosoft.com86400
    selector2._domainkeyCNAMEselector2-mbr-moe._domainkey.mbrstudio.onmicrosoft.com86400
    记录值包含了组织注册时的邮箱(不可更改)以及你的域名
  • 注 3:组织内人员互相发送邮件,邮件不会被 DKIM 签名

0x05 配置 DMARC

DMARC 也是一种验证邮件的方法,在配置 DMARC 之前,建议先配置好 SPF 和 DKIM

配置 DMARC 也需要添加一条 DNS TXT 记录,这个记录你可以使用生成器产生,也可以手写,以下是我的邮箱域名 mbr.moe 的 DMARC 记录

主机名类型优先级TTL
_dmarcTXTv=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=s86400

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 POP 995
  • 需要 SSL/TLS
  • SMTP 配置:详见 SMTP 发信配置

配置好这些信息后保存,就可以正常收信了

EAS

使用 EAS 登录邮箱不会很复杂,登陆时输入用户名和密码验证即可,输入完成后,你的邮件客户端还会打开一个网页,提示你进行授权,而且使用 EAS 登陆是可以使用 2FA 验证的,也许可以提高一些账户安全性

Outlook 网页版

登录这个网址即可 https://outlook.office365.com/mail/

0x07 发信配置

除了收信,发信也是很重要的,Microsoft 365 支持使用 SMTP、EAS 或者 Outlook 网页版发信

SMTP

SMTP 配置可能有些复杂,因为 Microsoft 账户默认是不允许发信的,需要先给账号开启 SMTP 功能,还需要关闭安全默认值

然后就可以用 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
smtp_header_checks = pcre:/etc/postfix/headers

/etc/postfix/headers

1
/^From:.*/ REPLACE From: MBRjun Device Notifications <noreply-devices@mbr.moe>

然后在 /etc/postfix/headers 里面设置发件人信息就好,配置完成后,所有发出的邮件 From: 都会改写为你配置的邮箱

0x0A 测试

配置好之后就可以测试收发了:


正常发送邮件