我花了几个月的时间在一个我希望几年前就能拥有的项目上。
我不断遇到同样的问题:持续集成(CI)通过,但生产环境的邮件却无法发送。TLS 握手失败、DKIM 对齐不匹配、SPF 软失败……这些问题只有在真实邮件服务器参与时才会显现出来。
大多数测试工具(如 Mailpit、MailHog)都是通用的。它们确认“邮件已发送”,但并不验证协议。而且它们也不适合网络暴露的环境:没有身份验证、不受保护的 Web 界面、容易枚举消息。
VaultSandbox 是我对此问题的解决尝试。
它是一个自托管的 SMTP 网关(AGPLv3),在每个传入消息上验证 SPF、DKIM、DMARC 和 rDNS。你可以在测试中继续使用你的生产邮件提供商(如 Postmark、SendGrid、SES),只需更改收件人域名即可。无需模拟,无需配置更改。
它提供了客户端 SDK(Node、Python、Go、Java、.NET),以及用于手动测试的 Web 界面和命令行界面。
一些技术细节:
**确定性测试**
SDK 使用服务器推送事件(SSE),而不是轮询或睡眠循环,因此测试断言会在邮件到达网关时立即触发。
**最小基础设施占用**
使用 NestJS 和 Angular 构建,没有外部数据库依赖,以保持容器占用小且更易于理解。
**后量子加密**
我使用 ML-KEM-768 作为加密层。传入邮件会立即使用客户端生成的公钥进行加密,明文会被丢弃。服务器只存储加密后的消息数据,无法解密。我选择后量子加密是因为我想构建一个在五年内不需要重新审视的解决方案。如果它能可靠地处理大型后量子密钥,其他一切都很简单。
**快速入门:**
[https://vaultsandbox.dev/getting-started/quickstart/](https://vaultsandbox.dev/getting-started/quickstart/)
**网站:**
[https://vaultsandbox.com](https://vaultsandbox.com)
我非常希望能收到反馈,特别是关于 AGPLv3 是否会成为你在开发中自托管的障碍。
返回首页
最新
GitHub profile analysis
- Build your embedding from your Stars
- Compare and discover popular people with similar interests and share yours
- Generate a Skill Radar
- Recommend repositories you might like
我刚刚想到一个非常有趣的主意,就是在我的GitHub个人资料上制作一个可玩版本的《毁灭战士》(DOOM),这源于我去年在二维码中构建《毁灭战士》的经历(<a href="https://news.ycombinator.com/item?id=43729683">https://news.ycombinator.com/item?id=43729683</a>),我终于停止了拖延,开始尝试构建它。
DoomMe是一个可以在GitHub的Markdown查看器上运行的DOOM E1M1地图,而该查看器不支持JavaScript、WebAssembly或甚至iframe。它使用一个无状态引擎,捕捉地图中每个可能位置(每64个单位距离)的四个方向,并通过图形逻辑将8000多个WebP图像和Markdown文件拼接在一起。
由于它是无状态的,我不得不手动编辑WAD文件,以“打开”E1M1的门,以便稍后使用omgifol捕捉地图内的所有有效位置!
该项目是开源的,采用MIT许可证,当前版本大小不到190MB,包含所有资源。
- 在我的个人资料上玩它:<a href="https://github.com/Kuberwastaken" rel="nofollow">https://github.com/Kuberwastaken</a>
- 博客文章涵盖了大部分过程、实现和失败尝试:<a href="https://kuber.studio/blog/Projects/How-I-Made-DOOM-Run-Inside-a-GitHub-Readme" rel="nofollow">https://kuber.studio/blog/Projects/How-I-Made-DOOM-Run-Inside-a-GitHub-Readme</a>
该应用的第四个支点<p>发现并与他人分享积极的体验。发布计划以复制你所感激的事物,并查看哪些内容与社区产生共鸣。投掷硬币以表示你对共同发展这些积极体验的兴趣。<p>谁在使用CoinFountains?<br>早期用户<br>在其他人之前找到并分享有效的经验。<p>企业家<br>帮助发展和扩大已经有效的事物。<p>愿景者<br>看到有效事物的潜力并帮助其成长。
我创建了一个应用程序,您可以在其中体验棱镜、透镜和镜子的物理特性——然后在3D环境中骑乘光子,穿越您的光学障碍课程。<p>为了更深入的了解,我还在撰写一系列配套的博客文章:<a href="https://artepants.fun/posts/spectral-lab-2/" rel="nofollow">https://artepants.fun/posts/spectral-lab-2/</a>
我开发了DDL到数据(DDL to Data),是因为我多次拒绝了“只需使用生产数据并进行脱敏”的请求。团队需要填充的数据库来进行测试,但提取生产数据意味着需要进行安全审查、个人身份信息(PII)清理和DevOps工单。手动编写的种子脚本作为替代方案,速度慢、脆弱,并且在架构变更的瞬间就会失去同步。
只需粘贴你的CREATE TABLE语句,就能获得逼真的测试数据。它会解析你的架构,保留外键关系,并生成看起来真实的数据,电子邮件看起来像电子邮件,时间戳合理,唯一性约束得到遵守。
无需设置,无需配置。支持PostgreSQL和MySQL。
我希望能收到任何处理测试数据或暂存环境的人的反馈。还有什么缺失的吗?
嗨,HN,我是Barry,我创建了Prism.Tools([https://blgardner.github.io/prism.tools/](https://blgardner.github.io/prism.tools/))——一个尊重您隐私的客户端开发工具集合。
这些工具的灵感源于我早年运营BBS和创建社区首个ISP的经历,当时为三个地方社区提供拨号上网、网站托管等服务。这些工具经过改进,以反映技术的变化,旨在满足新手和专业人士的需求。随着我发现更多可能对他人有用的工具,我会不断完善并添加到这个集合中。您可以使用它们、分享它们,或者不使用。如果您需要,它们会在这里。
这个工具集合包含40多个开发工具(如JSON格式化工具、正则表达式测试器、Base64编码器、Git命令助手等),全部在您的浏览器中运行。
零追踪、零分析、零数据收集——所有处理都在本地进行。
自包含的HTML文件,无需构建过程或框架。
我意识到自己多年来为个人使用构建了很多工具/实用程序。我厌恶为了访问/使用我自己可以创建的简单工具而“注册”。我对这些工具进行了精炼,并将它们集中在一个安全的地方,以便在需要时可以轻松访问。我决定通过Github Pages将它们提供给任何可能觉得有用的人。Prism.Tools就是这个结果。
每个工具都是一个独立的HTML文件,内嵌CSS和JavaScript。没有框架,没有npm包,没有构建步骤——只需打开文件即可使用。
整个工具集:
- 100%客户端处理——您的数据永远不会离开您的浏览器。
- 除了来自cdnjs.cloudflare.com的特定库(如用于Markdown的marked.js、用于图像元数据的exifr等)外,没有外部依赖。
- 一致的深色UI——每个工具遵循相同的设计语言,以便于使用。
- 尽可能使用原生JavaScript——只有在必要时才使用公共CDN资源。
“单一HTML文件”的限制是故意的。它迫使工具保持简单,并确保可维护性。这也意味着用户可以轻松检查、修改或自托管任何工具。
这些工具帮助我调试生产问题、快速格式化任务、学习Git命令(Git命令助手特别有用)。
只需访问[https://blgardner.github.io/prism.tools/](https://blgardner.github.io/prism.tools/)并尝试任何工具。无需注册,无需安装。
您觉得缺少哪些工具?
是否有特定工具的性能问题?
UI/UX方面有什么摩擦点?
所有工具都遵循相同的隐私优先理念……
您的数据保留在您的浏览器中。没有账户,没有追踪,没有服务器处理您的信息。
该项目还展示了您并不总是需要React、Vue或复杂的构建管道——有时,一个单一HTML文件中的原生JavaScript恰好是完成工作的正确工具。
使用的技术:
- 原生JavaScript(ES6+)
- CSS3与CSS Grid
- 最少的外部库:marked.js、exifr、highlight.js、sql-formatter(均来自CDN)
- 无框架,无打包工具,无npm
- 托管在Github Pages上
欢迎就技术实现、设计决策或具体工具提出问题!
所有工具都可以检查——只需在任何页面查看源代码,即可了解它们的工作原理!