【分享】自建邮箱的"验证码接码页":链接可过期、可撤销、有访问记录

Doone 2026-09-17 11:26 1

各位 MJJ 好,分享一个自己写的小工具,跑在 Mail-in-a-Box(MIAB)上。


GitHub:https://github.com/Doone-skser/one-mail (MIT)


起因


手上有台跑 MIAB 的小鸡,开了一堆域名邮箱拿来注册各种服务。问题是经常要让朋友/家人/同事帮忙收个验证码:



  • 把邮箱密码给出去?不放心,也收不回来

  • 自己盯着转发?半夜被叫起来看验证码,烦

  • 用 Cloudflare 临时邮箱?那是一次性地址,不是我已有的真实邮箱


所以写了 OneMail:管理员给某个邮箱生成一条免登录、只读的取件链接,发给对方,对方打开就能看到收件箱,验证码自动提取、大字显示、一键复制。 链接可以设有效期、随时撤销,谁什么时候从哪个 IP 看过都有记录。


功能


取件页(对方看到的)



  • 「验证码」Tab:只列出识别到验证码的邮件,大字 + 一键复制

  • 「全部邮件」Tab:完整收件箱,分页

  • 每 5 秒轻量轮询,有新邮件才刷新

  • 验证码识别:中英文关键词邻近匹配(验证码/动态码/code/OTP/PIN…),避开年份、订单号误抓

  • 邮件详情:HTML 正文 iframe 沙箱渲染,远端图片默认屏蔽(防追踪),附件可下载

  • 链接过期/撤销后显示中文提示页,邮箱地址可打码


管理端(直接用 MIAB 管理员账号登录)



  • 一键添加新邮箱(调 MIAB API,密码可自动生成),建完马上能发取件链接

  • 生成链接:1 天 / 7 天 / 30 天 / 永久

  • 延期(URL 不变)、重置 token、撤销/启用、删除

  • 每条链接的访问日志:时间 / IP / UA


跟同类项目比











































OneMail cloudflare_temp_email AuthInbox
运行位置 自己的 MIAB 服务器 CF Workers CF Workers
定位 已有真实邮箱的只读分享 临时邮箱 临时接码
第三方依赖 无,数据自控 CF Email Routing CF Email Routing
验证码提取
链接有效期/撤销/访问审计

想要免费一次性临时邮箱,选 cloudflare_temp_email;想把自己服务器上的真实邮箱安全地给别人收码,可以试试这个。


技术栈


Python + Flask + gunicorn + sqlite,前端纯 CSS + 原生 JS,没用任何框架。直接只读 Maildir 文件,不改 MIAB 任何配置,nginx 只加一个独立 conf,MIAB 升级不受影响。


安全方面


毕竟是免登录链接,这块下了点功夫:



  • 登录防爆破:10 分钟失败 5 次锁 15 分钟

  • token 防枚举:同 IP 一分钟无效请求超 20 次返回 429

  • 附带 fail2ban 规则,爆破直接封 IP

  • CSRF 校验、CSP / HSTS 等安全响应头、Cookie HttpOnly + Secure

  • systemd 沙箱加固

  • Maildir 路径白名单校验,防路径穿越


部署


前提是已经装好 MIAB。大致流程:拷代码 → 建 venv 装依赖 → 装 systemd 服务 → 加 nginx conf → certbot 签证书 → (可选)fail2ban。README 里有从零开始的完整命令,十分钟左右能跑起来。


最后


自用为主,代码就一个 app.py 加几个模板,想改也好改。有问题或建议欢迎回帖或者提 issue,觉得有用的话点个 Star 🙏






最新回复 (7)
  • sibyl98 09-17 11:26
    1

    不错不错

  • anarkh35 09-17 11:26
    2

    感谢分享!

  • AppIe 09-17 11:28
    3

    喜欢😘

  • BoYaJun 09-17 11:32
    4

    很强大佬,感谢分享

  • 不过尔尔 09-17 11:36
    5

    这个不错

  • Na 09-17 11:38
    6

    感谢分享 ^-^

  • xq772 09-17 20:33
    7

    mark 备用

* 帖子来源NodeSeek
返回