Stalwart VPS 邮件服务器:能替代 Postfix 和 Dovecot 吗
了解 Stalwart v0.16.19 的单一 Rust 二进制文件能替代哪些 Postfix、Dovecot 和 Rspamd 组件,哪些问题仍需自行解决,以及何时应选择 mailcow。
Stalwart 将哪些组件合并为一个二进制文件
Stalwart 是一款邮件服务器。您可以在一台 VPS 上以单个 Rust 二进制文件运行它。它在同一个进程中提供 SMTP、IMAP、POP3、JMAP、CalDAV、CardDAV 和 WebDAV,并内置垃圾邮件过滤器、邮件存储和 ACME 客户端。传统架构需要使用 Postfix、Dovecot、Rspamd、用于存储账户的数据库,以及单独的证书工具来完成相同的工作。Stalwart 将这些组件全部替换为一个服务单元和一个配置文件,位于 /etc/stalwart/config.json。
以下每个数据、设置名称和命令均引自 Stalwart 自己的文档、发布页面和安装脚本。内容读取日期为 28 August 2026,对应版本 v0.16.19(published 24 August 2026)。这些命令需要您在自己的服务器上执行。每条命令后面都列出了用于确认执行是否成功的检查方法。
Stalwart 采用 GNU Affero General Public License v3.0 (AGPL-3.0) 和 Stalwart Enterprise License v2 双重许可。部分功能仅供企业版使用。官方记录的 HTTP 端点列表将 /scim/v2/* 标记为企业版功能。如果您尚未亲自运行某项功能,请先阅读许可条款,再决定是否围绕该功能规划部署。
单个二进制文件确实减少了组件数量。但它不会减少决定邮件能否送达的两个关键因素。
25 端口和 DNS 信誉与您运行的软件无关
出站 TCP 25 端口是第一道关卡。许多 VPS 提供商默认会在新账户上阻止该端口。25 端口被阻止后,服务器只能与自身通信,无法连接任何其他主机。请在安装任何软件前先测试。
sudo apt update && sudo apt install -y netcat-openbsd
nc -vz -w 5 alt1.aspmx.l.google.com 25正常结果会在约 1 秒内输出 Connection to alt1.aspmx.l.google.com ... 25 port [tcp/smtp] succeeded!。被阻止的端口会持续等待完整的 5 秒,然后输出 nc: connect to alt1.aspmx.l.google.com port 25 (tcp) failed: Connection timed out,因为数据包在上游被丢弃,没有任何设备向您返回重置响应。如果看到这种结果,请联系提供商提交工单。没有任何邮件服务器可以绕过被丢弃的数据包。
第二道关卡是接收网络如何评价您的 IP 地址和域名。这包括 IP 的反向 DNS、SPF、DKIM、DMARC,以及您所使用地址段的发送历史。Stalwart 的 DNS 设置页面明确说明了这项工作的归属:反向 DNS 记录“通常由托管提供商配置,而不是由 Stalwart 自身配置”。该类别中的其他配置也一样。它们存在于您的 DNS 区域和提供商的控制面板中,而不在邮件服务器中。
因此,本页面不再重复介绍这些记录。我们已有一篇专门说明这些内容的文章:为所有发送邮件的服务一次性配置 SPF、DKIM 和 DMARC。如果您还没有决定是否运行自建邮件服务,请先阅读我们对自建电子邮件是否仍然值得的客观分析。选择 Stalwart 不会改变上述任何条件。
运行 Stalwart 邮件服务器所需的小型 VPS 配置
Stalwart 的系统要求页面截至 2026 年 8 月 28 日显示了以下数据。空闲内存占用约为 100 MB。对于 5 到 10 个用户的小型部署,1 GB RAM 足够使用。约 5 个用户的低流量部署可运行在单个 CPU 核心上;该页面还说明:“随着并发数和活动量增加,需要更多 CPU 核心才能保持低延迟和高吞吐量。”所有服务合计的默认并发连接数上限为 8,192,并且可以配置。
该页面没有列出最低磁盘容量,因此应根据预计保留的邮件大小规划磁盘,并为存储压缩预留足够空间。
3 条出站路径必须正常工作,否则服务器会以与邮件无关的方式表现为故障。服务器会从 https://github.com/stalwartlabs/webui/releases/latest/ 获取 Web 界面资源包。它会访问 https://acme-v02.api.letsencrypt.org/directory 获取证书。它还需要通过 UDP 和 TCP 端口 53 访问 DNS,以查询 MX 记录和身份验证记录。若出口防火墙限制过严并阻断了第一条路径,邮件服务器虽然能够运行,但不会有管理界面。
安装固定版本,而不是安装“latest”
官方安装程序是一个 shell 脚本。运行前先阅读该脚本。
curl --proto '=https' --tlsv1.2 -sSf https://get.stalw.art/install.sh -o install.sh
less install.sh
sudo sh install.sh在 2026 年 8 月 28 日阅读该脚本,可以准确了解它的行为。脚本会创建 stalwart 服务帐户及其所需目录。然后从 https://github.com/stalwartlabs/stalwart/releases/latest/download 下载文件。二进制文件保存到 /usr/local/bin/stalwart,权限为 0755。配置保存到 /etc/stalwart/config.json,数据保存到 /var/lib/stalwart,日志保存到 /var/log/stalwart;这 3 个目录的权限均为 0750,所有者均为 stalwart。脚本会将环境文件写入 /etc/stalwart/stalwart.env,权限为 0640,所有者为 root:stalwart。脚本接受 1 个可选的安装前缀,以及用于 FoundationDB 构建的 --fdb 标志。它不接受版本参数。
最后一点很重要。该脚本始终获取最新版本,因此相隔 1 周构建的 2 台服务器运行的代码可能不同。安装后立即自行固定二进制文件的版本。这也是 v0.16.19 版本说明中给出的升级方式:“如果要从 v0.16.x 升级,请替换二进制文件(或运行 docker pull)。”
STALWART_TAG=v0.16.19
curl -fsSLO "https://github.com/stalwartlabs/stalwart/releases/download/${STALWART_TAG}/stalwart-x86_64-unknown-linux-gnu.tar.gz"
tar zxf stalwart-x86_64-unknown-linux-gnu.tar.gz
sudo systemctl stop stalwart
sudo install -m 0755 -o root -g root stalwart /usr/local/bin/stalwart
sudo systemctl start stalwart
systemctl is-active stalwartsystemctl is-active stalwart 应输出 active。如果输出其他内容,请阅读 journalctl -u stalwart -n 50。每个版本资源都附带匹配的 .sigstore.json 捆绑包,因此可以在安装前验证下载文件的签名。
脚本写入的 unit 以 User=stalwart 身份运行,并设置 AmbientCapabilities=CAP_NET_BIND_SERVICE。正是这项 capability 使非特权帐户能够绑定 25、443、465 和 993 端口。如果之后自行编写 unit 时省略该行,服务会在启动时失败,因为普通用户无法绑定 1024 以下的端口。
初始管理员密码的输出位置
Stalwart 以引导模式启动,并在服务日志中写入一次性的 16 字符临时密码。
sudo journalctl -u stalwart -n 200 | grep -A8 'bootstrap mode'设置向导通过 8080 端口监听明文 HTTP,因此不要暴露该端口。改用 SSH 从笔记本电脑建立隧道:
ssh -N -L 8080:127.0.0.1:8080 you@your-vps然后打开 http://127.0.0.1:8080/admin,使用 admin 登录,密码使用日志中的值。向导会要求设置服务器主机名、默认邮件域、TLS、存储、账户目录、日志记录和 DNS 处理方式。完成后重启服务,之后使用 https://<your-host>/admin。
如果密码已从日志中滚动过去,请改为设置固定密码。/etc/stalwart/stalwart.env 提供了专门用于此目的的注释配置项,其中包括 STALWART_RECOVERY_ADMIN=admin:changeme、STALWART_RECOVERY_MODE=true 和 STALWART_RECOVERY_MODE_PORT(默认值为 8080)。取消注释后重启并登录,然后再次将其注释掉。Stalwart 的加固页面建议仅在紧急情况下保留该凭据,并明确禁止使用管理员账户登录 IMAP、JMAP 或 WebDAV。
同一页面列出了应保留的监听器:25 端口用于入站 SMTP,465 端口用于隐式 TLS 的提交,993 端口用于 IMAPS,443 端口用于所有 HTTP 流量。该页面将 587、143、4190、110、995 和 8080 标记为非必要端口,并要求在设置完成后关闭 8080。
在 Docker 中使用固定标签运行
文档指定的镜像为 stalwartlabs/stalwart。截至 28 August 2026,Docker Hub 上已有 v0.16.19 标签,同时提供 -alpine 变体。与上面的二进制文件相同,应固定补丁版本,而不是使用浮动的 v0.16 标签。
services:
stalwart:
image: stalwartlabs/stalwart:v0.16.19
container_name: stalwart
restart: unless-stopped
ports:
- "25:25"
- "465:465"
- "993:993"
- "443:443"
- "127.0.0.1:8080:8080"
volumes:
- stalwart-etc:/etc/stalwart
- stalwart-data:/var/lib/stalwart
volumes:
stalwart-etc:
stalwart-data:该文件将文档中的 docker run 命令改写为 Compose 配置,移除了非必需的监听器,并将设置端口绑定到 localhost。启动它,然后读取相同的引导信息:
docker compose up -d
docker compose logs stalwart 2>&1 | grep -A8 'bootstrap mode'Docker 页面还将 -e STALWART_RECOVERY_ADMIN=admin:mySecretPass 记载为在启动时设置固定凭据的方法。如果不想读取日志,可以在 Compose 中使用 environment: 键。
文档列出的完整端口,以及此文件为何更短
Stalwart 的 Docker 页面列出了 443、8080、25、587、465、143、993、110、995 和 4190。其加固页面将 587、143、110、995 和 4190 列为非必需端口,并说明设置完成后应禁用 8080。只重新启用客户端实际需要的端口。如果某部手机要求使用 STARTTLS 提交邮件,请发布 587。如果用户从桌面客户端编写 Sieve 规则,请发布 4190。
如果您不熟悉 Compose,我们的 VPS Docker Compose 操作指南介绍了这里使用的文件布局和命名卷模型。邮件服务器尤其需要注意一点:Docker 通过写入自己的防火墙规则来发布端口,这些规则的匹配顺序早于 ufw,因此 ufw deny 8080 不会关闭由 Compose 发布的端口。在端口映射中绑定到 127.0.0.1 才能真正关闭该端口,这也是上面文件采用这种配置、SSH 隧道仍然适用的原因。
无需 certbot 的 TLS 及其代价
Stalwart 直接实现了 ACME(自动证书管理环境),因此不需要 certbot,也不需要续期钩子。文档列出了4种验证方法。HTTP-01 在端口80上响应质询请求。TLS-ALPN-01 使用 ACME 专用的 ALPN 协议,在端口443上提供专用证书。DNS-01 发布临时 TXT 记录,是可以签发通配符证书的两种方法之一。DNS-PERSIST-01 使用长期有效的授权 TXT 记录,而不是每次续期时都写入新记录。
代价是 Stalwart 需要独占端口。TLS-ALPN-01 通过自行完成 TLS 握手来工作,因此无法在为您终止 TLS 的反向代理后面成功运行。如果 nginx 或 Caddy 已经占用该主机的443端口,请改用 DNS-01,或为 Stalwart 分配独立的 IP 地址。
DANE 和 MTA-STS,以及需要了解的默认值
两者都在 Web 界面的 MtaTlsStrategy 对象中,路径为 Settings、MTA、Outbound、TLS Strategies,按 TLS 策略分别配置。dane 字段默认为 optional:当收件方发布 TLSA 记录时尝试进行 DANE 验证;如果没有发布,则回退到普通 STARTTLS。设置为 require 后,只有在 TLSA 记录可验证时才会继续投递。mtaSts 字段的行为相同,默认值为 optional。相关超时设置为 tlsTimeout(默认 3 分钟)和 mtaStsTimeout(默认 5 分钟)。
在入站方向,Stalwart 可以在 https://mta-sts.<domain>/.well-known/mta-sts.txt 发布您自己的 MTA-STS 策略,但必须开放 443 端口。MtaSts 单例包含 mode(默认 testing)、maxAge(默认 7 天)和 mxHosts;当该字段为空时,系统会回退到 TLS 证书中的主机名。您需要提供两条 DNS 记录:一条指向邮件主机的 mta-sts CNAME 记录,以及一条包含策略标识符的 _mta-sts TXT 记录。
dig +short TXT _mta-sts.example.org
curl -s https://mta-sts.example.org/.well-known/mta-sts.txtTXT 查询应返回 v=STSv1; id=... 字符串,curl 应返回策略正文。如果 curl 没有返回内容,说明 443 端口未开放,或尚未为 mta-sts.example.org 签发证书。
在这两项检查通过前,将 mode 保持为 testing。证书损坏时,处于 enforce 模式的策略会阻止其他服务器向您投递邮件;用户会先发现问题并向您反馈,而不是由日志通知您。DANE 也有一个类似的陷阱:它要求 DNSSEC 签名的区域,而且每次 ACME 续期后,都必须重新发布固定叶证书的 TLSA 记录。您可以改为固定签发 CA,或者接受定期更新 TLSA 记录的维护工作。
静态加密不是端到端加密
这是最容易被误解的功能,因此下面严格按照文档说明。每位用户的纯文本邮件会在写入磁盘前,使用其 OpenPGP 或 S/MIME 证书自动加密。encryptAtRest 默认启用,适用于通过 SMTP 或 LMTP 到达的邮件,但前提是收件人已注册加密密钥。encryptOnAppend 默认值为 false,“这样会保留追加写入的邮件不变,使客户端可以完全控制所存储内容”。OpenPGP 使用 PGP/MIME,而不是较旧的 PGP/Inline,并采用 AES-256 或 AES-128。Stalwart 不会生成密钥:用户导出 ASCII armor 格式的公钥,然后在 Account、Public Keys 下将其注册为 PublicKey 对象。
因此,它可以保护被盗的磁盘映像、被盗的备份,以及邮件投递后管理员读取存储内容的情况。没有私钥,存储的字节内容无法读取,管理员也无法解密。
它不能保护传输中的邮件。邮件会根据两台服务器协商的 TLS 配置通过互联网传输,到达时仍是纯文本,Stalwart 会在此时将其加密。发件人、发件人的服务提供商,以及任何移除 TLS 的中转节点,都已经看到了纯文本。
还有3项限制需要明确说明。Sent 和 Drafts 文件夹由客户端写入,这属于追加写入;而 encryptOnAppend 默认值为 false,因此除非修改该设置,这些内容会保持明文。根据我在 28 August 2026 阅读的文档,它只说明了邮件内容,没有说明信封数据、标头或索引条目是否加密,因此不要假设这些内容已加密。文档也没有说明在上传密钥前已经存储的邮件会重新加密,因此应假设它们不会重新加密,并进行检查。文档同样没有说明全文搜索是否仍可搜索加密的邮件正文。向任何人承诺这一点前,请先使用临时账户进行测试。
如果用户丢失私钥,其邮件也会丢失。系统没有恢复途径,这是设计如此。
WKD 是 Web 服务器任务,不是邮件服务器任务
WKD(Web Key Directory)是 OpenPGP 体系的另一部分,用于解决不同的问题。它会在您的域名下,通过固定的 HTTPS URL 发布公钥,以便发件人的邮件客户端找到该公钥,并在邮件离开发件人设备之前完成加密。这就是端到端加密。Stalwart 的静态数据加密针对的是存储在磁盘上的副本。配置其中一项不会自动提供另一项功能。
Stalwart 不提供 WKD 服务。截至 2026 年 8 月 28 日,其文档列出的 HTTP 端点包括 jmap、caldav、carddav、oauth-authorization-server、openid-configuration、acme-challenge、mta-sts.txt、mail-v1.xml 以及 autoconfig 对应的 well-known 路径。其中没有 openpgpkey 路径。请使用普通的静态 Web 服务器提供该路径。
规范定义了两种目录布局。高级方法使用 https://openpgpkey.example.org/.well-known/openpgpkey/example.org/hu/iy9q119eutrkn8s1mk4r39qejnbu3n5q?l=Joe.Doe。直接方法使用 https://example.org/.well-known/openpgpkey/hu/iy9q119eutrkn8s1mk4r39qejnbu3n5q?l=Joe.Doe。这个 32 字符字符串是将小写本地部分编码为 z-base-32 后得到的 SHA-1 值,因此不要手动构造这些文件名。GnuPG 会自动为您生成。
gpg --export --armor you@example.org > you.asc
gpg-wks-client --print-wkd-url you@example.org
gpg-wks-client --install-key you.asc you@example.org--print-wkd-url 会打印客户端要访问的 URL,并使用子域名形式。--install-key 会将密钥写入本地目录树,该目录树镜像 WKD 布局,默认位于名为 openpgpkey 的顶级目录下,也可通过 -C dir 修改。将该目录树复制到 Web 根目录,在 hu 目录旁放置所需的 policy 文件(空文件也有效),然后使用 curl 请求您自己的 URL,确认返回的是密钥数据而不是 404。
单个 VPS 上的存储
Stalwart 将存储分为 4 个角色:用于保存邮箱状态等结构化记录的数据存储,用于保存原始邮件内容和附件的 Blob 存储,用于建立全文索引的搜索存储,以及用于保存速率限制器、身份验证令牌和会话数据的内存存储。每个角色都可以指向不同的后端。支持的后端包括 RocksDB、FoundationDB、PostgreSQL、MySQL、SQLite、兼容 S3 的对象存储、Azure Blob Storage、Redis、ElasticSearch 和 Meilisearch。
在单个 VPS 上,答案很简单。文档称 RocksDB 是“单节点 Stalwart 部署的推荐后端,因为它速度快且可靠”。Redis 仅支持用作内存存储,不能用作数据存储或 Blob 存储,因此不需要单独运行 Redis 容器即可开始使用。邮箱超出磁盘容量后,再将 Blob 存储迁移到 S3。
备份方式取决于所用后端。对于外部数据库,请使用该数据库自己的备份流程。对于内置后端,FAQ 建议复制 /var/lib/stalwart 目录。请在服务停止后执行此操作,或从文件系统快照或卷快照中复制。对正在运行的键值存储执行文件级复制,可能会在其写入过程中捕获不完整状态;直到尝试恢复时,您才会发现备份不可用。
替代 Rspamd 的垃圾邮件过滤器
过滤在同一进程中运行,因此无需维护第二个守护进程。分类器在 Settings、Spam Filter、Classifier 下的 SpamClassifier singleton 中配置。它使用带特征哈希的 FTRL-Proximal 算法。对于大多数部署,推荐默认使用 FtrlFh。FtrlCcfh 会改用 cuckoo 特征哈希,以减少哈希冲突,适用于大规模部署。它会持续训练:用户将邮件标记为 spam 或 ham 时,该标签会直接反馈到后续决策中。
分类器周围还集成了 DNS blocklist、greylisting、钓鱼检测、spam trap 和 Pyzor;如果您有不愿放弃的规则,还可以选择通过 milter 调用 SpamAssassin。
何时 mailcow 仍然是正确选择
Stalwart 没有 webmail。这是它最大的缺口,而且短期内不会改变。我们于 28 August 2026 查阅的 mailcow 文档列出了 16 个组件,其中包括 SOGo。SOGo 可直接为用户提供浏览器收件箱,以及 CalDAV 和 CardDAV 接口。Stalwart 在 20 June 2025 发布的路线图文章中表示,内置 webmail “已在计划中,但目前不是我们的首要任务”。该功能计划在 1.0 版本之后使用 Rust 和 Dioxus 构建,“最有可能在 2026 年的某个时间”。截至 28 August 2026,项目博客仍没有发布相关公告。因此,使用 Stalwart 时,您要么自行部署 Roundcube,要么要求每位用户配置邮件客户端。
Stalwart 确实提供 Web 管理界面,因此这不是用户通常预期的缺口。第二个缺口是版本成熟度。FAQ 说明 Stalwart 当前处于 0.x 阶段,数据布局和配置可能在 v1.0 之前发生变化,并可能需要迁移。项目在 2026 年 6 月发布的文章标题是“Zero open bug reports: The road to Stalwart 1.0”。这说明了它目前所处的阶段:已经接近,但还没有达到。
第三个缺口不会出现在功能列表中。Postfix、Dovecot 和 Rspamd 背后有十多年积累的书面解答。凌晨 2 点,邮件正在队列中,用户还在等待时,搜索结果中出现匹配的错误字符串,比优雅的架构更有价值。如果您正处于这种情况,我们的 mailcow 安装指南会端到端讲解整个技术栈,这样您可能可以更早结束排障。
如果您希望使用一个二进制文件、一个配置文件和 JMAP,并且能够接受较新的项目,请选择 Stalwart。如果您现在就需要 webmail,并希望依赖大量现成的解决方案,请选择 mailcow。
迁移现有邮件
通用方案是使用 imapsync 在 IMAP 和 IMAP 之间迁移,与两端运行的具体软件无关。请先执行试运行。
imapsync --dry \
--host1 old.example.org --user1 you@example.org --passfile1 /root/.old.pw \
--host2 mail.example.org --user2 you@example.org --passfile2 /root/.new.pw--dry 会让 imapsync“实际不执行任何操作,只打印计划执行的操作”,因此移除该标志前请先检查输出。每个密码文件的第一行包含密码,因此请同时 chmod 600 两个文件,之后删除这些文件。
Stalwart 还提供了较新的工具,大多数第三方指南尚未更新相关内容。其博客介绍了 Vandelay,这是一款 JMAP 导入和导出工具(29 May 2026);还介绍了用于零停机升级的迁移代理(10 June 2026)。规划大型迁移前,请先阅读这两篇文章,因为它们比其他渠道几乎所有相关资料都新。
故障模式与您将看到的字符串
管理界面始终无法加载。 FAQ 直接提到了这一问题:首次运行时,Web 界面资源包会从 GitHub 下载,因此如果服务器无法通过出站 HTTPS 访问 github.com,服务虽然正在运行,页面却会显示为空白。请在服务器上使用 curl -sI https://github.com/stalwartlabs/webui/releases/latest/ 检查。FAQ 列出的其他常见原因包括 HTTP 或 HTTPS 方案不匹配,以及反向代理未转发客户端 IP。
日志中没有引导密码。 引导模式下,密码会在启动时打印一次。如果服务此后已重启,请使用 sudo journalctl -u stalwart --since today | grep -A8 'bootstrap mode' 扩大日志时间范围。如果密码确实已丢失,请在 /etc/stalwart/stalwart.env 中设置 STALWART_RECOVERY_ADMIN,然后重启服务。
通过本地代理中继被拒绝。 v0.16.19 发行说明记录了一个修复:中继路由会因 host resolves loopback address 而被拒绝。如果遇到这一确切字符串,说明您运行的是较旧的构建版本。请固定到新版本,不要采用绕过方案。
自行编写 unit 后服务无法启动。 如果缺少 AmbientCapabilities=CAP_NET_BIND_SERVICE,stalwart 用户无法绑定 25、443、465 或 993 端口,服务会在尝试监听第一个端口时启动失败。请从安装程序生成的 unit 中复制 capability 配置行。
证书始终无法签发。 HTTP-01 要求 80 端口可访问且未被占用。TLS-ALPN-01 要求 Stalwart 自身在 443 端口响应 TLS 握手。如果服务器上的其他程序占用了任一端口,ACME 会持续静默失败,而其他功能看起来仍然正常。
FAQ
Stalwart 能否在一台 VPS 上替代 Postfix、Dovecot 和 Rspamd?
可以。一个 Rust 二进制文件即可提供 SMTP、IMAP、POP3、JMAP、CalDAV、CardDAV 和 WebDAV 服务,并包含垃圾邮件过滤器、邮件存储和 ACME 客户端。只需一个 systemd 单元和 /etc/stalwart/config.json 处的一个配置文件,无需维护 4 个守护进程及其衔接配置。它不能替代 DNS 区域,也不能改变服务商对 25 端口的策略;自托管邮件能否正常工作,实际取决于这两点。
Stalwart 邮件服务器需要多少 RAM?
Stalwart 的系统要求页面截至 28 August 2026 给出的数据是:空闲时约占用 100 MB;对于 5 到 10 个用户的小型部署,1 GB RAM 足够。约 5 个用户的低流量部署可运行在单个 CPU 核心上。默认限制是所有服务合计 8,192 个并发连接,并且可以配置。因此,上限主要随连接数和邮件流量增加,而不只取决于用户数。官方没有公布最小磁盘容量,因此应根据需要保留的邮件量规划磁盘空间。
切换到 Stalwart 能改善我的邮件送达率吗?
不能。邮件送达率取决于 VPS 上的出站 TCP 25 端口是否开放、IP 是否配置了反向 DNS,以及域名是否配置了 SPF、DKIM 和 DMARC。Stalwart 支持 DANE、MTA-STS 和 SMTP TLS 报告,也可以代为发布 MTA-STS 策略。但这些机制用于保护传输安全,不决定接收方网络是否信任你的地址。安装任何组件前,先使用 nc -vz -w 5 alt1.aspmx.l.google.com 25 测试 25 端口。
Stalwart 是否包含 Webmail?
截至 28 August 2026,不包含。它提供 Web 管理界面,但这不是 Webmail。项目在 20 June 2025 发布的路线图文章表示,Webmail 客户端计划在 1.0 版本之后推出,使用 Rust 和 Dioxus 构建,“最有可能在 2026 年某个时间推出”;但项目博客目前尚未发布相关公告。如果用户现在需要通过浏览器访问收件箱,可以同时部署 Roundcube,或使用集成 SOGo 的邮件栈。
Stalwart 的静态加密可以防范什么?
它会在将邮件写入磁盘前,使用每个用户自己的 OpenPGP 或 S/MIME 公钥加密邮件。因此,即使磁盘或备份被窃取,或者管理员读取邮件存储,也无法恢复邮件内容。这不是端到端加密:邮件以明文到达,并在投递时加密,因此此前经过的每一跳都能看到明文。encryptOnAppend 默认为 false,因此客户端写入的 Sent 和 Drafts 会保持明文,除非你修改该设置。文档只说明了邮件内容,未说明元数据、索引条目,或如何重新加密上传密钥前已存储的邮件。因此,请自行验证这些行为,不要据此推断它们受到保护。