email-unlimit/backend
shenjianZ be59fa85de feat(backend): 实施连接与数据层速率限制
为了增强服务的稳定性和安全性,防止滥用行为,本次提交引入了两个核心的速率限制和验证机制:

1. **连接层验证 (`onConnect`)**
   - **IP 速率限制**:在 `connectionValidator.js` 中实现。限制单个 IP 地址每分钟最多 20 次连接,超过限制将临时封禁 5 分钟,以防御暴力连接攻击。
   - **反向 DNS (PTR) 检查**:要求所有公共网络连接必须具有有效的 PTR 记录,用于区分合法邮件服务器和僵尸网络。

2. **数据层验证 (`onData`)**
   - **发件人域速率限制**:在 `rateLimiter.js` 中实现。在邮件数据传输阶段,限制单个发件人域名每分钟最多发送 10 封邮件,超过限制的域名将被临时封禁 5 分钟,以防止单一来源的邮件泛滥。

**主要变更:**
- 新增 `backend/connectionValidator.js`:处理连接时的 IP 速率限制和 PTR 验证。
- 新增 `backend/rateLimiter.js`:在 `onData` 阶段对发件人域名进行速率限制。
- 在 `backend/app.js` 的 `SMTPServer` 配置中集成了 `onConnect` 验证钩子。
- 在 `backend/saveEmail.js` 中调用速率限制器,并在超限时拒绝邮件。
- 更新日志模块 (`logger.js`, `db.js`),输出更清晰,并记录安全相关事件。
- 新增 `backend/SECURITY_POLICIES.md` 文档,详细说明所有安全策略和可配置参数。
2025-08-01 22:59:40 +08:00
..
Dockerfile deploy success - first version successed 2025-07-28 13:17:54 +08:00
SECURITY_POLICIES.md feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
app.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
connectionValidator.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
db.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
eventEmitter.js feat: Enhance backend with request/SQL logging via morgan/winston and fix frontend by correctly rendering email Markdown content using the 'marked' library. 2025-07-29 12:44:56 +08:00
init.sql mailu branch failed 2025-07-28 12:18:54 +08:00
logger.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
package.json feat: Enhance backend with request/SQL logging via morgan/winston and fix frontend by correctly rendering email Markdown content using the 'marked' library. 2025-07-29 12:44:56 +08:00
rateLimiter.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00
saveEmail.js feat(backend): 实施连接与数据层速率限制 2025-08-01 22:59:40 +08:00