← 返回信息流
AI 资讯Hacker News·3 天前

带Web仪表盘的SMTP中继服务

原标题:SMTP Relay with Web Dashboard

速览

该工具提供SMTP中继功能,并配备直观的Web管理仪表盘。它简化了邮件发送流程,便于用户监控和管理邮件传输状态。

AI 深度解读

SimpleRelay:基于 Web 仪表板的自托管多租户 SMTP 中继服务

背景

在现代 IT 基础设施中,邮件发送是系统运行、用户验证和安全通知的核心环节。然而,对于家庭实验室(Home Lab)爱好者、小型企业或需要管理多设备网络的管理员而言,传统的邮件发送配置往往充满痛点。

通常情况下,如果需要在多个设备(如服务器、防火墙、摄像头、监控工具等)上发送电子邮件,管理员不得不在每一台设备上单独配置 SMTP 凭据。这不仅增加了维护复杂度(例如,每 10 台设备就需要维护 10 个 Gmail 应用专用密码),还往往要求设备具备公网 IP 或复杂的端口转发设置。此外,缺乏统一的监控视图使得排查发送失败、分析发送量以及管理不同邮件提供商(如 Gmail、Outlook、SendGrid 等)的健康状态变得困难。

在此背景下,SimpleRelay 应运而生。这是一个开源的、自托管的多租户 SMTP 中继服务,旨在通过集中化的 Web 仪表板简化出站邮件的路由和管理。它允许管理员通过一个统一的入口点管理多个上游 SMTP 提供商,并根据发件人地址智能路由邮件,从而解决了分散配置带来的维护噩梦。

核心内容

SimpleRelay 是一个基于 FastAPIPostfixPostgreSQLDocker 构建的多租户 SMTP 中继系统。其核心功能是通过一个统一的 Web 仪表板,集中管理出站邮件的发送、提供商配置、日志监控及用户权限。

1. 核心架构与部署

  • 技术栈:后端采用 Python 3.12 编写的 FastAPI 框架,邮件传输代理(MTA)使用 Postfix,数据存储使用 PostgreSQL 16,前端基于 React + Vite。
  • 部署方式:提供单文件 docker-compose.yml 部署方案,简化了安装过程。用户只需克隆仓库、配置环境变量并启动容器即可运行。
  • 默认配置:系统开箱即用,默认值经过优化。但在生产环境中,强烈建议修改默认密码以确保安全。

2. Web 仪表板功能详解

SimpleRelay 提供了丰富的 Web 界面,分为普通用户视图和管理员视图:

普通用户功能:

  • 仪表盘(Dashboard):实时展示今日发送总量、错误统计、各上游提供商的健康状态(含响应时间)以及最近的邮件日志条目。
  • 设置向导(Setup Wizard):引导用户完成首次配置。支持输入邮箱地址后自动检测上游提供商(如 Gmail、Outlook、Yahoo、Seznam、Zoho、AWS SES、SendGrid、Mailgun 或自定义 SMTP)及其 SMTP 设置。向导还包含连接测试、DNS 检查(SPF/DKIM/DMARC)以及访问控制配置。
  • 提供商管理(Providers)
    • 自动检测:根据邮箱地址自动识别提供商类型。
    • 应用密码指导:针对需要应用专用密码的提供商(如 Gmail、Outlook、Yahoo),提供直接链接和操作指南。
    • 连接与验证:支持 SMTP 连接测试、DNS 验证(包括针对特定提供商的 DKIM 选择器扫描)。
    • 发送测试:允许通过中继发送测试邮件以验证配置。
    • 限额与访问控制:支持设置每日发送限额,并强制要求配置 IP 白名单(可选配置 SMTP AUTH 作为额外认证层)。
  • 邮件日志(Mail Logs):提供可搜索的日志记录,包含发件人、收件人、主题、状态、客户端 IP 和时间戳,涵盖已发送、失败和退信的邮件。

管理员功能:

  • 用户管理(User Management):列出所有注册用户,支持激活/停用账号(停用会自动挂起该用户的所有中继服务)、更改角色(用户/管理员)、设置每个用户的最大中继数量及中继自动过期时间。
  • 代理管理(Proxy Management):管理出站 IP 和 SOCKS5/HTTP 代理。支持按协议类型(直连 IP、SOCKS5、HTTP)和提供商类型进行过滤分配,实现轮询负载跟踪,并提供代理连通性测试功能。
  • 提供商类型限额(Provider Type Limits):可针对特定提供商类型(如 Gmail、Outlook)设置全局每日发送限额,适用于所有用户。
  • 管理员仪表盘(Admin Dashboard):展示全局统计信息,包括总/活跃用户数、总/活跃/锁定中继数、代理状态及今日发送/错误总数。
  • 提供商监督(Provider Oversight):查看任何用户的中继列表,并有权锁定或解锁特定提供商,需填写锁定原因。

3. 安全与隐私机制

  • 无开放中继:内置 Postfix 策略服务器,强制要求每个提供商配置 IP 白名单。未配置白名单的 IP 将被拒绝连接,从根本上杜绝开放中继风险。
  • 认证机制:支持 JWT 认证,使用 HttpOnly Cookie 存储令牌,防止 XSS 攻击。
  • 数据隐私:如果未配置外部邮件发送目标,验证和重置密码邮件仅记录到控制台(开发模式),不实际发送。

4. 家庭网络应用场景

SimpleRelay 特别适合家庭网络环境。通过部署在局域网内的服务器(如 Proxmox、Synology NAS 或树莓派)上,家庭网络中的所有设备(如 pfSense 防火墙、Grafana 监控、Home Assistant、摄像头等)只需将 SMTP 服务器指向 SimpleRelay 的内网 IP 和端口(默认 2525),即可统一发送邮件。

  • 无需公网 IP:不需要 NAT 或端口转发。
  • 集中凭据管理:只需维护一份上游邮件提供商的凭据,而非在每个设备上分别配置。
  • 广泛兼容性:文档列出了 50 多种兼容设备,包括服务器、防火墙、摄像头、监控工具、备份软件、UPS 和打印机等。

关键要点

  • 多租户架构:支持多个独立用户,每个用户拥有独立的提供商配置、发送限额和访问控制策略。
  • 智能路由与自动检测:根据发件人邮箱地址自动识别上游 SMTP 提供商,并自动填充 SMTP 设置,大幅降低配置门槛。
  • 强制安全策略:通过 IP 白名单强制访问控制,确保中继服务不会被滥用为开放中继;支持 SMTP AUTH 作为可选的第二层认证。
  • 全面的监控与日志:提供实时的健康状态监控、响应时间追踪以及详细的邮件发送日志,便于故障排查。
  • 代理支持:内置代理管理功能,支持 SOCKS5 和 HTTP 代理,并可针对特定提供商类型分配不同代理,实现负载均衡和故障转移。
  • 开箱即用的家庭解决方案:专为家庭实验室设计,无需公网 IP 即可实现局域网内所有设备的统一邮件发送,简化了维护工作。
  • 多语言支持:用户界面支持英语、捷克语、德语、俄语和西班牙语,并支持运行时切换语言。
  • 开源许可:采用 MIT 许可证,允许自由使用和修改。

意义与影响

SimpleRelay 的出现填补了自托管邮件基础设施中的一个重要空白。对于个人用户、小型团队以及家庭实验室爱好者而言,它提供了一种低成本、高可控性的邮件发送解决方案。

首先,它极大地降低了 SMTP 集成的复杂性。通过将繁琐的 SMTP 配置、DNS 验证和凭据管理集中到一个 Web 界面中,管理员无需深入理解复杂的邮件协议细节即可实现可靠的邮件发送。自动检测功能尤其适合那些不熟悉 DNS 记录配置的用户。

其次,它提升了系统的安全性和可维护性。通过强制 IP 白名单和提供集中的日志监控,SimpleRelay 帮助管理员更好地掌控邮件发送行为,防止因配置错误导致的安全漏洞。在多设备环境中,集中式管理显著减少了维护工作量,提高了系统的整体稳定性。

最后,SimpleRelay 的开源性质和模块化设计使其具有很高的灵活性。用户可以根据自身需求定制功能,或将其集成到现有的自动化运维流程中。随着物联网设备和智能家居系统的普及,对可靠、安全的本地邮件通知需求日益增长,SimpleRelay 为这一需求提供了一个优雅且高效的解决方案。

查看原文 →github.com