一、BillionMail 是什么?

入门

电子邮件营销是很多企业和个人推广产品、维系客户的重要方式。但市面上的邮件营销服务(如 Mailchimp、SendGrid)通常按月收费,而且发送量越大费用越高。如果你不想被这些平台绑定,又希望拥有自己的邮件发送系统,BillionMail 就是一个合适的选择。

BillionMail 是一套开源的邮件服务器(相当于你自己架设一个"邮局",不再依赖第三方发信服务)和邮件营销平台。它把邮件发送、新闻通讯(定期向订阅用户发送的邮件)、营销活动管理、数据统计等功能整合在一个界面里。你只需要一台服务器,就能完全掌控自己的邮件系统,没有月费,也没有发送量限制。

这套系统由 Go 语言编写,底层集成了 Postfix(负责实际发送邮件的引擎)、Dovecot(负责接收和存储邮件的引擎)和 Rspamd(垃圾邮件过滤引擎)等成熟组件。不过你不需要了解这些组件的具体用法——BillionMail 已经把它们的配置都打包好了。

一句话理解:BillionMail 就像把你的电脑变成一个小型"邮局",你可以在里面管理联系人、设计邮件、批量发送,还能查看每封邮件的打开率和点击率。

二、快速部署:8 分钟装好你的邮件系统

入门

开始之前,你需要准备以下条件:

  • 一台 Linux 服务器(建议 Ubuntu 22.04 或 Debian 12),配置至少 2GB 内存和 20GB 硬盘。为什么需要服务器而不是自己的电脑?因为邮件服务器需要公网 IP 地址(相当于你在互联网上的门牌号),并且要 24 小时在线,普通家用电脑很难满足。
  • 一个域名(如 example.com),用于发送和接收邮件。没有域名的话,你的邮件会被各大邮箱服务商标记为垃圾邮件。
  • SSH 终端工具(如 Windows 自带的 Terminal 或 Mac 的终端),用于远程连接服务器执行命令。

方式一:一键脚本安装(推荐新手)

登录服务器后,依次执行以下三条命令:

cd /opt
git clone https://github.com/aaPanel/BillionMail
cd BillionMail
bash install.sh

安装过程大约需要 8 分钟。脚本会自动安装 Docker(一种把软件打包成"集装箱"、随处可运行的工具)、拉取所有必要的组件并完成初始配置。安装完成后,终端会显示管理后台的登录地址和默认账号密码。

方式二:Docker Compose 手动部署

如果你已经安装了 Docker 和 Docker Compose(管理多个 Docker 容器的工具),也可以手动部署:

cd /opt
git clone https://github.com/aaPanel/BillionMail
cd BillionMail
cp env_init .env
docker compose up -d

如果提示 docker compose 命令不存在,改用:

docker-compose up -d

建议在安装前确保服务器时间准确(运行 date 命令查看),邮件系统对时间同步要求很高,时间不准会导致邮件发送失败。

验证安装是否成功

安装完成后,在浏览器中访问 http://你的服务器IP:端口(端口号在安装完成后的提示信息中)。如果看到登录页面,说明安装成功。你也可以先用官方演示环境体验功能:访问 https://demo.billionmail.com/billionmail,账号密码都是 billionmail

BillionMail 控制台界面

三、配置域名与 DNS 记录

进阶 · 推荐细读

安装完成后,最关键的一步是把你的域名连接到 BillionMail。这一步决定了你的邮件能否被正常发送和接收。

添加发送域名

登录管理后台后,找到「域名管理」或「Domains」入口,点击「添加域名」,输入你的域名(如 mail.example.com)。系统会生成一组 DNS 记录(域名系统记录,相当于告诉互联网"这个域名的邮件归谁管"的通讯录条目),包括:

  • MX 记录:指定哪个服务器负责接收该域名的邮件
  • SPF 记录:声明哪些服务器有权限代表该域名发送邮件
  • DKIM 记录:给邮件加数字签名,防止被伪造
  • DMARC 记录:告诉其他邮件服务器如何验证你的邮件

在域名服务商处配置

登录你的域名注册商(如阿里云、腾讯云、Namecheap)的管理控制台,找到 DNS 管理页面。把 BillionMail 后台显示的各条记录逐一添加进去。每条记录包含类型(如 TXT、MX)、主机记录(如 @mail)和记录值(一串长字符串)。

建议按顺序添加:先加 MX 和 SPF,再加 DKIM,最后加 DMARC。每条记录生效需要 5 分钟到 2 小时不等,耐心等待。

验证 DNS 是否生效

在 BillionMail 后台点击「验证」按钮。如果显示验证失败,可以用命令行工具检查:

dig MX example.com
dig TXT example.com

其中 example.com 替换成你的域名。如果返回结果中包含你添加的记录值,说明 DNS 已生效。

配置完成后,BillionMail 会自动为你的域名申请免费的 SSL 证书(HTTPS 加密证书,确保邮件传输过程不被窃听),无需手动操作。

四、功能导览:从发信到追踪

入门

BillionMail 的核心功能围绕"邮件营销"这条主线展开,整个流程可以概括为三个步骤。

创建联系人列表

在「联系人」或「Lists」模块中,你可以新建列表(比如"老客户""潜在客户"),然后手动添加邮箱地址,或者通过 CSV 文件(一种用逗号分隔数据的表格文件)批量导入。

注意:导入的联系人必须是主动订阅过你邮件的人。向未授权用户发送营销邮件违反反垃圾邮件法规,可能导致你的 IP 被各大邮箱服务商拉黑。

设计邮件内容

在「营销活动」或「Campaigns」模块中,点击「新建活动」。你可以选择:

  • 富文本编辑器:像写 Word 文档一样排版,支持插入图片、按钮、链接
  • HTML 编辑器:直接粘贴或编写邮件 HTML 代码(适合有前端基础的用户)
  • 使用模板:系统内置了多种邮件模板,选一个直接改文字即可

发送与追踪

邮件写好后,选择发送对象(一个或多个联系人列表),设置发送时间(立即发送或定时发送),点击「发送」。

发送完成后,进入「统计」或「Reports」页面,你可以看到:

  • 送达率:成功进入收件箱的比例
  • 打开率:收件人打开邮件的比例
  • 点击率:收件人点击邮件中链接的比例
  • 退信率:因地址无效等原因被退回的比例

这些数据会以图表形式展示,帮助你判断哪类邮件内容更受用户欢迎。

使用 WebMail 收发日常邮件

BillionMail 内置了 RoundCube 网页邮件客户端。在浏览器中访问 http://你的服务器IP/r 即可登录,用你在后台创建的邮箱账号和密码,就能像使用 Gmail 一样收发邮件、管理文件夹。

五、日常管理与维护

进阶 · 推荐细读

BillionMail 提供了一个管理脚本 bm,用于处理常见的运维任务。

查看帮助信息

bm help

查看默认登录信息

bm default

查看域名 DNS 记录

bm show-record

更新 BillionMail

bm update

更新前建议先备份数据。备份方式很简单:直接复制 Docker 的数据卷目录(通常在 /opt/BillionMail/data 下),或者用 Docker 的备份命令:

docker cp billionmail:/var/lib/mysql /opt/backup/mysql

设置反向代理与 HTTPS

如果你希望用 mail.example.com 这样的域名访问管理后台,而不是直接用 IP 加端口,可以配置反向代理(一种把外部请求转发给内部服务的工具)。推荐使用 Caddy 或 Nginx:

server {
    listen 443 ssl;
    server_name mail.example.com;

    location / {
        proxy_pass http://127.0.0.1:端口号;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

配置完成后,你就可以通过 https://mail.example.com 安全地访问管理后台了。

六、常见问题排查

入门

邮件被判定为垃圾邮件

这是自建邮件服务器最常见的问题。建议依次检查:

  • SPF、DKIM、DMARC 三条 DNS 记录是否全部配置正确
  • 服务器 IP 是否被列入了黑名单(可以在 mxtoolbox.com 查询)
  • 发送频率是否过高(建议新服务器前两周每天不超过 200 封)

端口被占用

如果安装时提示端口冲突,可以修改 /opt/BillionMail/.env 文件中的端口映射,把 80:80 改成 8080:80,然后重启服务:

docker compose restart

邮件发送失败

查看邮件日志定位问题:

docker logs billionmail-postfix

日志中如果显示 Connection timed out,通常是服务器的 25 端口(SMTP 端口)被云服务商封禁。阿里云、腾讯云等国内厂商默认封禁 25 端口,需要提交工单申请解封。

忘记管理后台密码

使用管理脚本重置:

bm reset-password

七、项目活跃度参考

深入 · 老手可选

BillionMail 在 GitHub 上拥有超过 1.5 万 Star,项目仍在持续更新中。如果你在考虑是否要采用这个项目,可以参考它的发展轨迹:

BillionMail Star 增长趋势

Star 数量的增长反映了社区对该项目的认可程度。不过,自建邮件系统本身需要一定的服务器运维能力,建议先在演示环境(demo.billionmail.com)上熟悉功能,再决定是否部署到生产服务器。

如果你在部署过程中遇到问题,可以加入项目的 Discord 社区(https://discord.gg/asfXzBUhZr)寻求帮助,那里有开发者和其他用户在线解答。

项目信息

项目
仓库 Billionmail/BillionMail
语言 Go
Star 15,484
Fork 1,682
主页 http://www.billionmail.com/

参考链接

延伸阅读

想继续探索?这些同领域的教程可能也适合你: