SnappyMail 2.38.2 介绍与选型指南

面向自托管邮件场景的 SnappyMail 认知与选型:定位沿革、架构与数据目录、功能与安全特性、快速上手路径,以及与 Roundcube、SOGo、RainLoop 的量化对比与选型建议。

SnappyMailSnappyMail邮件服务器2026/10/21

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 的配置体系分三层,这一结构对后续部署与运维影响很大:

  1. 全局配置 data/_data_/_default_/configs/application.ini:PHP INI 风格键值对,覆盖 Webmail 标题、登录策略、缓存、日志、联系人、安全开关等全局行为;可在管理面板(/?admin)修改,也可直接文本编辑,改动即时生效(PHP 应用每次请求读取)。
  2. 域配置 data/_data_/_default_/domains/<域名>.json:v2.38.2 起为 JSON 格式(早期版本为 INI),每个邮件域一份,定义该域用户的 IMAP/SMTP/Sieve 服务器地址、端口、加密方式与认证机制,是实现「一个 Webmail 入口接入多个邮件域」的关键。
  3. 用户与账户状态:管理员账号凭据(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

随后:

  1. 为该目录配置 Web 站点(Nginx location ~ \.php$ 交给 PHP-FPM,并禁止外部访问 /data 目录);
  2. 浏览器打开 https://<域名>/?admin,应用会生成 data/_data_/_default_/admin_password.txt;
  3. 读取该文件中的临时密码,以用户名 admin 登录管理面板;
  4. 在 Security 页立即修改管理员用户名与密码(修改后临时密码文件自动删除);
  5. 在 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.2Roundcube 1.7.5SOGo 5.12.12RainLoop 1.17.0(归档)
GitHub stars1.7k7.2k—(主仓库在 Alinto/sogo,stars 徽章未取到)4.1k
最新稳定版 / 发布时间v2.38.2 / 2024-10-09v1.7.5 / 2026-10-19SOGo-5.12.12 / 2026-10-13v1.17.0 / 2022-08
开发活跃度(master 最近提交)2026-10-20活跃活跃已停止
实现语言PHPPHPObjective-C (SOPE)PHP
许可证AGPL-3.0GPL-3.0LGPL-2.0+ / GPL 部分组件AGPL-3.0
数据库要求无(可选 SQLite/MySQL/PG 联系人)必需(MySQL/PG/SQLite)必需无
邮件协议IMAP + SMTP(无 POP3)IMAP + SMTPIMAP + SMTPIMAP + 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)。

八、参考链接