安装手册 · v1.0.0 Windows .msi · Linux systemd · Docker

8 个步骤:从全新主机到生产邮件流

邮件服务器对网络的依赖大于对硬件的依赖:如果端口 25 被封锁或缺少反向 DNS (PTR),无论 CPU 多强,邮件都无法投递。本指南严格按顺序引导您完成从预检、安装、双密钥 DKIM、TLS 到移动设备接入,直至首次验证投递的全过程。

第 01 章

nextxch 如何启动并进入生产状态

nextxch 将 ESMTP、IMAP4rev2、POP3、JMAP、Exchange ActiveSync、CalDAV/CardDAV、ManageSieve、SpamGuard、GoBD WORM 归档、管理控制台 (/admin/) 和 nextxch Webmail PWA (/mail/) 打包为单个内存安全的二进制文件(空闲内存约 40 到 90 MB)。首次启动时不会从 GitHub 下载任何内容,也无需外部 NSSM 包装器、Redis、Rspamd 或单独的 Webmail 容器。

顺序很重要: 在运行任何命令之前,请先核对第 02 章(服务商处的端口 25 与反向 DNS),然后按照第 04 章针对您的平台操作;每当输出与预期状态不符时,请查阅第 06 章。
第 01-02 步安装并登录安装经 SHA-256 校验的软件包,开放端口,并登录 /admin/。
第 03-05 步域、TLS 与双 DKIM签发 ACME/PFX 证书,并发布 RSA-2048 和 Ed25519 两条 DNS 记录。
步骤 06-07加固并连接设备启用 SpamGuard、双栈 IPv6、GoBD 以及一键 QR/WhatsApp 描述文件。
第 08 步验证邮件流运行出站 MX/DANE 测试器,并通过 Message Trace 进行往返测试。
第 02 章

系统与网络先决条件(部署前检查清单)

安装前请逐项核对以下全部 6 项。其中 4 项需在服务器之外,于您的托管或 DNS 控制面板中设置。

端口 协议 / 服务 方向 要求与指导
25 / TCPESMTP(MX 服务器间 + STARTTLS/DANE)入站与出站必需 - 接收和投递互联网邮件所必不可少。
443 / TCPHTTPS(/admin/、/mail/、JMAP、ActiveSync、DAV、MTA-STS)入站(+ 出站)必需 - 提供 Webmail、管理、移动推送、DAV、JMAP 与 ACME。
465 / TCPSMTPS 提交(隐式 TLS,RFC 8314)入站必需 - 首选的隐式 TLS 提交端口 (RFC 8314)。
587 / TCPSMTP 提交 (STARTTLS)入站必需 - 供 Outlook、打印机和 ERP 使用的标准 STARTTLS 提交。
993 / TCPIMAPS(IMAP4rev2 隐式 TLS)入站必需 - 加密 IMAP4rev2,零轮询 IDLE 推送。
80 / TCPHTTP(ACME HTTP-01 & Autoconfig)入站推荐(使用 TLS-ALPN-01 或网关 PFX 时可选)。
4190 / TCPManageSieve (STARTTLS)入站可选(Webmail 可视化 Sieve 编辑器已通过 443 端口工作)。
143 / TCPIMAP (STARTTLS)入站可选(优先使用端口 993 隐式 TLS)。
995 / TCPPOP3S(隐式 TLS)入站可选(仅当在“管理 > 网络”中启用 POP3 时;默认关闭)。
110 / TCPPOP3 (STLS)入站可选(优先使用端口 995 隐式 TLS)。
部署规模 CPU 内存 磁盘与推荐数据库
1 - 250 个邮箱2 vCPU1 - 2 GBNVMe/SSD · 内嵌 SQLite WAL + Zstandard(服务器占用约 40-90 MB)。
250 - 2,500 个邮箱4 vCPU4 - 8 GBNVMe + 可选混合 S3 · PostgreSQL 18 或 Microsoft SQL Server (2019-2025)。
2,500+ 高可用集群8+ vCPU16+ GB基于 PostgreSQL 18 或 SQL Server Always On + S3 Object Lock 的双活节点。
第 03 章

选择平台与存储后端

所有平台运行完全相同的功能集。请选择与您的运维团队相匹配的部署方式和 SQL 后端。

平台 方法 最适合
Windows Server 2019-2025.msi / install.ps1原生 Windows SCM 服务,无需 Docker 或 NSSM;非常适合与 Microsoft SQL Server 搭配或用于 hMailServer 迁移。
Linux(x86_64 & ARM64)install.sh · .deb · systemd在 Debian、Ubuntu LTS、RHEL/Rocky 或 ARM64 服务器上以非 root 身份运行的轻量级 systemd 守护进程。
Docker Composenextxch/server:1.0.0可在 Linux 主机、Proxmox 虚拟机、Synology、UGREEN 和 Unraid 上复现的容器栈。
macOS & Kuberneteslaunchd / Helm v3Mac mini 办公服务器 (launchd) 或可水平扩展的双活 Kubernetes 集群。
第 04 章

8 步教程:从安装到第一封验证通过的测试邮件

请在下方选择您的目标平台。8 个步骤中的每一步都会说明其作用、给出确切命令、确认预期结果,并在问题发生处指出最常见的陷阱。

第 01 步

安装服务并开放防火墙端口

下载发布包,校验其 SHA-256 摘要,并注册后台服务和持久化数据目录。

# PowerShell (Admin): Downloads .msi (v1.0.0), verifies SHA-256 & launches setup
irm https://nextxch.com/install.ps1 | iex

# Ensure Windows Defender Firewall permits inbound mail & HTTPS ports
New-NetFirewallRule -DisplayName "nextxch" -Direction Inbound `
  -Protocol TCP -LocalPort 25,80,443,465,587,993,4190 -Action Allow
# Debian / Ubuntu / RHEL / macOS: Verifies SHA-256 & registers systemd unit
curl -fsSL https://nextxch.com/install.sh | sudo bash

# If UFW is enabled, allow required mail & HTTPS ports:
sudo ufw allow 25,80,443,465,587,993,4190/tcp
# Pulls SHA-256-verified nextxch/server:1.0.0 & writes docker-compose.yml
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- \
  --mode docker --domain firma.de --hostname mail.firma.de --admin admin@firma.de
预期结果:服务处于活动状态、已设为开机启动,并在 HTTPS 和邮件端口上监听。
常见陷阱:如果启动时报告 'Address already in use',说明预装的 MTA (Postfix/Exim) 或 Web 服务器占用了端口 25/80/443 -> 参见第 06 章 (#sym-port-bind)。
第 02 步

验证服务健康状况并登录 /admin/

确认日志中各监听器已正常启动,然后使用安装时设置的管理员凭据登录管理控制台。

Get-Service nextxch
# Open in browser: https://mail.firma.de/admin/ (or http://localhost/admin/)
sudo systemctl status nextxch
sudo journalctl -u nextxch -n 30 --no-pager
# Open in browser: https://mail.firma.de/admin/
docker compose ps
docker compose logs --tail=30 nextxch
# Open in browser: https://mail.firma.de/admin/
预期结果:/admin/ 下的实时仪表板打开,并显示 SMTP、IMAP 和 HTTPS 的活动监听器。
第 03 步

配置邮件域与并行双密钥 DKIM

在 /admin/ 中打开 域与路由 -> 管理域。nextxch 会自动生成两组并行的 DKIM 密钥对:RSA-2048(选择器 s2026)和 Ed25519(选择器 s2026ed)。

最佳实践:在第 5 步中一次性在 DNS 中发布两条 TXT 记录;之后即可在服务器上即时切换签名模式(RSA-2048、Ed25519 或 Dual-Sign),无需等待 DNS 传播。
第 04 步

启用 TLS 证书(ACME Let's Encrypt 或网关 PFX)

打开“安全与证书” -> “TLS 与 ACME”。当 mail.company.com 解析到您的主机后,通过 HTTP-01 或 TLS-ALPN-01(端口 443)申请 Let's Encrypt 证书,或上传来自 pfSense/SSL 网关的 .pfx/.pem 证书。

预期结果:0 ms 动态 SNI 热重载会立即在 HTTPS、SMTPS、IMAPS 和 ManageSieve 上启用证书,无需重启。
第 05 步

发布 DNS 记录并运行实时 DNS 验证

从内置 DNS 顾问复制计算出的 DNS 记录(或导出 BIND 区域文件):MX、A/AAAA、SPF、两个 DKIM 选择器(s2026 + s2026ed)、DMARC、MTA-STS、TLS-RPT,以及可选的 DANE TLSA (3 1 1) 和 BIMI。

预期结果:点击“Verify Live DNS”后,MX、SPF、两个 DKIM 选择器、DMARC 和 PTR 均显示绿色通过标记。
常见陷阱:许多 DNS 控制面板会自动追加您的域;请将主机填写为 s2026._domainkey,而不是 s2026._domainkey.company.com -> 参见 #sym-dkim-dns。
第 06 步

投入生产前加固服务器

为您的管理员账户注册通行密钥 (WebAuthn) 或 TOTP 2FA,将 SpamGuard 阈值保持在 4.5 / 9.0 并启用智能灰名单,并在商业域上启用 GoBD WORM 归档。

预期结果:自动封禁防护、身份验证前强制 TLS 以及出站速率保护会自动保护您的 IP 信誉。
第 07 步

30 秒内创建第一个邮箱并连接移动设备

在“账户与列表”下创建第一个用户邮箱,在 https://mail.company.com/mail/ 登录,然后点击“设备设置”,生成二维码或防即时通讯预取的一键入门链接,附带经 CMS 签名的 iOS/macOS 描述文件或 Exchange ActiveSync 配置。

预期结果:iOS 在描述文件上显示绿色“已验证”标记,并立即同步邮件、日历、联系人和备忘录。
第 08 步

通过 Live MX Tester 和 Message Trace 确认入站与出站投递

运行 Diagnostics & Logs -> Outbound MX & DANE Tester,针对 gmail.com 或外部地址进行测试,然后从 /mail/ 发送一封真实邮件并回复,以验证双向邮件流。

预期结果:Message Trace 在两个方向上均记录为通过 TLS 1.3 已送达(Delivered),外部收件方的邮件头显示 spf=pass、dkim=pass 和 dmarc=pass。
第 05 章

在 pfSense / OPNsense、SSL 网关和反向代理之后运行

在 pfSense、OPNsense、Sophos 或 HAProxy 之后部署时,请配置以下三项设置,以确保诊断准确并保留真实客户端 IP:

场景 推荐配置
Split-DNS / Hairpin-NAT在 Unbound 中配置 Split-DNS 主机覆盖,将 mail.company.com 指向内部 LAN IP,或在网关上启用 Pure NAT Reflection。
HAProxy PROXY 协议启用 PROXY 协议 v1/v2 并限定为您受信任的代理 CIDR,使 SPF 和自动封禁看到真实的远程 IP,而不是网关 IP。
网关证书将网关续期后的 .pfx/.pem 证书同步到 nextxch,用于端口 25/465/587/993;动态 SNI 会零停机热重载更新后的证书。
第 06 章

按症状排查故障(从错误到即时修复)

请点击下方您观察到的症状,或在上方的快速筛选框中输入部分错误信息:

服务正在运行,外部端口检查器却报告 'Blocked / Timeout' TCP 25 / 465 / 993 Timeout
根本原因:要么两台主机位于同一 pfSense/OPNsense 防火墙之后且未启用 Hairpin NAT (NAT Reflection),要么您的云服务商的外部防火墙仍在阻止端口 25。
解决方法:在 /admin/ 中查看网络诊断(可自动检测同主机部署的 Hairpin NAT 网关),并确认外层云防火墙允许 TCP 25、443、465、587 和 993。
服务启动时无法绑定端口 Address already in use (:25 / :80 / :443)
根本原因:Linux 上预装的 MTA(Postfix、Exim、Sendmail)或 IIS/Nginx/Apache 已占用端口 25、80 或 443。
修复:在 Linux 上通过 'sudo ss -tulpn' 检查活动的监听端口(禁用未使用的 postfix/exim),或在 PowerShell 中使用 'Get-NetTCPConnection -State Listen'。
发往 Gmail、Microsoft 365 或大型 ISP 的外发邮件被拒收 550-5.7.25 / 550-5.7.1 PTR missing
根本原因:您的主机在双栈接口上通过 IPv6 向外连接,而您只配置了 IPv4 的 PTR 记录,遗漏了 IPv6 的 PTR 记录。
解决方法:在托管服务商的控制面板中,为您的 IPv4 和 IPv6 地址都设置与 Smtp:ServerHostName 匹配的 PTR 记录。
实时 DNS 检查器找不到您发布的 DKIM 或 DMARC TXT 记录 NXDOMAIN s2026._domainkey
根本原因:许多 DNS 控制面板会自动追加区域顶点,把 's2026._domainkey.company.com' 变成 's2026._domainkey.company.com.company.com',或者用多余的空格拆分较长的 RSA-2048 字符串。
解决方法:在 DNS 控制面板中只输入相对主机标签('s2026._domainkey'、's2026ed._domainkey'、'_dmarc'),并通过 'nslookup -type=txt s2026._domainkey.company.com' 验证。
Let's Encrypt ACME 无法签发证书,或浏览器显示 TLS 警告 ACME challenge failed
根本原因:mail.company.com 的 A/AAAA DNS 记录尚未生效,或端口 80/443 在上游被另一个反向代理拦截。
解决方法:当端口 443 直接到达 nextxch 时使用 TLS-ALPN-01,为 HTTP-01 开放端口 80,或通过 PFX/PEM 导入反向代理续期后的证书。
iPhone 打开 WhatsApp / Teams 引导链接后未立即启动“设置”中的配置文件安装 iOS In-App WebView
根本原因:iOS 只允许通过 Safari 安装 .mobileconfig 系统描述文件,而聊天应用会先在内嵌的 WebView 中打开链接。
解决方法:按照接入页面的指引,点击 Safari 指南针图标('在 Safari 中打开');预览爬虫永远不会消耗一次性令牌。
Docker 容器反复重启或无法写入挂载的主机卷 Access to path '/var/lib/nextxch' denied
根本原因:在 RHEL/Rocky/Fedora 上,严格的主机目录所有权或 SELinux 标签会阻止容器写入绑定挂载的文件夹。
解决方法:在强制启用 SELinux 的主机上,使用命名 Docker 卷,或在绑定挂载后追加 ':Z'。
邮件客户端无法通过 IMAP 或 SMTP 登录 535 Authentication failed / TLS required
根本原因:要么客户端尝试在无 TLS 的情况下明文登录(被 RequireTlsForAuth 阻止),要么该账户已启用 2FA,旧式 IMAP/SMTP 需要使用应用密码。
解决方法:配置端口 993 (SSL/TLS) 和端口 465 (SSL/TLS) 或 587 (STARTTLS),以完整电子邮件地址作为用户名;启用 2FA 时请生成专用应用密码。
第 07 章

后续步骤:10 秒升级、备份与迁移

确认双向邮件流通后,您的服务器即可投入生产。请随时准备好以下三项运维流程:

# 1) In-place upgrade (preserves configuration, certificates & mailboxes):
# Linux / macOS:
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update
# Windows PowerShell (Administrator):
irm https://nextxch.com/install.ps1 | iex

# 2) Backup scope (only 2 paths):
# - Config file: appsettings.Production.json (including license token)
# - Data dir:    Storage:DataDirectory (SQLite WAL / blobs / TLS certs)
#   or pg_dump / SQL Server backup when running an external DB cluster

首次启动前的快速解答

nextxch 在 Windows Server 上是否需要 NSSM 或 Docker Desktop?

不需要。与在 Windows 上需要 NSSM 服务包装器的服务器不同,nextxch 通过我们的官方 .msi 安装程序原生注册到 Windows 服务控制管理器 (SCM),无需 Docker Desktop、WSL2 或 Hyper-V。

nextxch 首次启动时是否需要访问互联网来下载其 WebUI 或垃圾邮件规则?

不需要。整个管理控制台 (/admin/)、nextxch Webmail PWA (/mail/)、SpamGuard 引擎以及所有协议监听器都包含在经 SHA-256 校验的软件包内,可 100% 离线/物理隔离启动。

为什么在发送第一封测试邮件之前,反向 DNS (PTR) 必须匹配?

Gmail、Microsoft 365 和欧洲 ISP 等大型接收方会验证您的公网 IPv4 和 IPv6 地址是否都能通过 PTR 反向解析到您确切的 SMTP EHLO 主机名(例如 mail.company.com)。在双栈主机上缺少 IPv6 PTR 记录,是导致 550-5.7.25 拒收的首要原因。

服务器投入生产后,就地升级如何进行?

在 Linux/macOS 上运行 curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update,在 Windows 上运行 irm https://nextxch.com/install.ps1 | iex(或使用 /admin/ 中的一键更新程序)。您的 appsettings.Production.json、TLS 证书、DKIM 密钥和邮件存储都会自动保留。