如何在几分钟内部署自己的临时邮件服务
任何曾经测试过 Web 应用注册或密码重置功能的人都深知这种痛苦。像 TempMail 这样的热门一次性邮件服务充满了广告,它们的域名早已被验证器列入黑名单,而 Gmail 上的个人测试收件箱很快就会变得一团糟。
最近偶然发现了一个有趣的项目,叫做 TempFastMail,由开发者 kasteckis 创建。这是一款轻量级自托管临时邮件服务,只需一条命令就能在自己的域名上快速启动 docker compose。

为什么要运行自己的临时邮件服务
公共一次性邮箱在遇到限制之前确实很方便。首先,第三方服务可以查看包含所有确认链接和令牌的传入邮件。其次,许多网站会屏蔽已知临时邮件域的地址。
个人实例可以解决这两个问题:
- 您可以使用任何未列入任何垃圾邮件数据库的个人域名。
- 所有传入邮件都处于您的控制之下。
- 无验证码、无广告横幅、无第三方跟踪器。
- 邮件会在 48 小时后自动删除,因此数据库不会增长。
架构如何工作
该项目在底层使用了现代技术栈:PHP 后端(根据仓库标签,是 Symfony)通过 FrankenPHP 运行,使用 SQLite 作为数据库,前端使用 React 构建。
这里最有趣的细节是作者如何解决接收传入邮件的问题。设置像 Postfix 这样的完整 SMTP 服务器并配置 MX 记录对许多人来说是一件头疼的事。TempFastMail 使用 Cloudflare Email Routing 和免费的 Cloudflare Worker。当邮件到达域名时,Cloudflare 会拦截它并调用您实例的 HTTP API。简单、可靠,且无需在服务器上打开端口 25。
快速开始
要开始使用,您需要一台安装了 Docker 的服务器和一个委托给 Cloudflare 的域名。
创建 docker-compose.yml 文件:
services:
tempfastmail:
container_name: tempfastmail
image: kasteckis/tempfastmail:latest
environment:
CREATE_RECEIVED_EMAIL_API_AUTHORIZATION_KEY: your-secret-api-token
DEFAULT_URI: https://yourdomain.com
ports:
- "80:80"
volumes:
- ./sqlite:/app/sqlite
之后,您只需按照仓库中的说明在 Cloudflare 仪表板中设置免费的 worker,并通过 auth token 将其链接到您的容器。运行后,Web 界面可在浏览器中访问。您可以通过管理面板使用默认登录 [email protected] 来管理邮件和手动清理数据库。
需要注意的事项
仓库中的 README 仍然比较简略,而且这个项目的星标数不多,所以可能会有一些小问题。由于使用 SQLite 作为存储,该服务显然是为个人使用或小型测试团队设计的,而不是为数千个并发用户设计的。
对于本地 QA 任务、测试自动化和个人垃圾邮件防护来说,这是一个很棒的发现,可以让您免于处理复杂的邮件服务器。
相关项目