2026-08-02 15:07:16 +08:00
|
|
|
|
# NewSzxcn-Email
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
NewSzxcn-Email 是一个可自建、可管理、带完整 Webmail 与管理后台的开源邮箱系统。
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
[版本发布](https://github.com/zxyszx/NewSzxcn-Email/releases) · [部署文档](deploy/README.md) · [English](README.en.md)
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
## 主要功能
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
| 模块 | 能力 |
|
|
|
|
|
|
| --- | --- |
|
|
|
|
|
|
| Webmail | 收发邮件、草稿、附件、搜索、星标、标签、自定义文件夹、稍后提醒、导入与导出 |
|
|
|
|
|
|
| 邮箱管理 | 多邮箱切换、邮箱申请、暂停收信、账号级与邮箱级转发、外部 IMAP |
|
|
|
|
|
|
| 收信规则 | 多条件匹配、移动、标记、删除、转发、规则排序与应用到已有邮件 |
|
|
|
|
|
|
| 管理后台 | 账号、权限配额、域名、邮箱、转发、全部邮件、发送队列、系统设置 |
|
|
|
|
|
|
| 邮件服务 | Postfix、Dovecot、Rspamd、DKIM、IMAP、POP3、SMTP Submission |
|
|
|
|
|
|
| 安全 | 2FA、Turnstile、权限组、API Token、转发邮箱验证、SSRF 防护 |
|
|
|
|
|
|
| 运维 | Docker 单镜像部署、在线检查更新、页面一键更新、自动备份、命令行回滚 |
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
## 一键安装
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
支持 Debian / Ubuntu 的 `amd64` 与 `arm64` 服务器。建议至少 2 核、2 GB 内存,并准备一个已解析到服务器的邮件主机名,例如 `mail.example.com`。
|
2026-08-02 17:40:38 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
curl -fsSL https://raw.githubusercontent.com/zxyszx/NewSzxcn-Email/main/install.sh | sudo bash
|
|
|
|
|
|
```
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 22:39:51 +08:00
|
|
|
|
已使用 `root` 登录时,也可以使用:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
bash <(curl -fsSL https://raw.githubusercontent.com/zxyszx/NewSzxcn-Email/main/install.sh)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
脚本会自动完成:
|
|
|
|
|
|
|
|
|
|
|
|
- 安装或检查 Docker Engine 与 Docker Compose v2
|
2026-08-03 22:39:51 +08:00
|
|
|
|
- 首先选择仅开放必要端口、保留现有防火墙或开放全部端口
|
|
|
|
|
|
- 询问邮件域名、管理员用户名和密码;默认用户名为 `admin`,回车自动生成 12 位密码,自定义密码最少 6 位
|
|
|
|
|
|
- 选择自动 Nginx + SSL、宝塔/已有 Nginx 反代或 HTTP 测试模式
|
|
|
|
|
|
- 自动模式使用官方 `acme.sh` 签发和续期证书,不会强制停止占用 80 端口的进程
|
2026-08-03 16:16:20 +08:00
|
|
|
|
- 创建 `/opt/newszxcn-email` 持久化目录
|
|
|
|
|
|
- 拉取 GHCR 镜像并启动邮件服务
|
|
|
|
|
|
- 生成后台在线更新所需的内部鉴权令牌
|
|
|
|
|
|
- 等待 Web 与 API 健康检查通过
|
|
|
|
|
|
|
|
|
|
|
|
安装完成后访问配置的 `LANQIN_PUBLIC_BASE_URL`。首次登录后,在后台添加邮件域名并按照 DNS 检测页配置记录。
|
|
|
|
|
|
|
|
|
|
|
|
> 一键安装不会替你修改 DNS,也不能绕过云厂商对 25 端口的限制。公网收信前必须确认 25 端口可入站,公网发信前需确认 25 端口可出站。
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
## 更新与回滚
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
### 后台页面更新
|
|
|
|
|
|
|
|
|
|
|
|
超级管理员可点击后台侧栏中的版本号,查看当前版本、最新版本与更新日志。点击“立即更新”后,系统会先在线备份 SQLite 数据库,再拉取新镜像并重启;页面会等待服务恢复后自动刷新。
|
|
|
|
|
|
|
|
|
|
|
|
更新服务只在 Docker 内部网络开放,不映射公网端口。普通用户和普通后台权限组无法执行系统更新。
|
|
|
|
|
|
|
|
|
|
|
|
### 命令行更新
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-08-03 16:16:20 +08:00
|
|
|
|
sudo newszxcn-email update
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
命令行更新会保留当前镜像、备份数据库并执行健康检查。需要回滚时运行:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo newszxcn-email rollback
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
常用运维命令:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo newszxcn-email status
|
|
|
|
|
|
sudo newszxcn-email logs
|
2026-08-03 22:39:51 +08:00
|
|
|
|
sudo newszxcn-email restart
|
|
|
|
|
|
sudo newszxcn-email certificate
|
2026-08-03 16:16:20 +08:00
|
|
|
|
sudo newszxcn-email uninstall
|
|
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 22:39:51 +08:00
|
|
|
|
`uninstall` 会移除容器和自动生成的 Nginx 配置,但不删除 `/opt/newszxcn-email` 中的配置、证书、数据库与邮件。
|
2026-08-03 16:16:20 +08:00
|
|
|
|
|
|
|
|
|
|
## DNS 与端口
|
|
|
|
|
|
|
|
|
|
|
|
至少需要以下 DNS 记录:
|
|
|
|
|
|
|
|
|
|
|
|
| 类型 | 示例 | 用途 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| A / AAAA | `mail.example.com -> 服务器 IP` | 邮件主机与 Webmail |
|
|
|
|
|
|
| MX | `example.com -> mail.example.com` | 接收邮件 |
|
|
|
|
|
|
| SPF TXT | 后台生成 | 声明允许发信的服务器 |
|
|
|
|
|
|
| DKIM TXT | 后台按域名生成 | 邮件签名验证 |
|
|
|
|
|
|
| DMARC TXT | 后台生成建议值 | 发信策略与报告 |
|
|
|
|
|
|
|
|
|
|
|
|
服务器防火墙和云安全组应按需开放:
|
|
|
|
|
|
|
|
|
|
|
|
| 端口 | 协议 | 用途 |
|
|
|
|
|
|
| --- | --- | --- |
|
|
|
|
|
|
| 25 | TCP | SMTP 服务器间收发信 |
|
|
|
|
|
|
| 80 / 443 | TCP | Webmail 与证书签发 |
|
|
|
|
|
|
| 465 / 587 | TCP | 邮件客户端 SMTP 发信 |
|
|
|
|
|
|
| 993 | TCP | IMAP SSL |
|
|
|
|
|
|
| 995 | TCP | POP3 SSL |
|
|
|
|
|
|
|
|
|
|
|
|
## 数据目录
|
|
|
|
|
|
|
|
|
|
|
|
默认部署目录为 `/opt/newszxcn-email`:
|
|
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
|
/opt/newszxcn-email/
|
|
|
|
|
|
├── .env # 环境配置与内部更新令牌
|
|
|
|
|
|
├── docker-compose.yml # 邮箱主服务与内部更新服务
|
|
|
|
|
|
├── data/ # SQLite、附件和更新前备份
|
|
|
|
|
|
├── mail/ # Maildir 邮件原文
|
2026-08-03 22:39:51 +08:00
|
|
|
|
├── dkim/ # DKIM 私钥
|
|
|
|
|
|
└── certs/ # Web、SMTP、IMAP、POP3 共用的 TLS 证书
|
2026-08-03 16:16:20 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 22:39:51 +08:00
|
|
|
|
升级和重建容器不会删除这些目录。备份时应同时保存 `data`、`mail`、`dkim`、`certs` 与 `.env`。
|
2026-08-03 16:16:20 +08:00
|
|
|
|
|
|
|
|
|
|
## 手动部署
|
|
|
|
|
|
|
|
|
|
|
|
需要自行控制 Compose 配置时:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git clone https://github.com/zxyszx/NewSzxcn-Email.git
|
|
|
|
|
|
cd NewSzxcn-Email/deploy
|
2026-06-27 01:38:48 +08:00
|
|
|
|
cp .env.example .env
|
2026-08-03 16:16:20 +08:00
|
|
|
|
# 编辑 .env
|
|
|
|
|
|
docker compose pull
|
|
|
|
|
|
docker compose up -d
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
本地源码构建:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd deploy
|
|
|
|
|
|
docker compose -f docker-compose.yml -f docker-compose.build.yml up -d --build
|
2026-06-27 01:38:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
更完整的证书、外部 SMTP、Webhook 和排错说明见 [deploy/README.md](deploy/README.md)。
|
|
|
|
|
|
|
|
|
|
|
|
## 技术栈
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
- 后端:Go、Chi、SQLite
|
|
|
|
|
|
- 前端:React、TypeScript、TanStack Query、shadcn/ui、Tailwind CSS
|
|
|
|
|
|
- 邮件:Postfix、Dovecot、Rspamd
|
|
|
|
|
|
- 部署:Docker、Docker Compose、GitHub Actions、GHCR
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-02 15:07:16 +08:00
|
|
|
|
## 本地开发
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-08-02 15:07:16 +08:00
|
|
|
|
cd apps/api
|
|
|
|
|
|
go run ./cmd/server
|
2026-06-27 01:38:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
cd apps/web
|
2026-08-02 15:07:16 +08:00
|
|
|
|
pnpm install
|
|
|
|
|
|
pnpm run dev
|
2026-06-27 01:38:48 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
提交前建议运行:
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
```bash
|
|
|
|
|
|
cd apps/api && go test ./...
|
|
|
|
|
|
cd apps/web && pnpm run build
|
|
|
|
|
|
```
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
## 开源协议
|
2026-06-27 01:38:48 +08:00
|
|
|
|
|
2026-08-03 16:16:20 +08:00
|
|
|
|
[MIT](LICENSE)
|