19 篇分步指南:Docker® Compose、操作系统、NAS 与托管服务商

通过 Docker® Compose、Windows® 服务(无需 Docker®)、Linux®、NAS、Proxmox® 与主流托管服务商部署

选择您的具体平台:从开箱即用的 Docker® Compose 示例、无需 Docker® 的原生 Windows Server® 服务,到 Proxmox® VE、Raspberry Pi®、Synology®、ASUSTOR、UGREEN、TerraMaster 和 Unraid,以及 netcup、Hetzner、IONOS、ALL-INKL.COM、Hostinger、Strato 和 OVHcloud 上准确的 PTR 与防火墙设置。

# Linux & macOS: SHA-256-geprüfter Installer & Updater v1.0.0 (Docker Compose, .deb oder systemd)
curl -fsSL https://nextxch.com/install.sh | sudo bash

# Windows Server (2019 / 2022 / 2025): Lädt das .msi, prüft SHA-256 & startet den Assistenten
irm https://nextxch.com/install.ps1 | iex

# Gepinnter Container-Start (Version 1.0.0 für linux/amd64 & linux/arm64)
docker run -d --name nextxch -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 80:80 -p 443:443 \
  -v nextxch-data:/app/data nextxch/server:1.0.0
60 秒上线

一个统一的二进制程序,取代七个脆弱的守护进程。

不必再拼凑 Postfix、Dovecot、Rspamd、OpenDKIM、Certbot、Redis 和老旧的 PHP Webmail:nextxch 在一个自包含软件包中提供邮件传输、Groupware、Webmail PWA、管理控制台、CLI/API 以及 0 ms SNI Let's Encrypt。

一行命令终端安装程序与经过验证的原生软件包 v1.0.0(.msi、.deb、.tar.gz)

自动校验 SHA-256 摘要,交互式询问域、主机名、管理员和存储,或执行就地服务更新

v1.0.0 · SHA-256 已验证
# === Linux (Debian / Ubuntu / RHEL) & macOS - Interaktiver Installer & Updater (v1.0.0) ===
curl -fsSL https://nextxch.com/install.sh | sudo bash

# Späteres Update auf neue Release-Version mit einem Befehl:
curl -fsSL https://nextxch.com/install.sh | sudo bash -s -- --update

# === Windows Server (2019 / 2022 / 2025) - Lädt .msi, prüft SHA-256 & startet den Assistenten ===
irm https://nextxch.com/install.ps1 | iex

Docker® 与 Docker® Compose(固定 v1.0.0 版本,适用于 Linux®、Windows®、macOS® 和 NAS)

可复现的多架构 OCI 镜像(nextxch/server:1.0.0 · linux/amd64 & linux/arm64),支持 SQLite WAL 或 PostgreSQL® 18、CalDAV/CardDAV、S3 Object Lock 与 OpenTelemetry

OCI v1.0.0
容器镜像仓库说明:我们强烈建议在生产环境中使用固定的版本标签(1.0.0 而非 :latest)。当公共 Docker® Hub 镜像处于分阶段发布期间时,运行 install.sh --mode docker 会自动校验来自 nextxch.com 的 SHA256SUMS.txt,并在您的主机上本地构建 nextxch/server:1.0.0。
  1. 方案 A:紧凑型单容器 Compose(SQLite WAL + Zstandard):适用于在单台 VPS、独立服务器或 NAS 上运行多达数千个邮箱,无需任何外部数据库,空闲内存约 40 MB。
  2. 选项 B:Enterprise 生产环境 Compose(PostgreSQL® 18 + S3 WORM + OpenTelemetry):水平扩展、符合 GoBD 的 S3 Object Lock,以及 OpenTelemetry OTLP 追踪、指标和日志。
# === VARIANTE A: Kompakter Einzelcontainer-Stack (docker-compose.yml) ===
services:
  nextxch:
    image: nextxch/server:1.0.0
    container_name: nextxch
    hostname: mail.firma.de
    restart: unless-stopped
    ports:
      - "25:25"       # ESMTP-Eingang (MX)
      - "465:465"     # SMTPS-Einlieferung (Implicit TLS)
      - "587:587"     # SMTP-Einlieferung (STARTTLS)
      - "143:143"     # IMAP4rev2 (STARTTLS)
      - "993:993"     # IMAPS (Implicit TLS)
      - "4190:4190"   # ManageSieve (Filter & Abwesenheit)
      - "80:80"       # Let's Encrypt HTTP-01 & Autoconfig
      - "443:443"     # Admin-Cockpit, Webmail PWA, JMAP, CalDAV/CardDAV, Mobile Push (WBXML) & REST API
    environment:
      Urls: "http://*:80;https://*:443"
      Bootstrap__DefaultDomain: "firma.de"
      Bootstrap__AdminEmail: "admin@firma.de"
      Bootstrap__AdminPassword: "BitteSofortAendern!2026"
      Storage__Provider: "Sqlite"
      Storage__DataDirectory: "/var/lib/nextxch"
      Storage__BlobBackend: "FileSystem"
      Storage__Compression: "Zstd"
      Smtp__ServerHostName: "mail.firma.de"
      Imap__ServerHostName: "mail.firma.de"
      OpenTelemetry__Enabled: "true"
      OpenTelemetry__ServiceName: "nextxch"
    volumes:
      - ./nextxch-data:/var/lib/nextxch

# Starten (oder automatischer lokaler Image-Build via install.sh --mode docker):
# docker compose up -d && docker compose logs -f nextxch
# === VARIANTE B: Enterprise-Stack mit PostgreSQL 18, S3 Object Lock & OpenTelemetry ===
services:
  nextxch:
    image: nextxch/server:1.0.0
    restart: unless-stopped
    depends_on: [postgres, otel-collector]
    ports: ["25:25", "465:465", "587:587", "993:993", "4190:4190", "80:80", "443:443"]
    environment:
      Urls: "http://*:80;https://*:443"
      Storage__Provider: "Postgres"
      Storage__PostgresConnectionString: "Host=postgres;Database=nextxch;Username=nextxch;Password=${PG_PASSWORD}"
      Storage__BlobBackend: "Hybrid"
      Storage__Compression: "Zstd"
      Storage__S3Endpoint: "https://s3.eu-central-1.ionoscloud.com"
      Storage__S3Bucket: "firma-gobd-mail-archive"
      OpenTelemetry__Enabled: "true"
      OpenTelemetry__ServiceName: "nextxch-Prod"
      OpenTelemetry__OtlpEndpoint: "http://otel-collector:4317"
    volumes:
      - nextxch-nvme-cache:/var/lib/nextxch

  postgres:
    image: postgres:18-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: nextxch
      POSTGRES_USER: nextxch
      POSTGRES_PASSWORD: "${PG_PASSWORD}"
    volumes:
      - pg-data:/var/lib/postgresql

  otel-collector:
    image: otel/opentelemetry-collector-contrib:0.112.0
    restart: unless-stopped
    ports: ["127.0.0.1:4317:4317"]

volumes:
  nextxch-nvme-cache:
  pg-data:

Windows Server®(2019 / 2022 / 2025)原生 Windows® 服务,无需 Docker®

真正的 Windows® 服务控制管理器 (SCM) 守护进程,无 Docker®、Hyper-V 或 WSL2 开销

原生 Windows® 服务
  1. 推荐:官方 Windows® .msi 向导 (v1.0.0):全新安装时交互式询问域、MX 主机名、管理员登录、SQLite WAL / Microsoft® SQL Server®(2019–2025 / Express / Azure® SQL)/ PostgreSQL® 18、Let's Encrypt ACME、Windows® 防火墙以及可选的许可证令牌。运行更新版本的 .msi 即可一键就地升级 Windows® 服务,同时保留 appsettings.Production.json 和邮件数据。
  2. 适用于 Ansible、GPO 和 Microsoft® Intune 的无人值守静默 CLI:通过 msiexec.exe /qn 以无界面方式传入任意配置属性。
# Variante A: Einzeiler in PowerShell (prüft SHA-256, lädt .msi & startet den Assistenten)
irm https://nextxch.com/install.ps1 | iex

# Variante B: Unbeaufsichtigte Installation / Dienst-Aktualisierung per msiexec.exe
curl.exe -fLO https://nextxch.com/downloads/Nextxch-Setup-win-x64.msi
msiexec.exe /i Nextxch-Setup-win-x64.msi /qn `
  DEFAULT_DOMAIN="firma.de" `
  MAIL_HOSTNAME="mail.firma.de" `
  ADMIN_EMAIL="admin@firma.de" `
  ADMIN_PASSWORD="BitteSofortAendern!2026" `
  STORAGE_PROVIDER="Sqlite" `
  DATA_DIR="C:\ProgramData\nextxch"

无需 Docker® 的 Linux® 原生守护进程(systemd 与 .deb)

Debian® · Ubuntu® · Red Hat® · Rocky
  1. 专用非 root 用户:以非 root 身份运行,并通过 CAP_NET_BIND_SERVICE 使用端口 25/443。
  2. 启用原生 Type=notify systemd 单元:与 journald 和 systemd 就绪通知原生集成。
# Schnellweg für Debian 12 / Ubuntu 24.04 LTS:
curl -fLO https://nextxch.com/downloads/nextxch_1.0.0_amd64.deb
sudo dpkg -i nextxch_1.0.0_amd64.deb

# Alternativ für RHEL / Rocky / AlmaLinux via .tar.gz + systemd:
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/nextxch nextxch
sudo mkdir -p /opt/nextxch /var/lib/nextxch
curl -fsSL https://nextxch.com/downloads/nextxch-linux-x64.tar.gz | sudo tar -xz -C /opt/nextxch
sudo chown -R nextxch:nextxch /var/lib/nextxch
sudo cp /opt/nextxch/nextxch.service /etc/systemd/system/
sudo systemctl enable --now nextxch

macOS®(Apple® Silicon M1–M4 & Intel)

macOS® · ARM64 · launchd
  1. 原生 Apple® Silicon ARM64:非常适合办公室的 Mac mini® / Mac Studio® 服务器以及在 MacBook Pro® 上进行本地预发布测试。
  2. 通过 launchd 持久运行:开机自动启动,内存占用约 40 MB。
sudo mkdir -p /usr/local/nextxch /usr/local/var/nextxch/logs
curl -fsSL https://nextxch.com/downloads/nextxch-osx-arm64.tar.gz | sudo tar -xz -C /usr/local/nextxch
sudo xattr -dr com.apple.quarantine /usr/local/nextxch
sudo bash /usr/local/nextxch/install-macos.sh

# Alternativ per OrbStack / Docker Desktop auf macOS:
docker run -d --name nextxch -p 2525:25 -p 2993:993 -p 8080:80 \
  -v ~/nextxch-data:/app/data \
  nextxch/server:1.0.0

双活 Kubernetes® 集群(EKS、AKS、GKE、K3s、OpenShift®)& 无根 Podman

100% PostgreSQL® 18 · 无需 Redis · Helm v3
  1. 100% PostgreSQL® 18 集群引擎(无需 Redis/Kafka):副本通过 PostgreSQL® LISTEN/NOTIFY 在 < 2 ms 内分发 IMAP IDLE 和 JMAP SSE 实时推送,通过 UNLOGGED 表共享临时质询/速率限制,并通过 pg_try_advisory_lock 选举 ACME/保留任务的主节点。
  2. HAProxy PROXY 协议 v1/v2 与无状态会话:在 L4 负载均衡器之后保留真实客户端 IP,以确保 SPF/DMARC/CIDR 检查准确;签名令牌支持无需粘性会话的 HPA 扩缩容。
  3. 集群安全的 Ed25519 许可:一个许可证令牌覆盖不限数量的 Pod,在 /admin/ 中激活后自动同步到所有节点。
# Offizielles Helm v3 Chart installieren (gepinnter Release-Tag 1.0.0, skaliert per HPA auf 3 bis 12 Pods)
helm upgrade --install nextxch ./deploy/helm/nextxch -n nextxch --create-namespace \
  --set image.repository=nextxch/server \
  --set image.tag=1.0.0 \
  --set replicaCount=3 \
  --set cluster.enabled=true \
  --set cluster.enableProxyProtocol=true \
  --set storage.provider=Postgres \
  --set storage.blobBackend=S3 \
  --set service.externalTrafficPolicy=Local

# Oder direkt per Kustomize-Manifesten (/health/live & /health/ready + PDB + Anti-Affinity):
kubectl apply -k ./deploy/kubernetes/

# Alternativ: Rootless Podman (RHEL 9 / Fedora / AlmaLinux ohne Docker-Daemon)
podman run -d --name nextxch --restart=always \
  -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 4190:4190 -p 8443:443 \
  -v /var/lib/nextxch:/app/data:Z \
  nextxch/server:1.0.0
虚拟化、ARM64 与 NAS 设备

在 Proxmox®、Raspberry Pi®、Synology®、ASUSTOR、UGREEN、TerraMaster & Unraid 上安装

Proxmox® VE(LXC & KVM)

Proxmox® VE 8+ · ZFS / NVMe
  1. 创建 LXC 容器:创建一个非特权的 Debian® 12 LXC 容器(2 vCPU、1024 MB 内存),并在 /var/lib/nextxch 挂载 ZFS/NVMe 存储。
  2. 直接通过 .deb / systemd:在 LXC 内运行原生 .deb/systemd 服务,避免嵌套容器开销,并可即时创建 Proxmox® Backup Server 快照。
  3. Proxmox® 防火墙:在 Datacenter/CT Firewall 中允许入站 TCP 25、465、587、993、4190、80、443。
# Auf dem Proxmox-Host (erstellt schlanken Debian-LXC CT 210 & installiert nativ):
pct create 210 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
  --hostname mail --cores 2 --memory 1024 --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --storage local-zfs --rootfs local-zfs:32 --unprivileged 1 --start 1
pct exec 210 -- bash -c "curl -fsSL https://nextxch.com/install.sh | bash -s -- --mode native -y"

Raspberry Pi® 4 & Raspberry Pi® 5

linux/arm64 · 约 40 MB 内存
  1. 64 位系统 & 使用 NVMe 而非 SD 卡:请使用 64 位 Raspberry Pi® OS Lite,并将 /var/lib/nextxch 放在 M.2 NVMe HAT 或 USB 3 SSD 上,而不是 microSD 卡。
  2. 家庭宽带提示(智能主机):在住宅动态 IP 上,请将 Smtp__OutboundSmartHost 设置为您的 ISP/托管服务商中继,以确保外发投递可靠。
# Nativ per ARM64-.deb-Paket oder Container (v1.0.0) auf Raspberry Pi 4 / 5:
curl -fLO https://nextxch.com/downloads/nextxch_1.0.0_arm64.deb
sudo dpkg -i nextxch_1.0.0_arm64.deb

Synology® NAS(DSM 7.2+)

Container Manager · Btrfs
  1. 在 File Station 中创建文件夹:在您的 Btrfs/SSD 卷上通过 File Station 创建 /volume1/docker/nextxch。
  2. 避免端口冲突:确保已停止 Synology® MailPlus,使端口 25、465、587 和 993 处于空闲状态。
  3. 打开 Container Manager:打开 Container Manager -> 项目 -> 创建,选择 /volume1/docker/nextxch 并粘贴:
services:
  nextxch:
    image: nextxch/server:1.0.0
    container_name: nextxch
    restart: unless-stopped
    ports:
      - "25:25"
      - "465:465"
      - "587:587"
      - "993:993"
      - "4190:4190"
      - "8443:443"
    volumes:
      - /volume1/docker/nextxch:/app/data
    environment:
      Storage__Provider: "Sqlite"
      Storage__Compression: "Zstd"

ASUSTOR NAS(ADM 4.x)

App Central · Docker®-CE · Portainer
  1. 安装 Docker®-CE & Portainer CE:从 ADM App Central 安装 Docker®-CE 和 Portainer CE。
  2. 持久化文件夹:在 ADM File Explorer 中创建 /volume1/Docker/nextxch。
  3. 部署 Stack:在 Portainer 中部署一个 Stack,映射 /volume1/Docker/nextxch:/app/data,并在 ADM Defender 中放行邮件端口。
mkdir -p /volume1/Docker/nextxch
docker run -d --name nextxch --restart unless-stopped \
  -p 25:25 -p 465:465 -p 587:587 -p 993:993 -p 8443:443 \
  -v /volume1/Docker/nextxch:/app/data \
  nextxch/server:1.0.0

UGREEN NASync (UGOS Pro)

UGOS Pro · Docker® 项目
  1. 使用 NVMe 存储池:在 UGREEN NASync DXP 型号上,将 /volume1/docker/nextxch 放在 M.2 NVMe 存储池上,以实现即时搜索。
  2. UGOS Pro Docker® 应用:打开 UGOS Pro Docker® -> Project -> Create,粘贴 Compose 文件,然后点击 Deploy。
# UGOS Pro -> Docker -> Projekt -> Compose-Konfiguration:
services:
  nextxch:
    image: nextxch/server:1.0.0
    restart: always
    ports: ["25:25", "465:465", "587:587", "993:993", "4190:4190", "8443:443"]
    volumes:
      - ./data:/app/data

TerraMaster NAS (TOS 5 / TOS 6)

TOS Docker® Manager
  1. 安装 Docker® Manager:从 TOS App Center 安装 Docker® Manager,并创建 /Volume1/docker/nextxch。
  2. 部署项目:在 Docker® Manager -> Projects -> Add 中粘贴 YAML 栈并启动。
volumes:
  - /Volume1/docker/nextxch:/app/data
# Admin-Cockpit nach Start: https://TERRAMASTER-IP:8443/admin/

Unraid Server (6.12+ / 7.x)

Unraid · 缓存 NVMe · Custom br0
  1. 将 Appdata 放在缓存 NVMe 上:映射 /mnt/cache/appdata/nextxch,使阵列中的校验盘可以休眠,而索引以 NVMe 速度运行。
  2. 通过网络类型 Custom: br0 使用独立的 LAN IP(推荐):将网络类型设为 Custom br0 并分配专用 LAN IP,使端口 80/443/25 永远不会与 Unraid WebGUI 冲突。
# Unraid Terminal oder Docker Compose Manager Plugin:
docker run -d --name nextxch --net=br0 --ip=192.168.178.25 --restart=unless-stopped \
  -v /mnt/cache/appdata/nextxch:/app/data \
  -e ASPNETCORE_URLS="http://*:80;https://*:443" \
  -e Bootstrap__DefaultDomain="firma.de" \
  nextxch/server:1.0.0
托管服务商与 DNS 指南

netcup、Hetzner、IONOS、ALL-INKL.COM、Hostinger、Strato 和 OVHcloud 配置指南

要可靠地投递到 Gmail™、Outlook® 和企业网关的收件箱,需要干净的发件 IP 信誉以及三项托管服务商设置:开放出站端口 25、匹配的 IPv4/IPv6 PTR 反向 DNS,以及一致的 SPF/DKIM/DMARC 记录。

netcup.de(Root 服务器 & VPS)

SCP · CCP DNS · 端口 25 开放
  1. 在 SCP 中设置反向 DNS (PTR):在 netcup SCP -> Network 中,将 IPv4 地址和主 IPv6 地址的反向 DNS (PTR) 都设置为 mail.yourdomain.de。
  2. 在 CCP 中维护 DNS:在 netcup CCP -> Domains -> DNS 中添加 A、AAAA、MX(优先级 10)、SPF 和 DKIM TXT 记录。
  3. 安装:在 SCP 中部署 Debian® 12 或 Windows Server® ISO,然后以原生方式或通过 Docker® 安装。

hetzner.de(Cloud CX/CAX & 独立服务器)

云控制台 · x64 & Ampere ARM64
  1. 新客户的端口 25 解封:新的 Hetzner Cloud 账户最初会阻止出站 25/465 端口;请在首张账单后通过 Cloud Console -> Limits 申请解封。
  2. 设置 IPv4 和 IPv6 PTR:在 Hetzner Cloud Console -> Networking -> Edit Reverse DNS 中,将主 IPv4 和 IPv6::1 都设置为 mail.yourdomain.de。
  3. 性价比提示:可在超高能效的 Hetzner CAX ARM64 实例上原生运行,并可直接搭配 Hetzner S3 对象存储。

ionos.de(VPS & 云服务器)

IONOS Cloud Panel · S3 Object Lock
  1. 开放外部 IONOS 防火墙:打开 IONOS Cloud Panel -> Network -> Firewall Policies,允许入站 TCP 25、80、443、465、587、993 和 4190。
  2. 配置反向 DNS:A 记录可解析后,在 Network -> Public IPs 下将反向 DNS 设置为 mail.yourdomain.de。
  3. 使用 IONOS S3 的 GoBD 归档:搭配位于法兰克福/柏林的 IONOS S3 对象存储,原生支持 S3 Object Lock(COMPLIANCE)。

ALL-INKL.COM(KAS DNS & 智能主机)

KAS DNS 工具 · 智能主机
  1. 方案 A(域在 ALL-INKL,nextxch 在自有 VPS 上):在 ALL-INKL KAS -> Tools -> DNS Tools 中,将 mail 的 A/AAAA 记录和 MX 指向您的 nextxch IP,并添加 SPF/DKIM/DMARC TXT 记录。
  2. 方案 B(nextxch 部署在办公室 / NAS 上,以 ALL-INKL 作为发送中继):在动态 IP 后的办公室 NAS/Proxmox® 上运行 nextxch?请将 w01abc.kasserver.com:587 配置为 Smtp__OutboundSmartHost,并在 SPF 中添加 include:_spf.kasserver.com。

Hostinger(KVM VPS & hPanel)

hPanel · KVM 2 / KVM 4
  1. 在 VPS 区域设置 PTR 记录:在 Hostinger hPanel -> VPS -> IP Addresses 中,将 PTR 记录设置为 mail.yourdomain.de。
  2. 注意端口 25 / 中继:请确认您的 KVM 套餐已解除出站端口 25 的限制,或在 nextxch 中配置经过身份验证的端口 587 智能主机。
  3. hPanel DNS 管理:在 hPanel DNS Zone Editor 中,将默认 MX 条目替换为 mail.yourdomain.de,并添加您的 SPF/DKIM/DMARC TXT 记录。

Strato(V-Server Linux®/Windows® & 独立服务器)

STRATO 服务器登录 · Windows® & Linux®
  1. 非常适合不使用 Docker® 的 Windows Server®:在 STRATO Windows® V-Server 上,使用上方的 PowerShell® 命令直接安装为原生 Windows® 服务。
  2. 在 STRATO Server-Login 中设置反向 DNS:在 STRATO Server Login -> IP Addresses 中,将 IPv4 和 IPv6 的反向 DNS 设置为 mail.yourdomain.de。
  3. STRATO 域管理:在 STRATO Domain Management -> DNS Settings 中,将 MX 切换为自定义邮件服务器 (mail.yourdomain.de) 并添加 TXT 记录。

OVHcloud(VPS、独立服务器与 Public Cloud)

OVHcloud Control Panel · 欧盟 S3 WORM
  1. OVHcloud PTR 的重要顺序:OVHcloud 在接受 PTR 变更前会校验正向 DNS:请先为 mail.yourdomain.de 创建 A 和 AAAA 记录,再在 Network -> Public IPs 下设置反向 DNS。
  2. 网络防火墙 & S3 Object Lock:在 OVHcloud Edge Network Firewall 中放行邮件端口,并可选择接入 OVHcloud S3 Object Storage(林堡/斯特拉斯堡),实现不可篡改的 GoBD WORM 归档。