Dada Mail 11.22.0 介绍与选型指南
Dada Mail 11.22.0 全景认知:Perl CGI 邮件列表系统定位、单入口 mail.cgi 架构、12 项功能特性实测清单、免费版 3×100 限制与 CGI/FCGI 模式科普,附 phpList/Sympa/Mailman 3/Listmonk 量化选型对比(星数与版本 2026-10-28 实查)。
Dada Mail 11.22.0 介绍与选型指南
目标:讲清 Dada Mail 是什么、能做什么、适合谁,并用同领域主流邮件列表方案做横向对比,帮助读者完成选型。版本、星数与官方口径均于 2026-10-28 联网核实(来源随文标注);功能与架构结论在 Ubuntu 22.04 + Dada Mail 11.22.0 实测环境(Apache 2.4.52 + MariaDB 10.6 + Perl 5.34.0,Web 端口 8146)验证。
一、环境信息
本篇是认知篇:数据来自两类渠道,均标注来源与查询日期。
- 联网溯源(查询日期 2026-10-28):
- 项目官网 dadamailproject.com(首页标题实测为 "Dada Mail - Self Hosted, Easy to Use Email Marketing Mailing List Manager");
- GitHub 仓库 Releases 页(仓库
justingit/dada-mail); - 官网下载页(发行文件托管在 SourceForge);
- GitHub 星数经 shields.io 实时徽章读取。
- 本地实测环境(结论验证用):
| 组件 | 版本 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 LTS | apt 直装依赖 |
| Perl | 5.34.0 | 系统自带,满足官方 5.10.1+ 要求 |
| Apache | 2.4.52 | mpm_prefork + mod_cgi 实测可用 |
| MariaDB | 10.6 | SQL 后端,21 张 dada_* 表 |
| Dada Mail | 11.22.0 | 发布标识 v11_22_0_stable_2023-09-18 |
| Web 端口 | 8146 | mail.cgi 经 http://<主机>:8146/cgi-bin/dada/mail.cgi 访问 |
二、软件概述
Dada Mail 是一款用 Perl 编写、以 CGI 方式运行的 Web 邮件列表管理系统(Mailing List Manager),由开发者 Justin Simoni 维护,官网对其定位的描述是 "contemporary mailing list manager"——一个面向自托管场景、成熟且易用的邮件列表管理平台。它同时覆盖两类典型场景:
- 公告列表(Announce-Only):管理员单向群发,覆盖营销/通知场景,支持富文本编辑器、网页 URL 抓取转邮件正文、定时与周期发送、打开率与点击率跟踪;
- 讨论列表(Discussion List):通过内置 Bridge 插件经 POP3/IMAP 收取订户回信并分发全组,实现社区式邮件讨论。
版本与许可证(实查于 2026-10-28):官网下载页与 GitHub Releases 页的最新稳定版均为 11.22.0(发布标识 v11_22_0_stable_2023-09-18),发行物为 dada_mail-v11_22_0_stable_2023-09-18.tar.gz(约 29 MB)。许可证为 GPL v2(发行包内 extras/license/gnu_public_license.txt)。
版本节奏(GitHub Releases 页实查):最近 5 个稳定版依次为 v11_20_0(2022-10-03)、v11_20_1(2023-01-18)、v11_20_2(2023-07-06)、v11_21_0(2023-08-07)、v11_22_0(2023-09-18),约一年 1~2 个稳定版,节奏偏慢但持续维护。
商业模式:免费社区版有硬性限制——官网购买页实测原文为 "Support Limitations : up to three mailing lists; 100 subscribers per mailing list; No access to Pro Dada Manual",即最多 3 个列表、每个列表最多 100 订户;Pro Dada 订阅($150/年)解除该限制并提供官方手册与优先支持。这是选型时最先要核对的一条硬约束。
社区活跃度(shields.io 徽章实读,2026-10-28):GitHub 星标 182、复刻 43。星数在同领域偏小(对比见第七节),属于典型"小众但长寿"的自托管项目。
三、核心架构
架构结论全部来自本地实测环境的真实文件与请求路径。
1. 单入口 CGI 程序:整个应用只有一个入口 mail.cgi(位于程序目录 cgi-bin/dada/),全部功能通过 URL flavor 路由,实测形态如 mail.cgi/list/devops/(列表页)、mail.cgi/archive/devops/(归档)、mail.cgi/t/<令牌>/(闭环确认)、mail.cgi/_schedules/_all/_all/_silent/(后台调度)。$RUNNING_UNDER 配置项实测取值 CGI,程序同时声明支持 FastCGI/PSGI 运行模式。
💡 技术拓展:Perl Web 应用的三种常见运行模式对比——
模式 原理 特点与取舍 CGI 每请求拉起一个解释器进程 部署最简单、隔离最好;每请求都有解释器启动开销 FastCGI 常驻进程池处理请求 吞吐高;需 mod_fcgid/FCGI Wrap 与进程管理 PSGI 通过 Plack 协议挂在应用服务器上 灵活可嵌入各类 Perl 应用服务器;部署链路最长 Dada Mail 默认按 CGI 运行(实测
$RUNNING_UNDER = 'CGI'),对中小列表规模足够;并发压力上来后再评估 FastCGI。
2. 三块目录(实测落位):
- 程序目录:
/usr/lib/cgi-bin/dada/——DADA/(Perl 模块库)、plugins/、extensions/、static/、templates/、extras/(含维护脚本)与mail.cgi; - 支持文件目录:
/var/www/html/dada_mail_support_files/——CKEditor 等静态 CSS/JS,Web 直接可访问; - 数据目录:
/var/lib/dadamail/.dada_files/——实测子目录.configs/(全局配置.dada_config)、.logs/、.archives/、.backups/、.lists/、.templates/、.tmp/。
3. SQL 后端:安装时建 21 张 dada_* 表(dada_subscribers、dada_settings、dada_archives、dada_sessions 等,实测 SHOW TABLES 清单)。支持 MySQL(推荐)/PostgreSQL/SQLite 三种后端——实测安装向导中 PostgreSQL/SQLite 选项默认置灰,安装对应 Perl DBD 驱动(libdbd-pg-perl/libdbd-sqlite3-perl)后即可选。
4. 发信通道:默认走 sendmail 兼容命令(配置 $MAILPROG = '/usr/sbin/sendmail',实测群发事件日志记录 sending_method=sendmail),也可在列表级切换 SMTP,或集成 Amazon SES/Mailgun(向导有独立配置组)。
5. 后台任务:唯一的调度入口是 _schedules URL,由系统 cron 每 5 分钟拉取一次;群发消息先入队、再由 Mailing Monitor 经该入口分批投递。实测一次 2 收件人的群发耗时 16 秒、统计口径 450 messages/hour(小样本,仅供量级参考)。
6. 安全设计(实测):安装完成后必须移除/改名 installer 目录,否则 mail.cgi 持续显示 "There Seems to be a Problem" 警告页(实测复现);管理表单带 CSRF 令牌(cookie _csrf_token);DISABLE_OUTSIDE_LOGINS 默认开启,拒绝来自外部表单的登录提交;订阅默认强制闭环确认(Closed-Loop Opt-In),实测确认邮件经本地 Postfix 投递、点击令牌链接后订户状态才由 sub_confirm_list 翻转为 list。
四、功能特性
以下特性均可在实测环境逐条验证(向导复选项、配置项或运行行为):
| 特性 | 说明 | 实测依据 |
|---|---|---|
| 公告/讨论双模式 | 同一程序覆盖单向群发与社区讨论 | Bridge 插件随向导默认安装(复选框默认勾选) |
| 闭环订阅确认 | 订阅需邮件确认,防伪造订阅 | 实测确认邮件 + /t/<令牌>/ 确认链路 |
| GDPR 同意管理 | 列表级 consent 声明,订阅必须勾选 | 实测 dada_consents 表与订阅表单 consent_1 复选框 |
| 富文本编辑器 | CKEditor/TinyMCE 可选 | 向导默认安装 CKEditor(复选框默认勾选) |
| 网页/RSS 转邮件 | 给 URL 直接抓取正文入邮件 | 撰写表单实测含 feed_url 组与网页抓取选项 |
| 定时与周期发送 | 单次定时/按周循环调度 | 撰写表单实测含 schedule_type=single/recurring |
| 群发队列与限速 | Mailing Monitor 分批投递,可暂停/恢复 | 实测 dada_mass_mailing_event_log 14 类事件 |
| 打开/点击跟踪 | Tracker 插件统计打开率与点击 | 向导默认安装 Tracker(复选框默认勾选) |
| 公开归档 | 群发消息可公开浏览 | 实测 /archive/<列表短名>/ 路由 |
| 订户档案与字段 | Profiles + 自定义字段 + CSV 导入导出 | dada_profiles 等表实测存在 |
| 退信处理 | Bounce Handler 经 POP3/IMAP 拉取退信 | 向导含 Bounce Handler 配置组(服务器/端口/SSL) |
| 多后端/云发信 | MySQL/Pg/SQLite;SES/Mailgun | 向导 Backend 下拉与 SES/Mailgun 配置组实测 |
五、快速开始(最小可用示例)
以下 5 步是从零到 "Congratulations" 页面的最短路径,每步命令均实测(完整排障与两种安装方案见本专栏安装部署篇,发布后于文末参考链接可点击跳转):
- 安装系统依赖(Ubuntu 22.04):
apt-get install -y apache2 mariadb-server libdbd-mysql-perl libdbi-perl \
libfile-homedir-perl libjson-perl libwww-perl libmime-tools-perl \
libemail-valid-perl libarchive-zip-perl libtext-csv-perl libdbd-sqlite3-perl curl
- 初始化数据库并授权(示例密码
q1w2e3r4):
mysql -e "CREATE DATABASE dadamail CHARACTER SET utf8mb4;"
mysql -e "CREATE USER 'dadamail'@'localhost' IDENTIFIED BY 'q1w2e3r4';"
mysql -e "GRANT ALL ON dadamail.* TO 'dadamail'@'localhost'; FLUSH PRIVILEGES;"
- 下载发行包并部署到 cgi-bin(下载页指向 SourceForge,2026-10-28 实查):
cd /usr/local/src
curl -L -o dada_mail_v11_22_0.tar.gz \
'https://sourceforge.net/projects/dadamail/files/dada_mail-v11_22_0_stable_2023-09-18.tar.gz/download'
tar xzf dada_mail_v11_22_0.tar.gz && cp -r dada /usr/lib/cgi-bin/
chown -R www-data:www-data /usr/lib/cgi-bin/dada
- 启用 Web 安装向导(官方安全设计:默认收起在
installer-disabled):
mv /usr/lib/cgi-bin/dada/installer-disabled /usr/lib/cgi-bin/dada/installer
chmod 755 /usr/lib/cgi-bin/dada/installer/install.cgi
- 浏览器访问
http://<主机>:8146/cgi-bin/dada/installer/install.cgi,按向导填写.dada_files位置、Support Files 路径、Root 密码与数据库连接,完成后实测页面标题为Installation and Configuration Complete!;随后安装向导要求的两个必做项(配 cron、移除 installer 目录)即可在http://<主机>:8146/cgi-bin/dada/mail.cgi看到 "Congratulations, and Welcome to Dada Mail!" 欢迎页(标题实测照抄)。
六、适用场景与限制
适合的场景:
- 中小规模的公告/营销邮件列表(新闻信、产品通知、社区周报);
- 需要讨论组能力的团队/社区(Bridge 插件 + 邮箱即参与);
- 对数据自主与合规敏感的组织:同意管理、退订、CAN-SPAM 实体地址字段均为内置强制项(实测建列表时必填 Physical Address 与 Privacy Policy);
- 已有 LAMP/Perl 运维能力、想避免 SaaS 月费与订阅锁定的自托管用户。
限制与风险(选型前必须知晓):
- 免费版硬限制:3 个列表 × 每列表 100 订户(官网购买页原文,2026-10-28 实查);超限需 Pro Dada 订阅;
- 并发模型:CGI 模式每请求拉起解释器进程,实测 Apache mpm_event 下的 cgid 守护连接不稳(AH01257 报 503,需切 mpm_prefork + mod_cgi 解决,排障实录见安装篇);大列表群发吞吐受此约束;
- 单机架构:无原生集群/多节点方案,横向扩展靠 DB 与 SMTP 通道外置;
- 发布节奏:最近一个稳定版发布于 2023-09,一年 1~2 版,功能迭代慢(求活跃社区的项目需权衡);
- 技术栈小众:Perl 运维人才与生态较稀缺,二次开发门槛相对 Node/Go 项目高。
七、同类选型对比
同领域(自托管邮件列表/营销系统)主流方案横向对比。星数为 shields.io GitHub Stars 徽章实读(查询日期 2026-10-28);其余维度来自各项目官方仓库/官网公开信息。
| 项目 | 语言/形态 | 后端 | 许可 | GitHub 星数 | 特色 | 适合谁 |
|---|---|---|---|---|---|---|
| Dada Mail 11.22.0 | Perl(CGI) | MySQL/Pg/SQLite | GPL v2 | 182 | 公告+讨论一体、闭环订阅、同意管理、向导化安装 | 想要"装完即用"的中小列表,接受免费版 3×100 限制 |
| phpList | PHP(Web 应用) | MySQL | AGPLv3 | 89 | 老牌营销邮件、bounce 处理、插件市场 | 纯营销场景、PHP 栈团队 |
| Sympa | Perl(Daemon+Web) | MySQL/Pg/SQLite | GPL v2 | 315 | 企业级讨论组、LDAP/SSO 集成、多语言 | 高校/企业内部邮件组、需组织目录集成 |
| Mailman 3 | Python(Core+Web) | PostgreSQL/SQLite 等 | GPL v3 | 907 | GNU 系标准、HyperKitty 归档、REST API | 开源社区/技术邮件组 |
| Listmonk | Go(单二进制) | PostgreSQL | AGPLv3 | 24k | 高性能、现代 UI、模板+REST API | 追求现代栈与高吞吐的营销/新闻信 |
解读与选型建议:
- 如果列表规模在数百订户内、想要一个安装向导走完、公告与讨论都要——Dada Mail 的完成度最高,但注意免费版 3×100 的硬限制,超限即需付费订阅或换方案;
- 如果是企业内部通讯录式邮件组、要接 LDAP/SSO——选 Sympa(同为 Perl,但形态是常驻守护进程,吞吐与集成能力更强);
- 如果是开源社区技术邮件组、看重归档与 API——选 Mailman 3;
- 如果是纯营销邮件、量大(万级以上)、追求现代化技术栈与单二进制运维——选 Listmonk,其活跃度(24k 星)与性能(Go 单二进制)远超其余;
- 如果团队是 PHP 栈且只要营销发送——phpList 可作候选,但注意其版本与社区活跃度同样偏缓。
八、参考链接
- 项目官网(首页/购买页):https://dadamailproject.com/ (查询日期 2026-10-28)
- 官方下载页:https://dadamailproject.com/d/download.html (指向 SourceForge 发行文件,查询日期 2026-10-28)
- GitHub Releases(
justingit/dada-mail):https://github.com/justingit/dada-mail/releases (查询日期 2026-10-28) - 官方安装文档:https://dadamailproject.com/d/install_dada_mail.pod.html (查询日期 2026-10-28)
- 全局变量配置指南:https://dadamailproject.com/d/global_variables.pod.html (查询日期 2026-10-28)
- 星数与竞品星数:shields.io GitHub Stars 徽章实读(查询日期 2026-10-28)