# Email Unlimit - 轻量级、可自托管的临时邮件解决方案 本项目是一个轻量级的、可自托管的临时邮件解决方案。它允许您使用自己的域名接收邮件,并通过一个简洁的网页界面来查看这些邮件。 与 `Mailu` 等复杂的邮件套件不同,本项目采用了一个极简的 Node.js 服务来直接接收和处理邮件,部署和维护都非常简单。 **在线体验:** [http://mail.shenjianl.cn](http.shenjianl.cn) **网站截图**: ![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) 文件。