Go to file
shenjianZ f785e7defc feat: sample.png 2025-08-02 11:28:37 +08:00
backend feat: Display received time and fix timestamp timezone conversion. 2025-08-02 11:21:32 +08:00
certs feat:add certs dir 2025-07-31 08:13:51 +08:00
frontend feat: Display received time and fix timestamp timezone conversion. 2025-08-02 11:20:58 +08:00
.gitignore feat:fix docker-compose 2025-07-31 11:28:20 +08:00
GEMINI.md feat: add switch with zh|en 2025-07-28 23:36:33 +08:00
LICENSE feat:fix README.md 2025-07-31 11:44:51 +08:00
README.md feat:fix README.md 2025-07-31 11:48:45 +08:00
compose.env feat: fix compose.env 2025-07-30 14:11:44 +08:00
compose.full.env feat: fix compose.env and compsoe.yml 2025-07-30 14:15:15 +08:00
docker-compose.build.yml feat(docker): 安装 tzdata 并设置 TZ=Asia/Shanghai 以让 Node.js 使用上海时区 2025-08-02 10:49:24 +08:00
docker-compose.full.yml feat(docker): 安装 tzdata 并设置 TZ=Asia/Shanghai 以让 Node.js 使用上海时区 2025-08-02 10:49:24 +08:00
docker-compose.self.yml feat:fix docker-compose 2025-07-31 11:28:20 +08:00
docker-compose.yml feat(docker): 安装 tzdata 并设置 TZ=Asia/Shanghai 以让 Node.js 使用上海时区 2025-08-02 10:49:24 +08:00
info.md mailu branch failed 2025-07-28 12:18:54 +08:00
nginx.full.conf nothing 2025-07-30 18:13:03 +08:00
sample.png feat: sample.png 2025-08-02 11:28:37 +08:00

README.md

Email Unlimit - 轻量级、可自托管的临时邮件解决方案

本项目是一个轻量级的、可自托管的临时邮件解决方案。它允许您使用自己的域名接收邮件,并通过一个简洁的网页界面来查看这些邮件。

Mailu 等复杂的邮件套件不同,本项目采用了一个极简的 Node.js 服务来直接接收和处理邮件,部署和维护都非常简单。

在线体验: https://mail.shenjianl.cn

网站截图 sample.png

技术架构

  • 前端 (Frontend): 使用 Vue.js 构建的单页面应用,负责展示收到的邮件列表。
  • 后端 (Backend):
    • 使用 Node.js 和 Express 搭建的 API 服务器。
    • 内置一个轻量级的 SMTP 服务器 (smtp-server),用于直接接收邮件,无需外部邮件服务。
    • 通过 WebSocket 实现新邮件的实时推送。
  • 数据库 (Database): 使用 MySQL 存储邮件信息,确保数据的安全性和持久性。
  • 部署 (Deployment): 使用 Docker Compose 统一管理后端服务、数据库和 Nginx实现一键部署。

前置条件

在开始之前,请确保您已满足以下条件:

1. 硬件与域名

  • 一台拥有公网 IP 的云服务器。
  • 一个您自己的域名(建议已完成备案)。

2. 软件环境

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 环境变量文件:
    VITE_APP_DOMAIN=example.com # 改为你的主域名
    
  2. 安装依赖并构建:
    cd frontend
    npm install
    npm run build
    
  3. 将构建生成的 dist 目录(位于 frontend/dist完整上传到服务器的 /data/email-unlimit/frontend 目录下。

步骤 4: 修改 Nginx 配置 (服务器)

编辑项目根目录下的 nginx.full.conf 文件,仅需修改以下三项:

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) 下执行以下命令:

# -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 文件。