email-unlimit/README.md

124 lines
5.1 KiB
Markdown
Raw 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 服务来直接接收和处理邮件,部署和维护都非常简单。
## 技术架构
* **前端 (Frontend)**: 使用 Vue.js 构建的单页面应用,负责展示收到的邮件列表。
* **后端 (Backend)**:
* 使用 Node.js 和 Express 搭建的 API 服务器。
* 内置一个轻量级的 SMTP 服务器 (`smtp-server`),用于直接接收邮件,无需外部邮件服务。
* 负责将收到的邮件解析并存入数据库。
* **数据库 (Database)**: 需要一个外部的 MySQL 数据库来存储邮件信息。
* **部署 (Deployment)**: 后端服务通过 Docker Compose 进行容器化部署,前端静态文件由宿主机的 Nginx 提供服务。
## 部署要求
在开始之前<EFBFBD><EFBFBD>确保您已准备好以下环境
1. 一台拥有公网 IP 的 Linux 服务器。
2. 一个您自己的域名。
3. 服务器上已安装 `Docker``Docker Compose`
4. 服务器上已安装 `Nginx`
5. 一个可用的外部 MySQL 数据库,并已创建好数据库。
6. 本地开发环境已安装 `Node.js``npm` (用于构建前端)。
## 部署步骤
### 步骤 1: 配置域名 DNS
要让邮件能正确发送到您的服务器,您必须配置域名的 `MX` 记录。
1. 登录您的域名注册商(如 GoDaddy, Cloudflare 等)。
2. 找到 DNS 解析设置。
3. 添加一条 `MX` 记录:
* **类型 (Type)**: `MX`
* **名称 (Name/Host)**: `@` (代表您的根域名)
* **值 (Value/Points to)**: `您的服务器公网 IP 地址`
* **优先级 (Priority)**: `10`
> **注意**: DNS 记录生效可能需要几分钟到几小时。
### 步骤 2: 部署后端服务
1. 将本项目克隆或上传到您的服务器。
2. 进入项目根目录,编辑 `docker-compose.yml` 文件。
3. **填写您的外部数据库连接信息**
```yaml
services:
backend:
# ...
environment:
- DB_HOST=your_external_db_host # 替换为您的外部数据库主机名或IP
- DB_USER=your_external_db_user # 替换为您的数据库用户名
- DB_PASSWORD=your_external_db_password # 替换为您的数据库密码
- DB_NAME=your_external_db_name # 替换为您的数据库名称
```
4.`backend` 目录下有一个 `init.sql` 文件,请手动将其中的 SQL 命令在您的外部数据库中执行,以创建所需的表。
5. 在项目根目录,使用 Docker Compose 启动后端服务:
```bash
docker-compose up -d --build
```
此命令会构建并以后台模式启动后端容器。服务将监听服务器的 `5182` (API) 和 `25` (SMTP) 端口。
### 步骤 3: 构建和部署前端
1. **在您的本地开发机上**,进入 `frontend` 目录。
2. 安装依赖并构建静态文件:
```bash
npm install
npm run build
```
这将在 `frontend/dist` 目录下生成所有用于部署的静态文件。
3.`frontend/dist` 目录下的 **所有文件** 上传到您服务器的指定位置,例如 `/var/www/email-unlimit`
### 步骤 4: 配置宿主机 Nginx
1. 在服务器上,为您的应用创建一个 Nginx 配置文件,例如 `/etc/nginx/sites-available/email.conf`
2. 将以下配置写入该文件。请务必将 `your_domain.com``root` 路径修改为您自己的配置。
```nginx
server {
listen 443 ssl;
server_name mail.shenjianl.cn; # 替换为您的域名
ssl_certificate /usr/local/nginx/conf/ssl_certificate/mail/mail.shenjianl.cn_bundle.pem;
ssl_certificate_key /usr/local/nginx/conf/ssl_certificate/mail/mail.shenjianl.cn.key;
# 前端静态文件路径
root /data/email-unlimit/frontend/dist;
index index.html;
# 处理 Vue Router 的 history 模式
location / {
try_files $uri $uri/ /index.html;
}
# 将 /api 请求反向代理到后端 Docker 容器
location /api {
proxy_pass http://localhost:5182;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
```
3. 启用该配置并重启 Nginx
```bash
# 创建软链接
sudo ln -s /etc/nginx/sites-available/email.conf /etc/nginx/sites-enabled/
# 测试配置语法
sudo nginx -t
# 重启 Nginx
sudo systemctl restart nginx
```
## 如何使用
1. **访问您的网站**: 在浏览器中打开 `http://your_domain.com`
2. **发送测试邮件**: 使用任何邮箱客户端,向 `anything@your_domain.com` (例如 `test@your_domain.com`) 发送一封邮件。
3. **查看邮件**: 在网站上输入您刚刚使用的收件人地址 (`anything@your_domain.com`),点击查询,即可看到收到的邮件。