email-unlimit/README.md

96 lines
4.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Email Unlimit - 轻量级、可自托管的临时邮件解决方案
本项目是一个轻量级的、可自托管的临时邮件解决方案。它允许您使用自己的域名接收邮件,并通过一个简洁的网页界面来查看这些邮件。
`Mailu` 等复杂的邮件套件不同,本项目采用了一个极简的 Node.js 服务来直接接收和处理邮件,部署和维护都非常简单。
**在线体验:** <a href="https://mail.shenjianl.cn" target="_blank">https://mail.shenjianl.cn</a>
**网站截图**
![sample.png](./sample.png)
## 技术架构
* **前端 (Frontend)**: 使用 Vue.js 构建的单页面应用,负责展示收到的邮件列表。
* **后端 (Backend)**:
* 使用 Node.js 和 Express 搭建的 API 服务器。
* 内置一个轻量级的 SMTP 服务器 (`smtp-server`),用于直接接收邮件,无需外部邮件服务。
* 通过 WebSocket 实现新邮件的实时推送。
* **数据库 (Database)**: 使用 MySQL 存储邮件信息,确保数据的安全性和持久性。
* **部署 (Deployment)**: 使用 Docker Compose 统一管理后端服务、数据库和 Nginx实现一键部署。
## 前置条件
在开始之前,请确保您已满足以下条件:
### 1. 硬件与域名
- 一台拥有公网 IP 的云服务器。
- 一个您自己的域名(建议已完成备案)。
### 2. 软件环境
- 服务器上已安装 [Docker 和 Docker Compose](https://docs.docker.com/get-docker/)。
- 本地开发环境已安装 [Node.js](https://nodejs.org/) (仅用于构建前端)。
### 3. 域名 DNS 配置
要让邮件能正确发送到您的服务器,您必须配置域名的 `A` 记录和 `MX` 记录。假设您的域名是 `example.com`,您希望用于收信的子域名是 `mail.example.com`
| 类型 | 主机记录/名称 | 记录值/指向 | 备注 |
| :--- | :--- | :--- | :--- |
| A | mail | `您的服务器公网 IP` | 将 `mail` 子域名指向您的服务器 |
| MX | @ | `mail.example.com` | 优先级设置为 10 |
> **注意**: DNS 记录生效可能需要几分钟到几小时。
### 4. 申请 SSL/TLS 证书
为了启用 HTTPS您需要为您的域名 `mail.example.com` 申请 SSL 证书。您可以从 Let's Encrypt、阿里云、腾讯云等证书颁发机构免费获取。
## 部署步骤
本部署方案使用 Docker Compose 统一管理所有服务Nginx, Backend, MySQL实现一键启动无需在宿主机上安装 Nginx 或其他依赖。
### 步骤 1: 获取并准备项目
将项目代码下载并解压到您的服务器,例如 `/data/email-unlimit` 目录。
### 步骤 2: 上传 SSL 证书
将您申请到的 SSL 证书文件(通常是 `.pem`/.`crt` 和 `.key` 文件)上传到项目的 `certs` 目录下 (`/data/email-unlimit/certs`)。
### 步骤 3: 构建前端静态文件 (本地环境)
1. 在您的**本地开发机**上,进入 `frontend` 目录,修改 `.env` 环境变量文件:
```env
VITE_APP_DOMAIN=example.com # 改为你的主域名
```
2. 安装依赖并构建:
```bash
cd frontend
npm install
npm run build
```
3. 将构建生成的 `dist` 目录(位于 `frontend/dist`**完整上传**到服务器的 `/data/email-unlimit/frontend` 目录下。
### 步骤 4: 修改 Nginx 配置 (服务器)
编辑项目根目录下的 `nginx.full.conf` 文件,仅需修改以下三项:
```nginx
server_name mail.example.com; # 改为您自己的域名
ssl_certificate /etc/nginx/certs/your_certificate.pem; # 改为您自己的证书文件名
ssl_certificate_key /etc/nginx/certs/your_certificate.key; # 改为您自己的密钥文件名
```
> **注意**: 配置文件中的证书路径 `/etc/nginx/certs/` 是容器内的路径,它会映射到宿主机的 `/data/email-unlimit/certs` 目录,请确保文件名正确。
### 步骤 5: 启动服务 (服务器)
在服务器的项目根目录 (`/data/email-unlimit`) 下执行以下命令:
```bash
# -f 指定使用 docker-compose.full.yml 配置文件,-d 表示后台运行
docker compose -f docker-compose.full.yml up -d
```
服务启动后,您可以通过 `docker compose -f docker-compose.full.yml logs -f` 查看实时日志。
## 如何使用
1. **访问您的网站**: 在浏览器中打开 `https://mail.example.com` (替换为您的域名)。
2. **发送测试邮件**: 使用任何邮箱客户端,向 `anything@example.com` (例如 `test@example.com`) 发送一封邮件。
3. **查看邮件**: 在网站首页的输入框中输入您刚刚使用的收件人地址 (`test@example.com`),点击查询,即可看到收到的邮件。
## 许可证
本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。