SnappyMail 2.38.2 介绍与选型指南
面向自托管邮件场景的 SnappyMail 认知与选型:定位沿革、架构与数据目录、功能与安全特性、快速上手路径,以及与 Roundcube、SOGo、RainLoop 的量化对比与选型建议。
SnappyMail 2.38.2 介绍与选型指南
目标:本文是 SnappyMail 的认知与选型第一站,讲清楚它是什么、从哪里来、架构与配置体系长什么样、功能与安全特性覆盖哪些,并在同类 Webmail 产品间给出量化对比与选型建议。本文全部信息来自官方站点、官方仓库与官方 Wiki 的联网溯源(查询日期 2026-10-21,来源在各节标注)。
一、环境信息
本文为认知与选型篇,基于联网溯源撰写,不涉及作者本地环境操作。本节列出溯源口径,供读者评估信息新鲜度:
- 软件版本:SnappyMail v2.38.2(官方最新稳定版,发布于 2024-10-09,来源:GitHub Releases 页 releases/latest 重定向与发布页时间戳)
- 开发活跃度:master 分支最近一次提交 2026-10-20(来源:GitHub Commits 页面 committedDate 字段,查询日期 2026-10-21)
- 社区规模:1.7k stars(来源:shields.io GitHub Stars 徽章接口,查询日期 2026-10-21)
- 许可证:AGPL-3.0(来源:仓库主页 license 字段 spdxId)
- 官方渠道:官网 https://snappymail.eu/ ,仓库 https://github.com/the-djmaze/snappymail ,安装说明 https://github.com/the-djmaze/snappymail/wiki/Installation-instructions
- 竞品对照数据:Roundcube 7.2k stars / v1.7.5(2026-10-19 发布)、SOGo 5.12.12(2026-10-13 发布)、RainLoop 4.1k stars / v1.17.0(2022-08 发布后归档),均于查询日期 2026-10-21 经 shields.io 与 GitHub 发布页核实
二、软件概述
2.1 定位与身份
SnappyMail 的官方一句话定位是「Simple, modern & fast web-based email client」(简单、现代、快速的基于 Web 的电子邮件客户端,来源:GitHub 仓库描述)。要准确理解它的身份,需要抓住三个关键词:
- Webmail 客户端,不是邮件服务器:SnappyMail 是一个 PHP 编写的 Web 应用,部署后向用户提供浏览器中的邮件收发界面。它本身不接收、不投递、不存储邮件,必须连接到已有的 IMAP 服务器(收信)与 SMTP 服务器(发信)才能工作。邮件数据始终保存在邮件服务器上,SnappyMail 只是「浏览器到邮件服务器」之间的那层现代化 Web 界面。
- RainLoop 的后继者:SnappyMail 是 RainLoop Webmail 社区版(2013-2022 年活跃)的彻底升级与安全加固分支。官方 README 明确写到「The drastically upgraded & secured fork of RainLoop Webmail Community edition」,并致谢 RainLoop 团队「做出了过去优秀的 PHP 5 产品」。原版 RainLoop 在 v1.17.0(2022-08)之后停止维护、仓库归档,社区主线迁移到 SnappyMail。
- 无数据库依赖:官方 README 强调「no database required」——SnappyMail 的配置、缓存、联系人(默认 SQLite)等全部落在一个
data目录中,安装时不需要预装 MySQL/PostgreSQL,这是它与 Roundcube 等需要数据库的同类产品最直观的差异之一。
2.2 发展沿革
SnappyMail 由 RainLoop 原作者 djmaze 于 2020 年启动分支开发(仓库版权声明显示 Copyright (c) 2020 - 2024 SnappyMail),发展脉络如下:
| 阶段 | 时间 | 关键事实 |
|---|---|---|
| RainLoop 时代 | 2013 - 2022 | 原 Webmail 项目,最后一个版本 v1.17.0(2022-08),之后仓库归档 |
| SnappyMail 分支启动 | 2020 | 基于 RainLoop 社区版彻底重构,移除旧 JS、引入 ES2020、Squire 编辑器 |
| 持续演进 | 2020 - 2024 | 稳定版按月节奏发布,2024-10-09 发布 v2.38.2 |
| 当前状态 | 2024-10 至今 | master 分支持续活跃(最近提交 2026-10-20),稳定版本发布节奏放缓,最新稳定版仍为 v2.38.2 |
来源:GitHub 仓库 README、Releases 列表页与 Commits 页面(查询日期 2026-10-21)。
2.3 开源许可与社区
- 许可证:AGPL-3.0(GNU Affero 通用公共许可证第 3 版)。这是比 GPL 更强调「网络分发」的许可证:即使只通过网络提供服务(SaaS 形态),修改后的源码也需要向使用者开放。企业内部自用不受影响,但如果二开后的实例对外提供 Webmail 服务,需注意 AGPL 的开源义务。
- 社区规模:1.7k stars(shields.io,2026-10-21 查询)。相比 Roundcube(7.2k stars)体量小,但作为 RainLoop 的精神续作,覆盖了原项目的用户群。
- 支持渠道:官方 Wiki(安装、配置说明)、GitHub Issues(缺陷与需求)、官网文档。无商业公司背书,属于社区驱动项目(SOGo 的维护方 Alinto 则是商业公司)。
三、核心架构
3.1 技术栈与组件构成
SnappyMail 是典型的「单 PHP 应用 + 静态前端资源」结构(来源:官方 Release 包内容与官方 Wiki):
- 后端:PHP 7.4+(官方要求),通过 PHP-FPM 或 Apache mod_php 运行;业务代码位于应用目录
snappymail/v/<版本>/app/下,版本化存放,升级时新旧版本目录并存便于回退。 - 前端:原生 JavaScript(ES2020+)与 CSS,构建产物随 Release 包发布,采用 ServiceWorker 实现桌面通知,富文本编辑器为官方改造的 Squire(替代早期 RainLoop 使用的 CKEditor)。
- 数据目录
data/:应用唯一的状态存放点,包含application.ini(全局配置)、domains/*.json(每个邮件域一份连接配置)、plugins/(插件)、cache/(缓存)、logs/(日志)等,官方默认建议将该目录移出 Web 根目录或通过 Web 服务器规则禁止外部访问。 - 依赖面:PHP 必需扩展为 mbstring、Zlib、json、libxml、dom;可选扩展覆盖 cURL、gd/gmagick/imagemagick、gnupg、intl、ldap、openssl、PDO(MySQL/PostgreSQL/SQLite 联系人后端)、redis(缓存驱动)、Sodium、Tidy、zip、exif、uuid、xxtea 等(来源:官方 Wiki Requirements 一节)。
3.2 邮件访问链路
SnappyMail 在邮件体系中的角色是「客户端」,其邮件访问链路为:
浏览器 ⇄ HTTP(S) ⇄ SnappyMail (PHP) ⇄ IMAP 143/993(读信、文件夹、标记)
⇄ SMTP 25/465/587(发信)
⇄ ManageSieve 4190(服务器端过滤规则,可选)
- 收信:通过 IMAP 协议连接邮件服务器,支持 PLAIN/LOGIN/CRAM-MD5/SCRAM 系列 SASL 认证机制,支持 IMAP IDLE 实时推送。
- 发信:通过 SMTP 提交,支持认证与 SSL/TLS(465/587),亦可配置使用 PHP mail() 走本机 MTA。
- 过滤规则:通过 ManageSieve 协议(4190 端口)管理 Dovecot 等服务器端的 Sieve 过滤脚本,这是 SnappyMail 相比早期 RainLoop 增强的方向之一(官方 Wiki 提到「Added advanced Sieve」)。
- 明确不支持 POP3:官方 README 在分支改动清单中写明「Removed POP3 support」——选型时若邮箱环境只提供 POP3,SnappyMail 不适用。
3.3 配置体系(三层)
SnappyMail 的配置体系分三层,这一结构对后续部署与运维影响很大:
- 全局配置
data/_data_/_default_/configs/application.ini:PHP INI 风格键值对,覆盖 Webmail 标题、登录策略、缓存、日志、联系人、安全开关等全局行为;可在管理面板(/?admin)修改,也可直接文本编辑,改动即时生效(PHP 应用每次请求读取)。 - 域配置
data/_data_/_default_/domains/<域名>.json:v2.38.2 起为 JSON 格式(早期版本为 INI),每个邮件域一份,定义该域用户的 IMAP/SMTP/Sieve 服务器地址、端口、加密方式与认证机制,是实现「一个 Webmail 入口接入多个邮件域」的关键。 - 用户与账户状态:管理员账号凭据(
security.admin_login/admin_password,password_hash 哈希存储)与用户会话令牌也存放在 data 目录下;首次打开/?admin时会生成临时密码文件admin_password.txt,完成首次登录改密后该文件自动删除。
四、功能特性
4.1 核心功能清单
来源:官方 README、官方 Wiki 与 Release 说明(查询日期 2026-10-21):
- 多域与多账号:一个站点可配置多个邮件域,用户可在同一界面添加多个邮箱账号并切换。
- 完整邮件操作:文件夹管理、会话式阅读、拖拽整理、全文搜索(走 IMAP SEARCH)、附件预览与打包 ZIP 下载(需 PHP zip 扩展)。
- 富文本撰写:内置 Squire HTML 编辑器,支持暗色模式联动移除邮件内联背景/字色。
- Sieve 过滤规则:连接 ManageSieve 服务,在 Web 界面管理服务器端过滤与 vacation 自动回复。
- 通讯录:默认 SQLite 本地存储,可切换 MySQL/PostgreSQL(PDO),支持 LDAP 目录(需 PHP ldap 扩展)。
- PGP 加密:内置 OpenPGP 支持,配合 gnupg 扩展可加解密/签名邮件。
- 移动端适配:响应式界面,官方 README 将移动端体验列为相对 RainLoop 的改进项。
- 通知:ServiceWorker 桌面通知与未读角标。
- 多语言:内置 40+ 界面语言(来源:管理面板语言清单接口返回的语言数组)。
4.2 安全特性
安全是 SnappyMail 相对 RainLoop 的主要升级方向(来源:官方 README Modifications 清单):
- 管理员密码使用 PHP
password_hash/password_verify哈希存储(bcrypt),首次部署的临时密码以admin_password.txt明文落盘一次,改密后即删除。 - 登录失败尝试写入 syslog,官方提供 Fail2ban 集成指引,可对接防火墙封禁。
- 数据加密:检测到 Sodium 时优先使用 Sodium 加密敏感数据,否则退回 OpenSSL,XXTEA 仅用于从 RainLoop 迁移旧数据。
- 隐私友好:移除 Social/Gravatar/Facebook/Google/Twitter 等第三方引用,官方表述为「Privacy/GDPR friendly」。
- 移除 Sentry 上报(RainLoop 时代内嵌的应用监控上报),减少外呼。
- CSP、X-Frame-Options、Sec-Fetch 校验等 HTTP 安全头在应用层内置(来源:仓库源码 Service.php)。
4.3 扩展机制
- 插件系统:管理面板可启用/停用插件,插件支持配置参数,官方内置包附带常用插件(如修改密码、双因素认证等由插件承担)。
- 主题与语言:界面主题与 40+ 语言随包分发,可在管理面板与用户设置中切换。
- 模板事件:PHP 侧通过
include.php自定义数据目录等引导参数,JS 侧随包发布构建产物。
五、快速开始(最小可用示例)
本节给出官方推荐的最小可用路径,内容与命令均引自官方 Wiki(Installation-instructions),实际部署的逐步实测见本专栏 《Ubuntu 22.04 安装 SnappyMail 指南》。
5.1 环境要求
- PHP 7.4 及以上(v2.38.2 实际可运行于 PHP 8.x),必需扩展:mbstring、Zlib、json、libxml、dom
- 一个 Web 服务器(Nginx/Apache 均可)+ PHP-FPM
- 一个可用的 IMAP/SMTP 邮件后端(如 Dovecot + Postfix,或企业邮箱服务器)
- 浏览器支持:Chrome 69+、Firefox 78+、Opera 100+、Safari 12+、Edge 79+
5.2 最小安装与初始化(引自官方 Wiki)
# 进入 Web 根目录规划的位置(官方示例路径)
cd /var/www/webmail/snappymail
# 下载并解压官方发布包
wget https://snappymail.eu/repository/latest.tar.gz
tar -xzf latest.tar.gz
# 设置权限(目录 755 / 文件 644 / 属主为 Web 服务用户)
find /var/www/webmail/snappymail -type d -exec chmod 755 {} \;
find /var/www/webmail/snappymail -type f -exec chmod 644 {} \;
chown -R www-data:www-data /var/www/webmail/snappymail
随后:
- 为该目录配置 Web 站点(Nginx
location ~ \.php$交给 PHP-FPM,并禁止外部访问/data目录); - 浏览器打开
https://<域名>/?admin,应用会生成data/_data_/_default_/admin_password.txt; - 读取该文件中的临时密码,以用户名
admin登录管理面板; - 在 Security 页立即修改管理员用户名与密码(修改后临时密码文件自动删除);
- 在 Domains 页添加邮件域(IMAP/SMTP 服务器地址与端口),之后用户即可在首页用邮箱账号登录。
⚠️ 注意:官方 Wiki 特别强调将 Webmail 部署在独立于邮件服务器的机器上(服务隔离),并把
data目录移出 Web 根目录或禁止 Web 访问——application.ini与域配置中含服务器地址与凭据哈希,绝不能让公网直接读到。
六、适用场景与限制
6.1 适用场景
- 已有邮件服务器,缺现代 Web 界面:自建 Postfix+Dovecot、iRedMail/Mailcow/Mailu 等集成栈,或使用企业邮箱服务,需要一个轻量 Webmail 前端——SnappyMail 只需 PHP + Web 服务器即可接入。
- 低资源与无数据库环境:小型 VPS、NAS、边缘设备上的自托管邮件访问入口;不愿为 Webmail 维护 MySQL 实例。
- 多域托管场景:IDC/团队为多个邮件域提供统一 Webmail 入口,利用域配置(domains/*.json)实现按域路由。
- 从 RainLoop 迁移:RainLoop 已归档,SnappyMail 官方支持 XXTEA 旧数据迁移路径。
6.2 限制与不适用
- 不是邮件服务器:不提供 SMTP 收发服务、邮箱存储、反垃圾/防病毒,这些必须由后端邮件系统承担。
- 不支持 POP3:官方已移除 POP3 支持,仅有 IMAP 的环境无法接入。
- 联系人默认 SQLite:高并发读写场景建议外接 MySQL/PostgreSQL,否则需要评估 SQLite 锁行为。
- 稳定版发布节奏放缓:截至 2026-10-21,最新稳定版仍为 2024-10-09 的 v2.38.2(master 分支持续有提交),对「只追稳定版」的运维策略来说,版本更新不频繁,新特性需关注 master 或等待后续稳定版。
- PHP 版本依赖:PHP 配置(如
open_basedir、禁用函数)过严的环境需要额外适配。
七、同类选型对比
7.1 候选同类产品
Webmail 前端赛道的同类产品中,选取社区最活跃的三个做对比;「邮件套件」(Mailcow、Mailu、iRedMail、Modoboa 等)属于包含 Webmail 在内的全家桶,不在本表单列,但其 Webmail 组件本身就是 Roundcube 或 SnappyMail:
- Roundcube:老牌 PHP Webmail,事实上的行业默认选项,需数据库支撑。
- SOGo:Alinto 公司维护的 Groupware(Webmail + 日历 + 通讯录 + 活动目录集成),体量与功能面远超纯 Webmail。
- RainLoop:SnappyMail 的前身,已停止维护(仓库归档),仅作为迁移参照。
7.2 量化对比表
以下数据均于查询日期 2026-10-21 经 shields.io 徽章接口与 GitHub 发布页核实:
| 维度 | SnappyMail 2.38.2 | Roundcube 1.7.5 | SOGo 5.12.12 | RainLoop 1.17.0(归档) |
|---|---|---|---|---|
| GitHub stars | 1.7k | 7.2k | —(主仓库在 Alinto/sogo,stars 徽章未取到) | 4.1k |
| 最新稳定版 / 发布时间 | v2.38.2 / 2024-10-09 | v1.7.5 / 2026-10-19 | SOGo-5.12.12 / 2026-10-13 | v1.17.0 / 2022-08 |
| 开发活跃度(master 最近提交) | 2026-10-20 | 活跃 | 活跃 | 已停止 |
| 实现语言 | PHP | PHP | Objective-C (SOPE) | PHP |
| 许可证 | AGPL-3.0 | GPL-3.0 | LGPL-2.0+ / GPL 部分组件 | AGPL-3.0 |
| 数据库要求 | 无(可选 SQLite/MySQL/PG 联系人) | 必需(MySQL/PG/SQLite) | 必需 | 无 |
| 邮件协议 | IMAP + SMTP(无 POP3) | IMAP + SMTP | IMAP + SMTP | IMAP + SMTP + POP3 |
| 日历/联系人同步(CalDAV/CardDAV) | 无内置 | 需插件(依赖后端) | 内置完整 | 无 |
| Sieve 过滤 | 内置 | 需 managesieve 插件(随包附带) | 内置 | 插件 |
| 2FA/TOTP | 支持(含 TOTP 插件/登录插件) | 2FA 插件体系 | 支持 | 基础 |
| 部署重量 | 极轻(PHP 即装即用) | 轻(需建库) | 重(独立服务进程组) | 极轻 |
关键差异解读:SnappyMail 与 Roundcube 同为 PHP 轻量级 Webmail,最大分野是数据库——SnappyMail 零数据库、解压即用,Roundcube 必须先建库;功能面上 Roundcube 生态插件最丰富、社区最大,SnappyMail 则在界面现代化、移动端体验与安全加固(Sodium、CSP、Fail2ban)上更激进。SOGo 是另一个量级的产品,适合需要日历/协作的完整 Groupware 场景。RainLoop 已归档,仅应作为迁移出发点而非新部署选项。
7.3 选型建议
- 如果已有邮件后端、只想要一个现代轻量的 Web 界面、不想维护数据库 → 选 SnappyMail;安装成本最低(tarball 解压 + PHP-FPM 即可)。
- 如果追求最大插件生态与社区规模、或已有 Roundcube 运维经验 → 选 Roundcube;7.2k stars 与长期版本节奏(2026-10 仍在发版)意味着更多现成方案。
- 如果需要 Webmail + 日历 + 通讯录同步的完整协作套件 → 选 SOGo(或评估 Mailcow 这类内置 SOGo/其他 Webmail 的集成套件)。
- 如果存量环境是 RainLoop → 迁移到 SnappyMail(官方提供迁移路径),不要继续在已归档的 RainLoop 上做新部署。
- 如果唯一可用的收信协议是 POP3 → 以上四者中 SnappyMail/Roundcube 均不适用,需先补齐 IMAP 能力(如部署 Dovecot)。
八、参考链接
- 官网:https://snappymail.eu/
- 官方仓库:https://github.com/the-djmaze/snappymail
- 最新稳定版发布页:https://github.com/the-djmaze/snappymail/releases/tag/v2.38.2
- 安装说明(官方 Wiki):https://github.com/the-djmaze/snappymail/wiki/Installation-instructions
- 官方 Wiki 首页:https://github.com/the-djmaze/snappymail/wiki
- 许可证全文:http://www.gnu.org/licenses/agpl-3.0.html
- 前身项目(已归档):https://github.com/RainLoop/rainloop-webmail
- 对比数据来源:https://github.com/roundcube/roundcubemail 、https://github.com/Alinto/sogo 、https://img.shields.io/github/stars/the-djmaze/snappymail.json (查询日期 2026-10-21)