FAQ

常见问题

这里汇集了安装 Missivus 前后大家真正会问的问题,覆盖产品家族里的每个平台。更深的技术细节在各产品 GitHub 上的文档里;这里是诚实的简版。

Missivus 支持哪些平台?

四个,全都搭载同一套内置的 Graph 传输层。Matomo 版 Missivus(已可用)挂接 Piwik\Mail,因此密码重置、计划报表和告警都经由 Graph——体积过大的报表 PDF 会自动走分块上传路径。WordPress 版 Missivus(已可用)通过 WordPress 自带的 pre_wp_mail 钩子接管 wp_mail()——订单确认和表单通知同样包含在内。Nextcloud 版 Missivus(已可用)替换系统邮件组件,覆盖核心邮件以及每一个使用 Nextcloud 邮件组件的应用。Ghost 版 Missivus(已可用)是面向 Ghost 事务性邮件的 SMTP 转 Graph 适配层——员工邀请、密码重置、会员登录链接;新闻通讯仍旧交给您的新闻通讯服务。

共享邮箱需要 Microsoft 365 许可证吗?

不需要。Exchange Online 共享邮箱在 50 GB 以内免费,也无需为它分配许可证——这正是关键所在。Missivus 是以应用程序的身份认证,不是以邮箱的身份,所以没有人以它登录,也不用为它付一分钱。只有当您把它转成用户邮箱、为它启用诉讼保留或给它加上存档时,才会需要许可证。

为什么不直接用 SMTP?我的平台本来就支持。

因为 Microsoft 正在淘汰它。其他所有基本身份验证协议已在 2022 年关闭;SMTP AUTH 基本身份验证在 2026 年 12 月之前保持不变,2026 年 12 月底对现有租户默认禁用,此后新建租户默认不可用,最终移除日期将在 2027 年下半年公布。留下来的是带 OAuth2 的 SMTP AUTH,而这些平台的邮件路径都不支持它;另一条则是许多租户早已封禁的旧式流程,它还会把一个有许可证用户的密码变成服务器上的共享凭据。带应用程序权限的 Graph 没有这些毛病——没有密码、没有用户、没有许可证,凭据还被 Exchange 限定在一个邮箱上。

有哪些 Microsoft 发送限制需要注意?

有——Exchange Online 的标准发送限制同样适用,而且以应用身份通过 Graph 发出的邮件,会计入它所使用的那个共享邮箱。按 Microsoft 当前的限制页面:每个邮箱每 24 小时 10,000 个收件人,每分钟 30 封邮件,单封邮件默认最多 500 个收件人(管理员可以提高到 1,000)。对于密码重置、报表和通知来说,这些上限基本感觉不到。这里也把话说明白:Missivus 承载的是事务性邮件,不是新闻通讯——如果您需要批量或营销发送,请用批量邮件服务,而不是共享邮箱。

客户端密码还是证书——该用哪个?

先用客户端密码——在 Entra 里点两下,文件系统上什么都不用放,指南记录的也是这条路。证书更强,因为凭据永远不会出现在请求体里;如果您的安全策略要求,那就值得。两者在每个平台上都已完整实现,随时可以在设置页面切换。

客户端密码怎么轮换?

在 Entra 里创建新密码——旧密码在到期前一直有效,所以没有停机窗口。复制新的“值”(不是密码 ID),粘贴进 Missivus 的设置,保存,发一封测试邮件,然后删掉旧密码。Missivus 只会短暂缓存访问令牌,从不缓存密码,所以什么都不用重启。

超过 3 MB 的附件会怎么样?

照发不误。Graph 把内联附件限制在大约 3 MB,超过这个大小时 Missivus 会自动切换到 Graph 的分块上传路径——创建草稿、分块上传、发送。这个判断是逐封邮件、依据大小做出的,在每个平台上都一样。这里刻意没有任何设置项——计划报表的 PDF 绝不能因为体积就发不出去。

为什么指南除了 Mail.Send 还要 Mail.ReadWrite?

只为那条大附件路径——创建草稿和打开上传会话并不在 Mail.Send 的覆盖范围内。如果您从不发送超过 3 MB 的附件,只有 Mail.Send 也够用;哪天真的用上了,失败会明确报出并指出缺少的权限。两个权限都受同一条访问策略约束,因此 Mail.ReadWrite 也不会带来那个共享邮箱之外的任何访问权。

应用程序访问策略真的有必要吗?

有必要——请把它当作安装的一部分,而不是可选的加固。没有它,作为应用程序权限的 Mail.Send 会让应用能以租户内任意邮箱的身份发信。这条策略把范围收窄到一个。指南里附有验证命令,并要求您在第二个测试返回 Denied 之前不要继续。

如果我装上 Missivus 却什么都不做,会把邮件弄坏吗?

不会,在任何平台上都不会。每个 Missivus 产品出厂都是关闭状态——安装并启用它本身不会改变任何行为,直到您在设置里明确开启 Graph 发送。停用后会恢复平台自带的传输方式,没有任何需要清理的残留。回退到平台自带邮件路径的选项同样默认关闭——一次看得见的失败胜过一封悄悄消失的邮件。

Microsoft 给了我一个 AADSTS 错误码,它是什么意思?

常见的几个——AADSTS7000215 表示密码不对,几乎总是因为复制了密码 ID 而不是“值”。AADSTS900023 是租户 ID 写错了。ErrorAccessDenied 表示访问策略没有覆盖这个邮箱,或者压根没有授予管理员同意。各产品的安装指南里都有完整的对照表和修复方法——而且机密在写进日志之前已被脱敏,所以这些错误可以放心贴进 issue。

我的 Matomo 跑在 Docker 里,没法把文件放进 plugins/。能上传 zip 吗?

可以,只需临时改一个设置——enable_plugin_upload。它默认关闭,因为它允许任何超级用户上传由 Matomo 执行的 PHP 代码,所以指南会带着您把它打开、上传、启用,并且——这一点很重要——随即把它关回去。在 WordPress 和 Nextcloud 上,走常规的插件/应用上传流程即可,不需要任何特别处理。

它和其他会发邮件的插件、应用兼容吗?

只要是通过平台邮件层发送的,都会经过 Missivus——在 Matomo 上是 Piwik\Mail,在 WordPress 上是 wp_mail(),在 Nextcloud 上是核心与各应用共用的系统邮件组件。如果某个插件自己开一条 SMTP 连接,它就绕过了平台的邮件层,Missivus 不会碰它。

需要更深入的内容?

安装指南、安全审查报告和问题追踪,都在各产品自己的代码仓库里。

GitHub 上的 Missivus 代码仓库