Go to file
shenjianZ 0e267b923c feat: fix compose.yml 2025-07-29 22:12:21 +08:00
backend feat: fix backend sql error;fix frontend i18n display error 2025-07-29 15:35:34 +08:00
frontend feat: fix backend sql error;fix frontend i18n display error 2025-07-29 15:35:34 +08:00
.gitignore feat: fix compose yml 2025-07-29 16:58:50 +08:00
GEMINI.md feat: add switch with zh|en 2025-07-28 23:36:33 +08:00
README.md deploy success - first version successed 2025-07-28 13:17:54 +08:00
compose.env feat: fix compose.yml 2025-07-29 22:12:21 +08:00
compose.full.env feat: add docker compose full deploy 2025-07-29 08:39:20 +08:00
docker-compose-full.yml feat: fix compose yml 2025-07-29 16:58:50 +08:00
docker-compose.build.yml feat: fix compose.yml 2025-07-29 22:11:41 +08:00
docker-compose.yml feat: fix compose.yml 2025-07-29 22:11:41 +08:00
info.md mailu branch failed 2025-07-28 12:18:54 +08:00
nginx.full.conf feat: add docker compose full deploy 2025-07-29 08:39:20 +08:00

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>确保您已准备好以下环境

  1. 一台拥有公网 IP 的 Linux 服务器。
  2. 一个您自己的域名。
  3. 服务器上已安装 DockerDocker Compose
  4. 服务器上已安装 Nginx
  5. 一个可用的外部 MySQL 数据库,并已创建好数据库。
  6. 本地开发环境已安装 Node.jsnpm (用于构建前端)。

部署步骤

步骤 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. 填写您的外部数据库连接信息
    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 启动后端服务:
    docker-compose up -d --build
    
    此命令会构建并以后台模式启动后端容器。服务将监听服务器的 5182 (API) 和 25 (SMTP) 端口。

步骤 3: 构建和部署前端

  1. 在您的本地开发机上,进入 frontend 目录。
  2. 安装依赖并构建静态文件:
    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.comroot 路径修改为您自己的配置。

    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

    # 创建软链接
    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),点击查询,即可看到收到的邮件。