版本: 1.0 · 日期: 2026年 · 运营商: László Zsidi (匈牙利) ·
联系方式: laszlo@zsidi.hu
1. 引言
session.email 是一种以隐私为优先的零日志(zero-log)、零持久化(zero-persistence)临时电子邮件服务,专为接收电子邮件而设计。该系统确保用户的通信永远不会被永久存储;所有数据均严格在 RAM(内存)中处理,并具有严格的 TTL(生存时间)值。
该服务基于三大支柱:
- 隐私:无日志、无磁盘 I/O、无元数据收集。
- 技术架构:基于 Redis 的内存管理、SSE 流式传输、独立的客户端沙箱。
- 安全:KVM 隔离、OpenSMTPD 加固、Fail2ban、ECC PGP 密钥。
本文档详细介绍了 session.email 的操作、安全模型和隐私保证。
2. 基础设施与环境
2.1. 物理及虚拟环境
- VPS 提供商: RackNerd
- 地点: 美国
- 虚拟化: KVM(硬件隔离)
- 内存: 1 GB RAM + 1 GB 交换空间
- 操作系统: Debian 12
- 防火墙: UFW – 所有未使用的端口均已关闭,包括 22 端口 (SSH)
- SSH: 使用非标准端口,配备暴力破解防护
KVM 虚拟化确保了内存限制的操作在真正隔离的环境中进行,与其他 VPS 实例完全分离。
3. 软件架构
3.1. 主要组件
- Caddy: HTTP/2 和 HTTP/3 (QUIC) 反向代理。
- OpenSMTPD: 仅用于接收(入站)SMTP 流量。
- Go 后端: 消息处理、Redis 集成、SSE 流式传输。
- Redis: 内存数据管理、基于 TTL 的删除、无持久化。
-
GoatCounter: 自托管、无 cookie、对隐私友好的分析工具(
analytics.session.email
)。
- Fail2ban: 配置用于 OpenSMTPD 和 Caddy 404 事件防护。
4. 数据流 (Data Flow)
[OpenSMTPD] → [Go 后端] → [Redis (内存)] → [SSE 流] → [独立 Iframe] → [Purify.js + Sanitizer]
4.1. SMTP 接收
- OpenSMTPD 接收传入的电子邮件。
- 最大消息限制:25 MB – 超过此大小的消息将被拒绝。
- 启用 IP 速率限制,以防止过载和滥用。
- 完全禁用出站 SMTP – 该服务不发送电子邮件。
4.2. 后端处理
Go 后端负责消息处理:
- 解析头部和正文,“清洗”消息。
- 消息通过 Redis 存储在内存中,并带有严格的 TTL。
- 消息通过 SSE(服务器发送事件)通道流式传输到客户端浏览器。
4.3. Redis 运行机制
- AOF (Append Only File): 禁用 (
appendonly no)。
- RDB 快照: 启用,但系统不会永久存储电子邮件;Redis 仅在内存中运行。
- 访问: 仅限
127.0.0.1:6379,并受密码保护。
- IP 速率禁止: 同样在 Redis 级别应用。
4.4. TTL 值
- 免费地址: 15 分钟 TTL(客户端重连保护)。
- 高级地址: 1 小时 TTL。
- 会话 Cookie: 1 小时。
所有数据在 TTL 到期后自动删除;没有等待手动删除的持久性数据。
5. 零持久化保证
在 session.email 的运行过程中:
- 不会将电子邮件写入磁盘,
- 不会创建邮件池(mail spool)或 maildir 结构,
- 不会存储传入消息的日志文件,
- 不会永久存储 IP 地址、用户代理或时间戳,
- 不会进行画像分析,也不会建立用户数据库。
该系统完全在内存中运行,依赖于 Redis 的 TTL 机制。TTL 到期后,数据会自动且不可逆地删除。
6. 客户端安全
6.1. 独立 Iframe
电子邮件在隔离的沙箱 Iframe 中显示,这使得消息内容与主文档分离。
6.2. 清洗和跟踪保护
- 使用 purify.js 清洗 HTML 内容。
- 定制清洗逻辑以过滤跟踪像素和可疑元素。
- 提供 HTML 转纯文本 视图选项,以实现最高安全性。
这种方法降低了 XSS、CSRF、远程资源加载及其他客户端攻击的风险。
7. 高级 PGP 功能
对于高级用户,session.email 提供 会话绑定、仅内存驻留 的 PGP 加密。
- 算法: ECC, Curve25519。
- 库:
openpgp.min.js。
- 密钥生成: 每个会话接收唯一的密钥对。
const { privateKey, publicKey } = await openpgp.generateKey({
type: 'ecc',
curve: 'curve25519',
userIDs: [{ name: 'Session User' }],
});
私钥仅存在于内存中,永远不会写入磁盘,并在会话结束时自动轮换和删除。用户收到一个公钥,可用于加密发送给他们的消息。
8. 分析 (GoatCounter)
session.email 仅使用最小化、对隐私友好的分析工具:
- 工具: GoatCounter。
-
地点: 自托管 VPS,
analytics.session.email
域名。
- 收集数据: 仅页面浏览统计。
- 排除项: 无跟踪 cookie,无指纹识别,不与第三方共享数据。
9. 支付系统 (Paddle)
高级功能的支付通过 Paddle 系统处理。
- Paddle Webhook 用于验证交易状态。
- session.email 服务器 不永久存储 支付数据。
- Paddle 可能会出于安全和交易管理目的使用其自己的 cookie。
- 服务器仅查看交易所需的电子邮件地址,该地址也不会长期存储。
10. 安全模型
10.1. 威胁模型
- 暴力破解 / SSH 攻击: 非标准 SSH 端口,UFW,Fail2ban。
- SMTP 泛洪: OpenSMTPD IP 速率限制,最大 25 MB 消息大小。
- Redis 攻击: 仅限本地主机访问,受密码保护,处于防火墙后。
- XSS / HTML 攻击: 独立 Iframe,purify.js,清洗逻辑。
- 跟踪 / 元数据泄漏: 跟踪像素过滤,HTML 转纯文本选项。
- 磁盘取证: 无磁盘写入,无邮件池,无日志。
10.2. 攻击面最小化
- 无出站 SMTP。
- 无用户帐户、密码或持久数据库。
- 无用于批量数据检索的 API。
- 所有数据驻留在内存中,具有 TTL 并自动删除。
11. 总结表
| 领域 |
解决方案 |
状态 |
| 数据存储 |
仅内存 (Redis + TTL) |
✔ 零持久化 |
| 日志记录 |
完全禁用,无磁盘 I/O |
✔ 零日志 |
| SMTP |
OpenSMTPD 仅入站,25 MB 限制 |
✔ 禁用出站 |
| Web |
Caddy, HTTP/2 + HTTP/3 (QUIC) |
✔ 现代协议 |
| 分析 |
GoatCounter, 自托管, 无 cookie |
✔ 隐私友好 |
| PGP |
ECC Curve25519, 会话绑定, 仅内存 |
✔ 高级加密 |
| 虚拟化 |
KVM, 独立 VPS |
✔ 硬件隔离 |
| 安全 |
Fail2ban, 速率限制, UFW |
✔ 主动防御 |
12. 结论
session.email 是一种即弃型电子邮件服务:
- 不永久存储数据,
- 不进行日志记录,
- 不写入磁盘,
- 不收集元数据,
- 不允许出站电子邮件,
- 仅在内存中运行,并具有严格的 TTL,
- 为高级用户提供 PGP 加密,
- 运行在现代且安全的架构上 (KVM, Caddy, OpenSMTPD, Redis),
- 采用严格的客户端沙箱和清洗机制。
该系统遵循 隐私设计(privacy-by-design)和 数据最小化 原则,为用户的匿名性和数据安全提供了技术上独特且强大的保障。