只做收件 · 自建部署 · 300W+ 邮箱量

XMmail 使用文档

XMmail 是面向海量收件场景设计的自建邮箱系统,聚焦“只收不发”。文档基于当前项目能力整理,适用于部署上线、后台日常管理、第三方查询接入与问题排查。

Go 1.24 主程序运行环境
SQLite / MySQL 双数据库模式
SMTP · IMAP · POP3 收件服务与访问能力

测试与访问入口

可先通过演示地址熟悉系统结构,再进行本地或服务器部署。演示信息建议仅用于测试体验。

按宝塔面板流程完成 XMmail 部署

XMmail 支持按宝塔面板方式快速落地。推荐部署顺序为:安装面板、上传项目文件、添加并启动 Go 项目、提交机器码完成授权、开放服务端口,最后通过前后台地址完成联通性验证。

部署方式 宝塔面板 + Go 项目
授权步骤 日志获取机器码后提交授权
上线检查 开放端口并验证前后台访问
标准部署步骤
1
安装宝塔面板

先在服务器安装宝塔面板,通过面板统一管理项目目录、运行环境、日志与端口策略。官方下载入口可使用 https://www.bt.cn/new/download.html

2
上传文件并添加 Go 项目

在宝塔文件管理中选择根目录或新建项目目录,上传 XMmail 文件。随后进入网站 / 项目管理,选择 Go 项目 并完成项目添加。

3
启动服务并完成授权

项目添加完成后先启动服务,再进入项目日志查看机器码,并将该机器码提交给管理员完成授权。授权完成后,再放行端口并访问系统进行验证。

部署流程说明
  1. 安装宝塔面板并完成基础初始化。
  2. 在文件管理中选择根目录,或自行创建文件夹用于存放 XMmail 文件。
  3. 上传项目文件后,进入宝塔面板中的 Go 项目管理并添加项目。
  4. 项目添加完成后直接启动。
  5. 打开项目日志,复制其中显示的机器码并提交管理员完成授权。
  6. 在防火墙中开放 25 / 110 / 143 / 8080 端口。
  7. 访问后台 http://服务器IP:8080/admin/login 和前台 http://服务器IP:8080/ 检查服务状态。
  8. 如需绑定域名,可在后续通过反向代理方式接入。
部署要点
  • 项目启动后需要先从项目日志中获取机器码,再进入授权流程。
  • 建议按 25、110、143、8080 端口完成放行,确保收件与后台访问正常。
  • 后台访问地址为 http://服务器IP:8080/admin/login
  • 前台访问地址为 http://服务器IP:8080/
  • 需要绑定域名时,可通过反向代理接入现有访问域名。
  • 如需获取源码与进一步部署资料,可按现有渠道联系项目管理员。
上线核查项
  • 宝塔面板已安装,项目目录已创建并上传完整文件。
  • Go 项目已在宝塔中添加并成功启动。
  • 项目日志中的机器码已提交,授权状态正常。
  • 25 / 110 / 143 / 8080 端口已在防火墙放行。
  • 后台地址与前台地址均可正常打开。
  • 如需对外域名访问,已补充反向代理配置。
DB_TYPE=sqlite
DB_DATABASE=data.db

# 切换 MySQL 时可配置以下字段
# DB_TYPE=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_USER=root
# DB_PASSWORD=your_password
# DB_DATABASE=xmmail
# DB_CHARSET=utf8mb4
# 启动后默认服务端口
SMTP      : 25
IMAP      : 143
POP3      : 110
管理服务  : 8000
Web 后台  : 8080

后台地址 : http://localhost:8080/admin/login
邮箱页   : http://localhost:8080
部署建议
  • 生产环境优先确认 25 / 110 / 143 / 8080 端口已放行。
  • 域名接入前先完成 A / MX 解析配置,再创建域名和邮箱。
  • 高并发场景建议优先使用 MySQL 模式,便于连接池与多实例扩展。
数据库说明
  • SQLite 模式默认启用 WAL、busy_timeout 与缓存参数。
  • MySQL 模式默认设置更高连接池,适合更大规模收件负载。
  • 程序启动时会自动创建域名、邮箱、消息、临时邮箱、Token 与日志相关表。

围绕收件流程设计的后台工作台

Web 后台入口为 /admin/login。登录后可进入仪表板、邮箱管理、域名管理、实时邮箱、临时邮箱、安全中心、收件日志、品牌设置等模块。

1. 仪表板

查看邮箱总数、域名总数、邮件总数,并从快捷入口进入管理邮箱、管理域名、批量创建与实时邮箱页面。

2. 域名管理

新增域名、批量导入、批量删除,支持泛邮箱、DNS 提示以及“允许临时邮箱”开关。

3. 邮箱管理

支持搜索、按域名筛选、区分正常邮箱 / 临时邮箱、批量改密、导出与批量删除。

4. 实时邮箱

三栏式结构:左侧域名,中间邮箱 / 邮件列表,右侧邮件详情与附件下载,适合快速查看收件状态。

5. 临时邮箱

提供即时生成、自动过期、倒计时与邮件自动刷新能力,适用于注册验证、测试回执等场景。

6. 收件安全与日志

通过黑白名单、关键字拦截与账户收件控制管理风险;通过收件日志按协议、主题、发件人筛查问题。

推荐使用顺序
  1. 先添加域名,完成 DNS 解析。
  2. 再批量创建或导入邮箱。
  3. 通过实时邮箱检查新邮件是否正常进入。
  4. 需要外部查询时,再配置 Token 授权或验证码提取链接。
重点模块说明
  • 安全中心可按账户维度控制是否继续收件。
  • 品牌设置可自定义登录页 Logo 与工作台视觉。
  • 后台还提供更新页、API 文档页与管理员密码修改功能。

支持后台接口、授权查询与验证码提取

系统同时提供后台接口与外部调用能力。后台页面主要使用 /admin/api/* 接口;外部查询场景可结合 Token 授权、临时邮箱接口与验证码提取链接使用。

GET
/admin/api/domains/list

后台域名列表接口,实时邮箱左侧域名列表与域名管理页面会使用该类接口获取数据。

GET
/admin/api/realtime/emails

按域名获取邮箱列表,用于实时邮箱三栏查看器的中间列数据。

GET
/admin/api/realtime/mails

获取指定邮箱的邮件列表,适合用于收件状态检查与邮件轮询查看。

GET
/admin/api/realtime/mail/{id}

获取单封邮件详情,包含正文与附件下载入口,适合内部业务查信使用。

POST
/api/temp-mail/generate

生成临时邮箱;配套还有 /api/temp-mail/mails/api/temp-mail/mail/{id} 等接口。

GET
/api/extract-output

结合后台创建的验证码提取链接使用,对外输出指定邮箱的提取结果,适合自动化接码场景。

Token 授权查询

系统内置 xm_query_tokens 与查询日志结构,可为第三方系统分配 Token、设置每日限额,并记录访问行为。适合将邮件查询能力有限度开放给业务侧。

验证码提取

后台可创建提取链接规则,系统会将来源邮箱、提取规则、输出结果与访问次数记录到独立表中,适用于验证码提取与内容采集场景。

典型接入思路
1. 业务系统创建邮箱或使用临时邮箱接口生成地址
2. 外部服务向该地址发送邮件
3. XMmail 通过实时邮箱或查询接口读取收件结果
4. 若是验证码场景,可直接使用提取链接输出验证码内容
5. 若需审计,可在收件日志与查询日志中回溯访问行为

部署与使用中常见问题排查

下面列的是搭建自建收件邮箱系统时最常见的几个问题,建议优先按这些方向排查。

为什么启动后收不到邮件?

先检查域名 A / MX 解析是否正确,再检查 25 端口是否开放、服务是否已启动,以及目标邮箱是否被设置为禁止收件。

SQLite 和 MySQL 该怎么选?

测试、小规模部署可先用 SQLite;海量邮箱、高并发、需要更强扩展能力时,建议切换 MySQL。

实时邮箱没有显示最新邮件?

检查后台登录状态是否有效,确认目标域名 / 邮箱已创建,并查看收件日志确认邮件是否已写入系统。

临时邮箱适合哪些场景?

适合注册验证、回执测试、验证码采集等短时收件场景;正式长期邮箱建议走正常邮箱管理流程。

接口对外开放时要注意什么?

建议只暴露必须的查询接口,配合 Token、限额、访问日志使用,不要直接将后台认证接口暴露给第三方。

如何确认系统是否正常运行?

可依次检查后台是否可登录、实时邮箱是否可读取、收件日志是否新增记录、临时邮箱与提取链接是否返回结果。