临时邮箱看起来简单——打开网页拿个地址就能收邮件。但背后涉及 DNS、SMTP、邮件存储、实时推送等多个技术环节。本文从技术角度拆解临时邮箱的工作原理。
临时邮箱的技术架构
一个临时邮箱服务的完整技术链路:
- 域名配置:服务方拥有一个或多个域名(如
215.im) - DNS/MX 记录:域名 MX 记录指向临时邮箱的邮件服务器
- SMTP 接收:邮件服务器用 SMTP 协议接收发往该域名的邮件
- 邮件存储:收到的邮件存入临时存储(内存/文件/数据库)
- 网页展示:用户通过网页查看收件箱
- 实时推送(可选):WebSocket 实时通知新邮件
- 过期清理:邮件和地址到期后自动删除
DNS 与 MX 记录
一切从 DNS 开始。当你给 abc@215.im 发邮件时,发件方的邮件服务器会查询 215.im 的 MX 记录:
215.im. MX 10 mail.215.im.
MX 记录告诉发件方:"发往 215.im 的邮件,请送到 mail.215.im"。YYDS Mail 的邮件服务器就监听在 mail.215.im 上。
SMTP 接收
发件方邮件服务器通过 SMTP 协议把邮件送到 YYDS Mail 服务器。SMTP 会话简化版:
[发件方] HELO sender.com
[YYDS] 250 Hello
[发件方] MAIL FROM: <noreply@website.com>
[YYDS] 250 OK
[发件方] RCPT TO: <abc@215.im>
[YYDS] 250 OK
[发件方] DATA
[YYDS] 354 Start mail input
[发件方] Subject: 你的验证码
验证码是 123456
.
[YYDS] 250 OK: queued
YYDS Mail 接受所有发往 215.im(及已验证的自定义域名)的邮件,不管前缀是什么——这就是为什么任何前缀都能收件。
邮件存储
收到邮件后,YYDS Mail 将邮件存储并关联到对应的邮箱地址。存储方式取决于架构:
- 内存存储:速度快,重启丢失(部分服务用)
- 文件存储:持久化,Inbucket 原生方案
- 数据库存储:可查询,适合 API
YYDS Mail 用 Inbucket 文件存储 + 业务数据库双层架构:邮件内容在文件系统,业务数据(账户、配额)在 PostgreSQL。
网页展示与实时推送
用户打开 YYDS Mail 网页时,前端通过 API 查询收件箱。YYDS Mail 额外提供 WebSocket 实时推送:
- 前端建立 WebSocket 连接
- 邮件服务器收到新邮件时,通过消息总线(msghub)广播
- WebSocket 服务捕获广播,推送到对应用户的浏览器
- 前端实时渲染新邮件,无需刷新
这比传统临时邮箱的轮询方式体验好得多。
过期清理
临时邮箱的核心特性是"临时"。YYDS Mail 有定时清理任务:
- 免费邮箱:会话超时后清理
- 付费邮箱:受保护,不被自动清理
- 过期邮件:从文件系统删除
这保证了存储不会无限增长。
自定义域名的技术原理
自定义域名的用户配置自己的域名 MX 指向 YYDS Mail 服务器后,发往该域名的邮件也会被 YYDS Mail 接收。YYDS Mail 会验证域名所有权,然后把该域名加入"接受列表"。
技术上,这与 YYDS Mail 自有域名(215.im)的处理方式完全相同——都是 SMTP 接收 + 存储 + 展示。区别只在于域名归谁所有。
常见问题
临时邮箱能接收所有邮件吗? 能接收标准 SMTP 邮件。但一些严格反垃圾的系统(如某些企业邮箱)可能拒绝发往临时邮箱域名的邮件。
为什么不同前缀都能收到邮件? 因为 SMTP 服务器配置为"接收该域名的所有邮件"(catch-all),不检查前缀是否存在。
邮件到达需要多久? 通常几秒。取决于发件方服务器的发送速度。
