免费获取学习方案
ARTICLE DETAIL

资讯详情

深耕编程基础知识与建站技术分享的一线实战洞察。

Stalwart 邮件服务器 Docker 部署:3 步跑通

Stalwart 邮件服务器 Docker 部署:3 步跑通 Stalwart 邮件服务器 Docker 部署3 步跑通【免费下载链接】stalwartAll-in-one Mail Collaboration server. Secure, scalable and fluent in every protocol (IMAP, JMAP, SMTP, CalDAV, CardDAV, WebDAV).项目地址: https://gitcode.com/GitHub_Trending/ma/stalwart自建邮件服务常常令人抓狂MTA、IMAP、反垃圾各是一套进程配完依然收发失败。Stalwart 是用 Rust 编写的邮件与协作服务器SMTP、IMAP、JMAP、POP3、CalDAV/CardDAV 全部整合在一个进程里。跟着本文走一遍你能用 Docker Compose 在 10 分钟内跑起一个可逐项验收的邮件服务。为什么选 Stalwart邮件加协作单进程搞定特性说明单进程单二进制SMTP、IMAP4、POP3、JMAP、ManageSieve、CalDAV/CardDAV、WebDAV 全在同一进程省去 Postfix 加 Dovecot 的多组件协调Rust 编写内存安全、无外部运行时依赖官方镜像内置 SQLite、PostgreSQL、MySQL、RocksDB、S3、Redis 等存储后端内置反垃圾与邮件认证DKIM、SPF、DMARC、ARC 直接集成在 SMTP 里过滤引擎含统计分类、DNSBL、灰名单、反钓鱼Web 管理控制台账户、域名、投递队列、日志、TLS 证书都在 8080 端口管理不用手改配置文件可扩展到集群单机可跑多节点支持 Kafka、Redis、NATS 协调兼容 Kubernetes 与 Docker Swarm 部署前检查清单硬件、端口与域名动手前把下面几条确认掉任何一条遗漏都会让后续排错时间超过部署本身安装 Docker 20.10 与 Compose v2x86_64 或 ARM64 均可放行端口 25、465、993、995、8080防火墙一并检查准备至少 2GB 内存、20GB 磁盘空间申请一个域名用于生产邮件本地测试可用自签证书确认本机 25 端口未被 postfix 等其他服务占用首次启动时 Stalwart 运行在 bootstrap 模式会自动生成默认监听器smtp:25、submission:465、imaps:993、pop3s:995、sieve:4190以及 http:8080 与 https:443。其中 443 需要证书才能正常提供服务所以下面的最小化部署只映射已能工作的端口443 留到配好证书后再开。 三步跑起来最小化 Docker Compose 启动命令第 1 步创建数据目录。把配置与数据分别放进两个目录后面备份和迁移都只碰这两个路径。mkdir -p stalwart/etc stalwart/var第 2 步编写 docker-compose.yml。只写端口映射和两个卷其余全部留到启动后的控制台里做把文件放在stalwart/目录内。services: stalwart: image: stalwartlabs/stalwart:latest restart: unless-stopped ports: - 25:25 # SMTP 接收 - 465:465 # SMTPS 提交 - 993:993 # IMAPS - 995:995 # POP3S - 8080:8080 # Web 管理控制台 volumes: - ./etc:/etc/stalwart # 配置目录 - ./var:/var/lib/stalwart # 数据目录第 3 步启动并取出初始密码。首次启动会打印一个随机的管理员密码到日志这是进入控制台的唯一钥匙错过就翻日志找。docker compose up -d docker compose logs stalwart | grep -A8 bootstrap mode判定标准输出里能看到admin账户及对应临时密码抄下来备用日志里不会第二次完整显示。✅ 验收验证健康检查、初始密码与控制台登录三个动作从轻到重每一步都有明确的成功判定标准查容器健康状态执行docker compose ps。判定标准STATUS 列显示Up (healthy)镜像内置了健康检查每 30 秒探测一次/healthz/live。探活健康端点执行curl -s http://localhost:8080/healthz/live。判定标准返回 HTTP 200若是连接拒绝回头检查 8080 端口映射。登录控制台并打通邮件协议浏览器打开http://服务器IP:8080/admin用第 3 步的密码登录。判定标准能看到带实时统计的仪表盘随后新建一个域名和一个账户再执行openssl s_client -connect 服务器IP:993 -quiet收到* OK欢迎横幅即证明 IMAPS 服务可用。⚙️ 生产调优存储、加密与备份三个关键点只讲最影响稳定性的三件事按优先级排列。1. 备份数据持久化。邮件数据、全文索引与注册表都在/var/lib/stalwart配置在/etc/stalwart两者合起来就是一条 tarcd stalwart tar -czf backup-$(date %F).tar.gz etc var把这条命令挂进 cron 定期执行恢复时解压回原目录再docker compose up -d即可。2. 加密TLS 证书。465、993、995 这些监听器默认走隐式 TLS首启时没有证书它们不会工作。登录控制台后在证书页面上传域名的 PEM 证书或启用 ACME 让服务器自动申请并续期。同时用环境变量固定对外标识这两个变量官方镜像都会读取environment: - STALWART_HOSTNAMEmail.example.com - STALWART_PUBLIC_URLhttps://mail.example.com3. 存储后端。单机起步用内置后端即可账户量上来后到控制台的存储设置里切换到 PostgreSQL 或 MySQL无需手改文件。计划多节点部署时用 Redis 或 NATS 做集群协调镜像已包含这些后端切好后端再扩容不会推倒重来。⚠️ 踩坑清单现象、原因与对策现象管理员密码忘了进不了控制台。原因初始密码是随机生成的只在启动日志里出现一次。对策用第 3 步的 grep 命令翻日志或在 compose 里追加STALWART_RECOVERY_ADMINadmin:密码固定凭据后重启。现象容器健康但 443 端口连不通。原因HTTPS 监听器需要证书才会启动首次部署还没有证书。对策属预期行为。控制台上传证书或开启 ACME 后再放行 443本地测试直接用 8080。现象邮件客户端连接 993 或 465 报证书错误。原因客户端填的服务器地址与证书中的域名不匹配。对策把客户端服务器地址改成证书对应的域名自签证书需额外导入客户端信任。现象容器重建后邮件数据丢失。原因数据写在容器内/var/lib/stalwart而该目录没有挂载。对策补上第 2 步的两行 volumes并把旧数据目录迁到挂载点再启动。现象对外发信收不到或全部进垃圾箱。原因域名缺少 MX、SPF、DKIM 记录。对策在控制台域名页生成对应 DNS 记录并发布到域名服务商再回控制台验证。收尾下一步行动建议Stalwart 把整套邮件栈压缩进一个容器三条命令启动控制台日常运维一条命令备份这就是从零到可用邮件服务的最短路径。下一步行动建议登录后先创建域名并发布 DKIM 与 SPF 记录接一台真实邮件客户端收发一封测试信跑通闭环立刻执行一次 tar 备份命令建立第一份数据快照延伸阅读可看项目说明 README.md、镜像构建与健康检查定义 Dockerfile、原生安装脚本环境变量参考install.sh以及集成测试环境证书与 DNS 的参考配置tests/docker/。【免费下载链接】stalwartAll-in-one Mail Collaboration server. Secure, scalable and fluent in every protocol (IMAP, JMAP, SMTP, CalDAV, CardDAV, WebDAV).项目地址: https://gitcode.com/GitHub_Trending/ma/stalwart创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表