|
|
||
|---|---|---|
| backend | ||
| certs | ||
| frontend | ||
| .gitignore | ||
| GEMINI.md | ||
| README.md | ||
| compose.env | ||
| compose.full.env | ||
| docker-compose.build.yml | ||
| docker-compose.full.yml | ||
| docker-compose.yml | ||
| info.md | ||
| nginx.full.conf | ||
README.md
轻量级临时邮件项目 (Email Unlimit)
本项目是一个轻量级的、可自托管的临时邮件解决方案。它允许您使用自己的域名接收邮件,并通过一个简洁的网页界面来查看这些邮件。
与 Mailu 等复杂的邮件套件不同,本项目采用了一个极简的 Node.js 服务来直接接收和处理邮件,部署和维护都非常简单。
技术架构
- 前端 (Frontend): 使用 Vue.js 构建的单页面应用,负责展示收到的邮件列表。
- 后端 (Backend):
- 使用 Node.js 和 Express 搭建的 API 服务器。
- 内置一个轻量级的 SMTP 服务器 (
smtp-server),用于直接接收邮件,无需外部邮件服务。 - 负责将收到的邮件解析并存入数据库。
- 数据库 (Database): 需要一个外部的 MySQL 数据库来存储邮件信息。
- 部署 (Deployment): 后端服务通过 Docker Compose 进行容器化部署,前端静态文件由宿主机的 Nginx 提供服务。
部署要求
在开始之前,<EFBFBD><EFBFBD>确保您已准备好以下环境:
- 一台拥有公网 IP 的 Linux 服务器。
- 一个您自己的域名。
- 服务器上已安装
Docker和Docker Compose。 - 服务器上已安装
Nginx。 - 一个可用的外部 MySQL 数据库,并已创建好数据库。
- 本地开发环境已安装
Node.js和npm(用于构建前端)。
部署步骤
步骤 1: 配置域名 DNS
要让邮件能正确发送到您的服务器,您必须配置域名的 MX 记录。
- 登录您的域名注册商(如 GoDaddy, Cloudflare 等)。
- 找到 DNS 解析设置。
- 添加一条
MX记录:- 类型 (Type):
MX - 名称 (Name/Host):
@(代表您的根域名) - 值 (Value/Points to):
您的服务器公网 IP 地址 - 优先级 (Priority):
10
- 类型 (Type):
注意: DNS 记录生效可能需要几分钟到几小时。
步骤 2: 部署后端服务
- 将本项目克隆或上传到您的服务器。
- 进入项目根目录,编辑
docker-compose.yml文件。 - 填写您的外部数据库连接信息:
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 # 替换为您的数据库名称 - 在
backend目录下有一个init.sql文件,请手动将其中的 SQL 命令在您的外部数据库中执行,以创建所需的表。 - 在项目根目录,使用 Docker Compose 启动后端服务:
此命令会构建并以后台模式启动后端容器。服务将监听服务器的docker-compose up -d --build5182(API) 和25(SMTP) 端口。
步骤 3: 构建和部署前端
- 在您的本地开发机上,进入
frontend目录。 - 安装依赖并构建静态文件:
这将在npm install npm run buildfrontend/dist目录下生成所有用于部署的静态文件。 - 将
frontend/dist目录下的 所有文件 上传到您服务器的指定位置,例如/var/www/email-unlimit。
步骤 4: 配置宿主机 Nginx
-
在服务器上,为您的应用创建一个 Nginx 配置文件,例如
/etc/nginx/sites-available/email.conf。 -
将以下配置写入该文件。请务必将
your_domain.com和root路径修改为您自己的配置。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; } } -
启用该配置并重启 Nginx:
# 创建软链接 sudo ln -s /etc/nginx/sites-available/email.conf /etc/nginx/sites-enabled/ # 测试配置语法 sudo nginx -t # 重启 Nginx sudo systemctl restart nginx
如何使用
- 访问您的网站: 在浏览器中打开
http://your_domain.com。 - 发送测试邮件: 使用任何邮箱客户端,向
anything@your_domain.com(例如test@your_domain.com) 发送一封邮件。 - 查看邮件: 在网站上输入您刚刚使用的收件人地址 (
anything@your_domain.com),点击查询,即可看到收到的邮件。