2025-03-01 11:26:31 +08:00
2025-02-26 18:29:10 +08:00
2025-02-26 18:30:09 +08:00
2025-02-26 18:42:59 +08:00
2025-02-26 18:42:59 +08:00

自托管邮件系统文档

概述

这是一个自托管的邮件系统,旨在接收和处理电子邮件,特别适用于批量注册和验证场景。该系统支持通过 API 接口查询和管理邮件,并提供验证码自动提取功能。

系统特性

  • 自动接收邮件并存储到 Redis 数据库
  • 提供 API 接口查询和管理邮件
  • 支持通过邮箱地址直接查询最新邮件
  • 提供验证码自动提取功能
  • 支持批量注册和验证操作
  • 支持邮件附件的处理和下载
  • 动态管理允许的域名列表

系统架构

该系统主要由以下组件构成:

  • Flask: 用于构建 Web 应用和 API 接口
  • Redis: 用于存储邮件数据和允许的域名列表
  • SMTP 服务器: 用于接收邮件

安装和配置

系统要求

  • Python 3.7+
  • Redis 数据库
  • 开放的网络端口SMTP: 25, HTTP: 5000

安装步骤

  1. 克隆代码库:

    git clone <repository-url>
    cd emailsystem2
    
  2. 安装依赖:

    pip install -r requirements.txt
    
  3. 启动 Redis 服务器(确保 Redis 已安装并运行):

    redis-server
    
  4. 启动邮件系统:

    python run.py --host 0.0.0.0 --port 5000 --smtp-port 25
    

设置为系统服务(可选)

如果希望将邮件系统设置为系统服务,可以使用以下命令:

sudo cp email-system.service /etc/systemd/system/
sudo systemctl enable email-system
sudo systemctl start email-system

API 接口

1. 获取最新邮件

  • 请求方法: GET
  • 请求路径: /latest_email
  • 请求参数:
    • recipient: 收件邮箱地址
  • 成功响应:
    {
        "message_id": "<message-id>",
        "subject": "邮件主题",
        "sender": "发件人邮箱",
        "recipients": ["收件人邮箱"],
        "body": "邮件正文",
        "timestamp": "2025-02-26T19:03:53.838745",
        "code": "验证码"
    }
    

2. 管理允许的域名

  • 添加域名:

    • 请求方法: POST
    • 请求路径: /allowed_domains/add
    • 请求体:
    {
        "domain": "email.nosqli.com"
    }
    
    • 成功响应:
    {
        "message": "Domain added successfully"
    }
    
  • 删除域名:

    • 请求方法: POST
    • 请求路径: /allowed_domains/remove
    • 请求体:
    {
        "domain": "email.nosqli.com"
    }
    
    • 成功响应:
    {
        "message": "Domain removed successfully"
    }
    
  • 获取当前允许的域名及其创建时间:

    • 请求方法: GET
    • 请求路径: /allowed_domains/list
    • 成功响应:
    {
        "email.nosqli.com": "2025-02-26T19:03:53.838745",
        "tw.nosqli.com": "2025-02-26T19:05:00.123456"
    }
    

日志记录

系统使用 Python 的 logging 模块记录操作日志,所有日志信息将输出到控制台,便于调试和监控。

注意事项

  • 确保 Redis 服务器正常运行,并且网络端口未被其他服务占用。
  • 在生产环境中,建议使用 WSGI 服务器(如 Gunicorn来运行 Flask 应用.
Description
No description provided
Readme 155 KiB
Languages
Python 100%