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 实查)。

DadaMail邮件Perl 语言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 LTSapt 直装依赖
Perl5.34.0系统自带,满足官方 5.10.1+ 要求
Apache2.4.52mpm_prefork + mod_cgi 实测可用
MariaDB10.6SQL 后端,21 张 dada_* 表
Dada Mail11.22.0发布标识 v11_22_0_stable_2023-09-18
Web 端口8146mail.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" 页面的最短路径,每步命令均实测(完整排障与两种安装方案见本专栏安装部署篇,发布后于文末参考链接可点击跳转):

  1. 安装系统依赖(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
  1. 初始化数据库并授权(示例密码 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;"
  1. 下载发行包并部署到 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
  1. 启用 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
  1. 浏览器访问 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.0Perl(CGI)MySQL/Pg/SQLiteGPL v2182公告+讨论一体、闭环订阅、同意管理、向导化安装想要"装完即用"的中小列表,接受免费版 3×100 限制
phpListPHP(Web 应用)MySQLAGPLv389老牌营销邮件、bounce 处理、插件市场纯营销场景、PHP 栈团队
SympaPerl(Daemon+Web)MySQL/Pg/SQLiteGPL v2315企业级讨论组、LDAP/SSO 集成、多语言高校/企业内部邮件组、需组织目录集成
Mailman 3Python(Core+Web)PostgreSQL/SQLite 等GPL v3907GNU 系标准、HyperKitty 归档、REST API开源社区/技术邮件组
ListmonkGo(单二进制)PostgreSQLAGPLv324k高性能、现代 UI、模板+REST API追求现代栈与高吞吐的营销/新闻信

解读与选型建议:

  • 如果列表规模在数百订户内、想要一个安装向导走完、公告与讨论都要——Dada Mail 的完成度最高,但注意免费版 3×100 的硬限制,超限即需付费订阅或换方案;
  • 如果是企业内部通讯录式邮件组、要接 LDAP/SSO——选 Sympa(同为 Perl,但形态是常驻守护进程,吞吐与集成能力更强);
  • 如果是开源社区技术邮件组、看重归档与 API——选 Mailman 3;
  • 如果是纯营销邮件、量大(万级以上)、追求现代化技术栈与单二进制运维——选 Listmonk,其活跃度(24k 星)与性能(Go 单二进制)远超其余;
  • 如果团队是 PHP 栈且只要营销发送——phpList 可作候选,但注意其版本与社区活跃度同样偏缓。

八、参考链接