自托管邮件系统文档
概述
这是一个自托管的邮件系统,旨在接收和处理电子邮件,特别适用于批量注册和验证场景。该系统支持通过 API 接口查询和管理邮件,并提供验证码自动提取功能。
系统特性
- 自动接收邮件并存储到 Redis 数据库
- 提供 API 接口查询和管理邮件
- 支持通过邮箱地址直接查询最新邮件
- 提供验证码自动提取功能
- 支持批量注册和验证操作
- 支持邮件附件的处理和下载
- 动态管理允许的域名列表
系统架构
该系统主要由以下组件构成:
- Flask: 用于构建 Web 应用和 API 接口
- Redis: 用于存储邮件数据和允许的域名列表
- SMTP 服务器: 用于接收邮件
安装和配置
系统要求
- Python 3.7+
- Redis 数据库
- 开放的网络端口(SMTP: 25, HTTP: 5000)
安装步骤
-
克隆代码库:
git clone <repository-url> cd emailsystem2 -
安装依赖:
pip install -r requirements.txt -
启动 Redis 服务器(确保 Redis 已安装并运行):
redis-server -
启动邮件系统:
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
Languages
Python
100%