早在 2020 年,我们发布了一篇关于如何设置 Inbucket 的教程,Inbucket 是一个一次性邮箱应用。借助 Inbucket,你可以用一台 VPS 打造一个 Mailinator 克隆。设置完成后,你就能拥有无限数量的一次性邮箱地址。
所以,如果你的域名比如是 lowend.party,那么无需任何额外配置,你就可以当场编造一个邮箱地址给别人(例如“sevendollars@lowend.party”),如果他们向这个地址发邮件,邮件就会投递到你的 VPS 上的那个收件箱中。
这对于所有那些需要邮箱验证的网站非常有用。你仍然能收到确认码或激活链接,但发件人不会得到你的真实邮箱地址。这有助于保持你的真实收件箱干净整洁。
有提供此类服务的公共平台——Mailinator 就是其中之一——但一些验证系统会明确过滤掉这些服务。然而,它们无法过滤掉你自托管的服务。
我们 2020 年的教程在当时是很好的,但那是手动构建。在随后的几年里,Inbucket 发布了打包好的构建版本,因此不再需要折腾 npm 和“go build”来让它运行起来。让我们试试吧。
一台小型 VPS
我使用的是 DigitalOcean 的 512MB VPS,只是因为……嗯,我对这个大小有怀旧情结。在我 20 年前开始使用 VPS 时,那已经是一个很慷慨的配置了。另外,我也想看看是否有可能使用这么小的系统。
你不能在这样的系统上从头构建 Inbucket——在 npm 步骤期间你会被 OOM-killed。但安装软件包没问题,Inbucket 运行得很好。
以下是我所做的,从一个基础的 Debian 13 x64 构建开始。
然后下载 .deb 文件:
你应该会得到类似这样的东西:
然后:
是的,你可以像那样使用 apt。我以前用 dpkg -i,但看到一个不相关的教程中有人用 apt,那为什么不呢?
这是输出:
加粗的部分并不是重要的错误。它只是说明因为 apt 以 root 身份运行,并且 .deb 文件在这种情况下位于 /root 中,所以 apt 回退为以 root 身份读取软件包。
验证它已安装:
现在默认情况下,Inbucket 在 2500 端口上运行 SMTP。如果你在公共服务器上运行它,你希望它在 25 端口上接收 SMTP。因此,按如下方式修改 /lib/systemd/system/inbucket.service:
并取消注释这一行:
现在禁用 exim4,因为 Inbucket 将取代它:
并启动 Inbucket:
你应该看到它正在运行:
然后你就启动并运行了!我浏览到服务器的 9000 端口:
进行 Web 设置
这个设置本身没有问题。你访问服务器上的 HTTP 9000 端口来阅读邮件。但没有认证或加密。让我们来解决这个问题。
首先,修改 /lib/systemd/system/inbucket.service,将 Web 界面仅绑定到 localhost:
现在安装一些软件包:
创建一个用于认证的用户:
在提示时输入一个强密码,但请注意 HTTPS Basic auth 限制为 8 个字符。
现在创建 /etc/nginx/sites-available/inbucket
我们在这里所做的是将 .well-known 目录保留在 HTTPS Basic auth 之外,以便 Certbot 挑战和续期能够正常工作。
我承认,第二个加粗的部分是我在 Web UI 无法连接到 Inbucket 时谷歌搜索到的。我在 /var/log/daemon.log 中看到这些错误:
加粗的行解决了这个问题。
使此配置生效:
我总是会移除默认配置:
检查一下:
现在重启 nginx(在 apt 安装后它通常已经在运行):
获取 HTTP 证书:
之后,你可以浏览到 https://your-server.example.com/(无需 9000 端口),输入“admin”和你选择的密码,然后享受你的一次性邮箱系统吧!
