Keila 0.30.3 介绍与选型指南
Keila 0.30.3 开源邮件营销/Newsletter 平台介绍与选型:软件定位、Elixir/Phoenix 技术架构、功能特性、快速开始路径与 Listmonk/Mautic/phpList 量化对比,数据均于 2026-10-26 联网溯源。
Keila 0.30.3 介绍与选型指南
目标:说清 Keila 这款开源邮件营销(Newsletter)平台是什么、能做什么、怎么选型。本篇为认知与选型篇,全部信息通过官方仓库、官方文档与公开渠道联网溯源(查询日期 2026-10-26),不做本地实测;部署实操与功能验证见本专栏后续各篇。
一、环境信息
本篇是软件介绍与选型篇,不涉及本地部署实验,本节记录取证口径与各软件的版本基线,便于读者复核数据时效。
- 取证日期:2026-10-26(文中所有版本号、社区数据均为此日实查)
- Keila 最新稳定版:0.30.3(GitHub Releases 实查,发布于 2026-09-06)
- 官方仓库:
pentacent/keila(GitHub),由德国 Pentacent 团队开发维护 - 官方文档站:keila.io(含 Installation / Docs 章节)
- 官方云服务:app.keila.io(Keila Cloud 托管版,可免费试用)
- 数据来源:GitHub Releases 页面、仓库 README.md、仓库 mix.exs 与 ops/ 目录源码、Docker Hub 官方镜像页、shields.io 公开徽章数据
各对比软件版本基线(2026-10-26 实查):
| 软件 | 最新发布版本 | GitHub Stars | License | 技术栈 |
|---|---|---|---|---|
| Keila | 0.30.3(2026-09-06) | 2.2k | AGPL-3.0 | Elixir / Phoenix |
| Listmonk | v7.0.0-beta.1(稳定线 v6.2.0) | 24k | AGPL-3.0 | Go |
| Mautic | v7.2.1 | 11k | GPLv3 | PHP / Symfony |
| phpList | v3.6.17 | 877 | AGPL-3.0 | PHP |
表格解读:四者同为「自托管邮件营销」赛道的开源产品,但定位差异明显——Listmonk 是 Go 单二进制的轻量 Newsletter 发送器,Mautic 是功能全面的营销自动化套件(含 CRM 式联系人生命周期管理),phpList 是历史最悠久的传统邮件列表群发工具,Keila 则以「现代 Web 体验 + 开箱即用的合规功能(双重确认)+ 单一 PostgreSQL 依赖」切入。Stars 数据说明 Listmonk 与 Mautic 的社区体量远大于 Keila,Keila 属于「小而美」的挑战者。
二、软件概述
Keila 是一个开源的 Newsletter 工具,官方定位是 Mailchimp、Sendinblue(现 Brevo)等商业邮件营销服务的开源替代品。项目名称 Keila 来源于项目吉祥物——一头名叫 Keila 的大象(呼应 PostgreSQL 的大象基因,Fun fact:官方 README 打趣说 Keila 爱去芬兰的湖边度假)。
- 核心能力:管理联系人(Contacts)、创建动态分群(Segments)、撰写群发活动(Campaigns)、生成订阅注册表单(Forms),并通过 SMTP 或各家邮件发送服务商(ESP)把邮件发出去。
- 合规主打点:Keila 把「双重确认订阅(double opt-in)」、退订链接、举报(complaint)处理等合规功能作为核心卖点——这对欧盟 GDPR 场景下的邮件营销至关重要,也是它与「裸群发」工具的本质区别。
- 开源协议:AGPL-3.0(仓库 LICENSE.md 实查)。AGPL 对「修改后对外提供网络服务」的场景要求开放源码,商业公司引入时需注意这一传染性条款;个人与内部使用无影响。
- 部署形态:官方主推容器化部署(官方镜像
pentacent/keila,Docker Hub 实查累计拉取约 136k 次);同时源码支持标准 Elixir Release 构建,可在 Linux 服务器上以自包含运行目录方式落地(见《Debian 12 安装 Keila 0.30.3 指南》)。 - 维护方:Pentacent(德国 Web 开发公司),核心团队 2-3 人,有 GitHub Sponsors 赞助渠道,另有 Keila Cloud 商业托管版构成可持续性收入。
💡 技术拓展:「邮件营销平台」与「邮件服务器」是两类不同的软件,选型时不要混淆——
类型 代表软件 职责 是否直接触达收件方 邮件营销平台(本文) Keila / Listmonk / Mautic / phpList 管理订阅者、编辑内容、批量投递、统计打开率 否,通过 SMTP/ESP 通道发信 邮件服务器(MTA) Postfix / Stalwart / Mailcow 收发互联网邮件、维护队列与投递路由 是,直接与对方 MX 通信 Keila 自身不发邮件,它把邮件交给你在环境变量中配置的 SMTP 服务器或 ESP(如 AWS SES、Sendgrid、Mailgun、Postmark)。生产环境通常「Keila + 专业发信通道」组合使用,避免自建 MTA 处理 IP 信誉、SPF/DKIM/DMARC 的复杂度。
三、核心架构
本节基于 0.30.3 源码(mix.exs 依赖清单与 ops/ 官方构建文件实查)描述 Keila 的技术架构与依赖链。
3.1 技术栈构成
| 层 | 技术 | 版本要求(mix.exs 实查) |
|---|---|---|
| 语言运行时 | Elixir / Erlang OTP | Elixir ~> 1.18(官方构建用 OTP 27) |
| Web 框架 | Phoenix | ~> 1.7.21 |
| 交互式 UI | Phoenix LiveView | ~> 1.1 |
| ORM / 数据访问 | Ecto + Ecto SQL | ~> 3.7 / ~> 3.13 |
| 数据库 | PostgreSQL(postgrex 驱动) | ~> 0.22.0 |
| 后台作业 | Oban(基于 PostgreSQL 的作业队列) | ~> 2.20 |
| 邮件发送 | Swoosh + 各适配器 | ~> 1.20 |
| 前端构建 | esbuild 0.17.11 + TailwindCSS + EditorJS(官方 fork 块编辑器) | — |
表格解读:Keila 的外部依赖链极短——除应用进程外只需要一个 PostgreSQL。Oban 作业队列直接跑在 PostgreSQL 里(不需要 Redis/RabbitMQ),文件上传默认存本地目录(
USER_CONTENT_DIR),这意味着一台 Linux 服务器 + 一个 PostgreSQL 即可跑完整套系统;反过来,数据库也是唯一的强数据依赖,备份与迁移策略都围绕 PostgreSQL 设计。
3.2 运行架构与数据流
Keila 以单个 Elixir Release 进程运行(官方镜像内 ENTRYPOINT 为 bin/keila start),内部组件分工如下:
- Web 层(Phoenix Endpoint):默认监听 4000 端口(
PORT可改),同时承载三块流量——管理后台 Web UI、面向订阅者的公开页(注册表单、订阅确认、退订页、邮件在线预览页)、REST API(/api/v1)。 - 业务域(lib/keila 下):按 Elixir 上下文(context)划分模块——Auth(账户与 API Key)、Accounts(账户/项目/配额)、Contacts(联系人)、Mailings(Campaign/Sender/模板/调度)、Forms、Segments、Files(上传存储)等。
- 作业调度(Oban):群发任务的分批投递、定时发送、退订与举报回调处理都作为 Oban 作业持久化在 PostgreSQL 的
oban_jobs表中,由 Keila.Mailings.Scheduler 驱动;进程重启后作业不丢。 - 发送适配(Swoosh):系统邮件(注册验证、密码重置)与 Campaign 群发共用 MAILER 配置;支持 SMTP 协议与 SES/Sendgrid/Mailgun/Postmark 的 API 适配器。
- 数据持久化:全部业务数据在 PostgreSQL;用户上传文件(Campaign 内图片等)默认落
USER_CONTENT_DIR指定的本地目录,可用USER_CONTENT_BASE_URL指向独立域名或反代到对象存储。
3.3 发布形态(2026-10-26 实查)
- 官方容器镜像:
pentacent/keila,Docker Hub tag 与 GitHub Release 同步(latest/0.30/0/0.30.3 四个 tag 同指 2026-09-06 构建层,压缩体积约 134MB),底座为 alpine + Elixir 1.18/OTP 27。 - 源码 Release:GitHub Release 页面只提供源码 tag,不提供预编译二进制。这意味着服务器裸机部署需要走「源码构建 Elixir Release」路线(需要 Erlang/OTP 27 + Elixir 1.18 构建环境),或直接使用官方镜像。
- 托管版:Keila Cloud(app.keila.io)官方托管,免费档可发小额订阅量,适合不想运维的团队。
四、功能特性
本节功能清单来自官方 README、0.30.3 Release Notes 与源码路由表(lib/keila_web/router.ex)实查归纳。
4.1 联系人与分群
- 联系人管理:单个/批量导入(CSV)、字段级自定义属性(key-value data)、外部 ID(external_id)关联、订阅状态与退订管理;0.30.3 修复了「按 external_id 从 API 删除联系人」的问题,说明 API 化的联系人操作是官方维护重点。
- 动态分群(Segments):按联系人属性、订阅状态等条件组合出动态群体,Campaign 发送对象直接选择 Segment;分群在发送时实时求值,不需要手工同步名单。
- 双重确认(Double Opt-in):订阅表单可要求用户点击确认邮件后正式入库,这是 Keila 对 GDPR 场景的核心设计。
4.2 内容编辑与模板
- 块编辑器(WYSIWYG):基于 EditorJS 官方 fork 的块状编辑器,0.30.3 改进了「Shift+Enter 换行」体验;也支持直接写 HTML 与纯文本。
- Liquid 模板:Campaign 与模板支持 Liquid 语法注入联系人变量(如
{{ contact.first_name }});0.30.3 新增 Liquid 模板解析缓存,官方 Release Notes 明确「显著提升大 HTML 正文 Campaign 的渲染性能」。 - MJML 支持:响应式邮件排版用 MJML,0.30.3 修复了 CRLF 换行导致的 MJML 报错。
- Campaign 模板库:可保存/复用模板,新 Campaign 从模板创建。
4.3 发送能力
- 发送渠道:SMTP(含 0.30.3 新增的
MAILER_SMTP_TLS_MODE、MAILER_SMTP_AUTH_METHOD环境变量,可显式指定 TLS/STARTTLS 与认证方式)、AWS SES、Sendgrid、Mailgun、Postmark。 - 发送调度:Campaign 可立即发送或定时发送(API 亦开放
actions/send、actions/schedule端点);投递由 Oban 分批执行,可开启发送配额(ENABLE_QUOTAS)限制账户级发送量。 - 发送域与统计:支持配置多个 Sender;打开/点击等统计按联系人归集(Campaign stats 查询在 0.30.3 有专门的大数据量优化)。
4.4 平台与管理功能
- REST API:
/api/v1下 contacts、campaigns、forms、segments、templates、senders、messages 七大资源域的 CRUD 与动作端点,认证方式为Authorization: Bearer <API Key>(绑定到项目),并提供 OpenAPI 规范端点/api/v1/openapi可供生成客户端。 - Webhooks:内置 AWS SES 事件回调(
/api/webhooks/senders/ses)。 - 多项目(Projects)与多用户:账户下可建多个项目,API Key 按项目隔离权限;支持注册开关(
DISABLE_REGISTRATION)与 Sender 创建开关(DISABLE_SENDER_CREATION),适合私有化统一管控。 - 验证码:注册表单可接 hCaptcha 或 Friendly Captcha(
CAPTCHA_*环境变量族),未配置时回落 hCaptcha staging 配置并打警告日志。 - 本地化:界面支持多语言(含中文界面翻译,社区贡献)。
五、快速开始(最小可用示例)
本篇为认知篇,仅给出官方文档与官方仓库给出的最小部署形态以建立直观认识,本节内容为官方形态引用而非本地实测;逐命令的实测安装过程见《Debian 12 安装 Keila 0.30.3 指南》与《Keila 0.30.3 Docker Compose 部署指南》。
5.1 官方镜像单进程运行(官方形态)
官方 README 给出的自托管主路径是官方镜像 pentacent/keila。最小可运行条件是:一个可达的 PostgreSQL 实例 + 一组必需环境变量(SECRET_KEY_BASE、DB_URL、URL_HOST、系统邮件 MAILER 配置)。启动后访问 4000 端口(可用 PORT 变量改)进入 Web 注册页,注册的第一个账户即为管理员,可立即创建联系人列表与 Campaign。
5.2 官方 Compose 示例(官方形态)
官方仓库 ops/docker-compose.yml 提供了「Keila + PostgreSQL」的最小双服务编排(官方注明该文件面向本地测试而非生产就绪),要点为:
keila服务使用镜像pentacent/keila:latest,映射 4000 端口,注入SECRET_KEY_BASE、DB_URL、URL_HOST与 MAILER 变量;postgres服务使用postgres:alpine镜像,通过POSTGRES_PASSWORD初始化;- 首次启动时应用自动执行数据库迁移与初始化(源码 lib/keila/application.ex 中启动钩子自动调用
Keila.ReleaseTasks.init()),无需手工跑迁移命令。
💡 说明:
SECRET_KEY_BASE是 Keila 的会话签名根密钥,官方建议以head -c 48 /dev/urandom | base64生成至少 64 字符的强随机串;DB_URL格式为postgres://用户:密码@主机/库名。完整可复制、带实测回显的部署过程见《Keila 0.30.3 Docker Compose 部署指南》。
5.3 注册首个管理员
Keila 无预置管理员账号:首次启动后打开 Web 首页,点击注册(Registration)创建第一个用户,该用户即拥有完整管理能力,随后按「项目(Project)→ 发件人(Sender)→ 联系人列表/分群 → Campaign」的顺序完成首次发信闭环。本专栏部署篇均以演示账号 admin + 密码 q1w2e3r4 完成注册与验证。
六、适用场景与限制
6.1 适用场景
- 中小团队的 Newsletter 与公告邮件:产品周报、社区通讯、会员通知,配额与订阅管理开箱即用。
- GDPR 场景的合规订阅运营:双重确认、退订与举报处理内置,欧洲团队选型时的直接动机。
- 产品内嵌邮件能力:通过 REST API 把联系人增删、Campaign 触发嵌入自家系统(如注册后自动订阅欢迎系列)。
- 多租户/多品牌发信:一个实例多个项目,各自独立联系人、模板与 Sender,API Key 按项目隔离。
6.2 限制与风险
- 无官方裸机二进制:Release 页只有源码 tag,服务器直装必须自行源码构建(需要 Elixir 1.18 + OTP 27 构建链),对非 Elixir 团队有一定门槛;不想碰构建链就选官方镜像。
- 仅支持 PostgreSQL:不支持 MySQL/SQLite,已有 MySQL 栈的团队需新增一个数据库实例(也意味着备份/高可用方案与现有 MySQL 体系不通用)。
- 版本仍在 0.x:0.30.3 距 1.0 尚有距离,官方未承诺 API 与数据模型完全稳定,大版本升级前建议先看 Release Notes。
- 文件存储仅内置本地适配器:0.30.3 源码只有 Local 一个存储适配器,对象存储(S3 等)需通过
USER_CONTENT_BASE_URL指向独立域名并自行架设反代,原生 S3 协议直连需要等待官方路线图。 - 单人维护风险:核心团队规模小,虽然 2026 年发版活跃(1-9 月发了 7 个 Release),但 bus factor 有限,关键业务引入前建议锁定版本并自测升级路径。
七、同类选型对比
本节从社区活跃度、版本节奏、功能定位与兼容矩阵四个维度量化对比四款主流开源邮件营销平台。所有数据于 2026-10-26 通过各项目 GitHub 仓库、Releases 页面与官方文档实查。
7.1 社区活跃度与版本节奏(量化)
| 维度 | Keila | Listmonk | Mautic | phpList |
|---|---|---|---|---|
| GitHub Stars(2026-10-26) | 2.2k | 24k | 11k | 877 |
| 最新 Release | 0.30.3(2026-09-06) | v7.0.0-beta.1(稳定线 v6.2.0) | v7.2.1 | v3.6.17 |
| 2026 年发版节奏 | 活跃:1-9 月 7 个 Release | 活跃:6.x 稳定线 + 7.0 beta | 活跃:7.x 持续迭代 | 平稳:3.6.x 维护线 |
| 官方镜像拉取量 | 约 136k(Docker Hub 实查) | 数百万级(老牌 Go 工具) | 数千万级(营销套件头部) | 无官方镜像 |
| 商业支持 | Keila Cloud 官方托管 | 无官方托管(社区生态) | Mautic 官方+厂商生态 | phpList 4 研发线(社区) |
表格解读:论社区体量与生态成熟度,Listmonk(Go、24k Stars)与 Mautic(PHP 营销套件、11k Stars)是第一梯队;Keila 2.2k Stars 属第二梯队头部,但其 2026 年发版密度(月均 1 个)与 Issue 响应(Release Notes 致谢社区贡献者)显示项目健康度良好;phpList 体量最小、节奏最慢,属于「老系统维护」状态。
7.2 功能定位与兼容矩阵
| 维度 | Keila 0.30.3 | Listmonk v6.2.0 | Mautic 7.2.1 | phpList v3.6.17 |
|---|---|---|---|---|
| 定位 | 现代 Newsletter 工具 | 轻量 Newsletter/邮件列表发送器 | 全功能营销自动化套件 | 传统邮件列表群发 |
| 管理界面 | 现代化 Web UI(LiveView) | 现代化 Web UI(单页应用) | 功能繁多的 Web UI | 较传统的 Web UI |
| 数据库 | 仅 PostgreSQL | 仅 PostgreSQL | MySQL / MariaDB | MySQL |
| 部署单元 | 官方镜像 / Elixir Release | Go 单二进制(自带 Admin UI) | PHP 应用(需 Web 服务器 + PHP-FPM) | PHP 应用 |
| 发送通道 | SMTP + SES/Sendgrid/Mailgun/Postmark API | SMTP + AWS SES API | SMTP + 各 ESP 插件生态 | SMTP / PHP mail / sendmail |
| 营销自动化 | 无工作流引擎 | 无 | 有(Campaign 工作流、生命周期打分) | 弱(bounce 处理为主) |
| REST API | 有(Bearer Token,7 资源域 + OpenAPI 规范) | 有(Bearer Token,宽覆盖) | 有(OAuth 型 API,覆盖广) | 弱(以命令行/页面为主) |
| 双重确认 | 内置主打 | 内置 | 可配置 | 可配置 |
| License | AGPL-3.0 | AGPL-3.0 | GPLv3 | AGPL-3.0 |
表格解读:「要不要营销自动化工作流」是第一分水岭——需要行为打分、 drip 工作流、CRM 联动就选 Mautic(代价是 PHP 全家桶 + MySQL 与高资源占用);只要把 Newsletter 干净利落地发出去,Keila 与 Listmonk 都是轻量答案。第二分水岭是部署偏好——想要「一个二进制扔上去就跑」选 Listmonk;想要「现代化后台 + 合规功能开箱即用 + 完整 REST API/OpenAPI」选 Keila;phpList 适合存量系统延续,新项目不建议首选。
7.3 「如果……则……」选型建议
- 如果你的服务器上已有 PostgreSQL、想要界面现代、双重确认开箱即用、且需要用 API 把订阅流程嵌进自家产品 → Keila(配合本专栏《Debian 12 安装 Keila 0.30.3 指南》或《Keila 0.30.3 Docker Compose 部署指南》落地)。
- 如果你追求极简部署(单二进制)与海量订阅量发送性能、不介意界面朴素 → Listmonk,选型细节见《Listmonk 6.2.0 介绍与选型指南》。
- 如果你需要的是「营销自动化 + CRM + 表单 + 工作流」的套件而非纯 Newsletter → Mautic,选型细节见《Mautic 7 介绍与选型指南》。
- 如果你在维护既有的 phpList 群发体系、只求稳定运转 → 继续用 phpList v3.6.x,新建设施不建议再引入。
- 如果你不能接受 AGPL 的传染性条款且无法隔离部署 → 四者中改用商业 SaaS(如 Mailchimp/Brevo)或选择 MIT/Apache 协议的发送库自行组装。
八、参考链接
- Keila 官网:https://www.keila.io
- Keila GitHub 仓库:https://github.com/pentacent/keila
- Keila 0.30.3 Release:https://github.com/pentacent/keila/releases/tag/0.30.3
- Keila 官方镜像:https://hub.docker.com/r/pentacent/keila
- Keila 安装文档:https://www.keila.io/docs/installation
- Listmonk 仓库:https://github.com/knadh/listmonk
- Mautic 仓库:https://github.com/mautic/mautic
- phpList 仓库:https://github.com/phpList/phplist3
- 站内延伸阅读:《Listmonk 6.2.0 介绍与选型指南》、《Mautic 7 介绍与选型指南》