超详细Billion Mail离线部署指南:无互联网环境下的完整安装方案
你是否曾因服务器无法连接互联网而无法部署邮件营销平台?Billion Mail作为一款未来开源的电子邮件营销平台,提供了灵活的离线部署方案。本文将详细介绍在无网络环境下安装Billion Mail的完整流程,包括准备工作、环境配置、安装步骤和验证方法,让你在没有网络的情况下也能轻松搭建专业的邮件营销系统。
读完本文后,你将能够:
- 准备离线部署所需的所有文件和资源
- 配置Billion Mail的离线安装环境
- 执行离线安装脚本并解决常见问题
- 验证部署结果并确保系统正常运行
准备工作
在开始离线部署前,需要准备以下文件和资源。请确保你已经从有网络的环境中下载了所有必要的安装包和配置文件。
必要文件清单
Billion Mail的离线部署需要以下关键文件,这些文件可以在项目仓库中找到:
- 安装脚本:install.sh - 用于执行安装流程的主脚本
- Docker Compose配置:docker-compose.yml - 定义服务组件和网络配置
- 环境变量初始化脚本:env_init - 用于生成环境变量配置
- 数据库初始化脚本:init.sql - 用于初始化PostgreSQL数据库
- 配置文件目录:conf/ - 包含所有服务的配置文件模板
硬件和系统要求
Billion Mail对服务器有以下最低要求:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核或更高 |
| 内存 | 4GB RAM | 8GB RAM |
| 存储空间 | 20GB 可用空间 | 50GB SSD |
| 操作系统 | Linux (64位) | Ubuntu 20.04 LTS 或 CentOS 8 |
| 架构 | x86_64 或 aarch64 | x86_64 |
注意:Billion Mail不支持32位系统,安装脚本会在开始时检查系统架构。如install.sh第40-44行所示:
if [[ ! " ${SUPPORTED_ARCHS[@]} " =~ " ${CPU_architecture} " ]]; then echo -e "\033[31mSorry, not support the ${CPU_architecture} architecture for install. \nPlease use the x86_64, aarch64 server architecture. \033[0m" exit 1 fi
部署步骤
步骤1:传输文件到目标服务器
将所有必要文件复制到目标服务器的部署目录。假设我们将文件复制到/opt/billionmail目录:
# 在目标服务器上创建部署目录
mkdir -p /opt/billionmail
# 从本地机器复制文件(在有网络的机器上执行)
scp -r install.sh docker-compose.yml env_init init.sql conf/ user@target-server:/opt/billionmail/
步骤2:准备Docker镜像
Billion Mail使用Docker容器化部署,需要预先加载所有必要的Docker镜像。在有网络的环境中,可以使用以下命令保存镜像:
# 拉取所需镜像
docker pull postgres:17.4-alpine
docker pull redis:7.4.2-alpine
docker pull billionmail/rspamd:1.2
docker pull billionmail/dovecot:1.5
docker pull billionmail/postfix:1.6
docker pull roundcube/roundcubemail:1.6.10-fpm-alpine
docker pull billionmail/core:4.6.1
# 保存镜像到文件
docker save -o billionmail-images.tar postgres:17.4-alpine redis:7.4.2-alpine billionmail/rspamd:1.2 billionmail/dovecot:1.5 billionmail/postfix:1.6 roundcube/roundcubemail:1.6.10-fpm-alpine billionmail/core:4.6.1
将生成的billionmail-images.tar文件传输到目标服务器,然后加载镜像:
# 在目标服务器上加载镜像
docker load -i billionmail-images.tar
步骤3:配置环境变量
运行环境变量初始化脚本生成.env文件,该文件包含所有必要的配置参数:
# 进入部署目录
cd /opt/billionmail
# 使初始化脚本可执行
chmod +x env_init
# 运行初始化脚本,生成.env文件
./env_init
注意:env_init脚本会提示你输入一些必要的配置信息,如邮件服务器域名、时区等。如果不手动输入,脚本会使用默认值,如install.sh第120-122行所示:
if [ -z "${BILLIONMAIL_HOSTNAME}" ]; then BILLIONMAIL_HOSTNAME="example.com" fi
步骤4:执行离线安装
使用install.sh脚本执行离线安装。由于是离线环境,需要添加--offline参数跳过网络检查和下载步骤:
# 使安装脚本可执行
chmod +x install.sh
# 执行离线安装
./install.sh --offline
安装过程会执行以下操作:
- 检查系统架构和依赖
- 配置Docker网络和存储卷
- 启动所有服务容器
- 初始化数据库
- 配置Postfix和Dovecot服务
安装脚本会自动处理大多数配置,但在某些情况下可能需要手动干预。详细安装流程可以查看install.sh的源代码。
步骤5:启动服务
安装完成后,可以使用Docker Compose启动所有服务:
# 使用docker-compose启动服务
docker-compose up -d
这会启动以下服务容器,如docker-compose.yml中定义:
pgsql-billionmail:PostgreSQL数据库服务redis-billionmail:Redis缓存服务rspamd-billionmail:Rspamd垃圾邮件过滤服务dovecot-billionmail:Dovecot IMAP/POP3服务postfix-billionmail:Postfix SMTP服务webmail-billionmail:Roundcube Webmail服务core-billionmail:Billion Mail核心管理服务
验证部署
检查服务状态
使用以下命令检查所有Docker容器是否正常运行:
# 查看容器状态
docker-compose ps
正常情况下,所有服务的状态都应显示为"Up"。如果有服务未正常启动,可以查看日志排查问题:
# 查看特定服务的日志,例如core服务
docker-compose logs core-billionmail
访问管理界面
打开浏览器,访问服务器的IP地址或域名(根据你在env_init中配置的值):
http://服务器IP地址
或
https://服务器IP地址
你应该能看到Billion Mail的管理登录界面。初始管理员账户凭据会在安装过程中生成并显示,也可以在billionmail.conf文件中找到:
# 查看管理员凭据
cat billionmail.conf | grep -i admin
测试邮件发送功能
登录管理界面后,可以通过以下步骤测试邮件发送功能:
- 导航到"邮件发送"菜单
- 创建一个简单的邮件模板
- 添加测试收件人邮箱
- 发送测试邮件
- 检查收件箱是否收到邮件
如果邮件发送失败,可以检查Postfix日志:
# 查看Postfix日志
tail -f logs/postfix/mail.log
常见问题解决
Docker服务启动失败
如果Docker服务无法启动,可能是由于SELinux或AppArmor限制。可以尝试以下解决方案:
# 检查Docker服务状态
systemctl status docker
# 查看Docker日志
journalctl -u docker.service
如果日志中出现权限相关错误,可以临时禁用SELinux:
# 临时禁用SELinux
setenforce 0
或者在install.sh中找到Docker启动部分(第403-453行),检查是否有配置问题。
端口冲突问题
Billion Mail需要使用多个网络端口,如果这些端口已被其他服务占用,安装会失败。可以使用以下命令检查端口占用情况:
# 检查关键端口占用情况
netstat -tulpn | grep -E ":25|465|587|143|993|110|995"
如果发现冲突端口,可以在docker-compose.yml中修改相应服务的端口映射,例如修改SMTP端口:
services:
postfix-billionmail:
ports:
- "2525:25" # 将主机端口2525映射到容器端口25
数据库连接问题
如果应用无法连接数据库,可能是数据库凭据配置错误。可以检查.env文件中的数据库配置:
# 查看数据库配置
cat .env | grep -E "DBUSER|DBNAME|DBPASS"
确保这些值与init.sql中创建的数据库用户和密码匹配。
总结与后续步骤
恭喜!你已经成功在无互联网环境下部署了Billion Mail邮件营销平台。以下是一些建议的后续步骤:
-
安全加固:
- 更新默认管理员密码
- 配置SSL/TLS证书(可以使用项目中的ssl-self-signed/目录生成自签名证书)
- 配置防火墙,只开放必要端口
-
系统监控:
- 设置日志轮转,防止日志文件过大
- 监控服务器资源使用情况
- 配置服务健康检查告警
-
数据备份:
- 定期备份PostgreSQL数据库
- 备份重要配置文件
- 制定灾难恢复计划
Billion Mail的更多高级功能和配置选项可以参考项目文档和配置文件:
如有任何问题或需要进一步的帮助,请查看项目的SECURITY.md文档或提交issue获取支持。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00