Dada Mail Ubuntu 22.04 安装部署指南
Dada Mail 11.22.0 在 Ubuntu 22.04 的官方 Web 向导安装实录:依赖安装、数据库初始化、Apache CGI 配置、向导全流程回显、四个真实排障案例与 cron 定时任务配置,附未实测项标注。
Dada Mail Ubuntu 22.04 安装部署指南
本文基于 Dada Mail v11.22.0(发布标识 v11_22_0_stable_2023-09-18,2026-10-28 实查官网最新稳定版)在 Ubuntu 22.04 LTS 服务器上完整实测。所有命令与回显均来自真机操作记录,服务器内网地址以
10.89.74.10、Web 端口以8150为例。
一、环境规划
| 组件 | 版本 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 LTS | Perl v5.34.0 系统自带 |
| Perl | 5.34.0 | Dada Mail 要求 5.10.1+ |
| Apache | 2.4.52 | CGI 模式(mod_cgi) |
| MariaDB | 10.6.23 | 生产后端 |
| Dada Mail | 11.22.0 | 官方 tarball 发行包 |
端口规划:Apache 监听 8150,MariaDB 仅监听 127.0.0.1:3306。目录规划:
- 程序目录(CGI):
/usr/lib/cgi-bin/dada - 静态支持文件:
/var/www/html/dada_mail_support_files - 运行时数据目录(
.dada_files):/var/lib/dadamail/.dada_files - 备份目录:
/var/backups/dadamail
二、安装系统依赖
apt-get update
apt-get install -y apache2 mariadb-server libapache2-mod-perl2 \
libdbd-mysql-perl libdbi-perl libfile-homedir-perl \
libjson-perl libwww-perl libmime-tools-perl libemail-valid-perl \
libarchive-zip-perl libtext-csv-perl curl cron
实测回显(节选):
Setting up libdbd-mysql-perl (4.050-5build1) ...
Setting up cron (3.0pl1-137ubuntu3) ...
补装 libfile-homedir-perl 很关键:安装向导内部依赖 File::HomeDir 推测主目录,缺失时会在 installer_errors.txt 留下报错(见第七节排障实录)。
三、启动服务并初始化数据库
service mariadb start
service apache2 start
a2enmod cgi
apache2ctl restart
将 Apache 监听端口调整为 8150(/etc/apache2/ports.conf):
Listen 8150
并把默认站点 /etc/apache2/sites-available/000-default.conf 的首行改为 <VirtualHost *:8150>,重启后确认:
# ss -ltn | grep -E '8150|3306'
LISTEN 0 511 0.0.0.0:8150 0.0.0.0:*
LISTEN 0 80 127.0.0.1:3306 0.0.0.0:*
创建数据库与专用账号(密码请替换为自己的强密码,本文以 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;"
四、下载并部署发行包
官方下载页指向 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'
ls -lh dada_mail_v11_22_0.tar.gz
实测回显:
-rw-r--r-- 1 root root 29M Oct 28 04:34 dada_mail_v11_22_0.tar.gz
解压并把 CGI 程序目录放入 cgi-bin:
cd /usr/local/src && 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
chmod 755 /usr/lib/cgi-bin/dada/mail.cgi
发行包 dada/ 顶层结构(实测 ls 回显):
DADA data extensions extras installer-disabled mail.cgi plugins static templates
注意 installer-disabled 目录:v11.22.0 把 Web 安装器默认收在这个目录里,安装完成后要求移除(安全设计)。
五、启用 Web 安装向导
未配置时访问 mail.cgi 会直接给出启用向导的指引。实测访问 http://10.89.74.10:8150/cgi-bin/dada/mail.cgi,页面标题为 "There Seems to be a Problem",正文明确提示三步:
- Rename the, dada/installer-disabled directory to, dada/installer
- Change the permissions of the dada/installer/install.cgi script to, 755
- Visit the, dada/installer/install.cgi script in your web browser
按指引操作:
mv /usr/lib/cgi-bin/dada/installer-disabled /usr/lib/cgi-bin/dada/installer
chmod 755 /usr/lib/cgi-bin/dada/installer/install.cgi
先准备好两个会被向导写入的目录的宿主权限:
mkdir -p /var/lib/dadamail && chown www-data:www-data /var/lib/dadamail
chown www-data:www-data /var/www/html
六、Web 向导全流程实测
第 1 步:Install or Upgrade
浏览器打开 http://10.89.74.10:8150/cgi-bin/dada/installer/install.cgi,标题 "Install Dada Mail"。表单单选项 Installation 默认选中,点击 "» Continue «"。
第 2 步:配置表单
".dada_files" Directory Location 选择 MANUAL,填 /var/lib/dadamail(向导默认猜测为 /var/www)。其余关键项:
| 表单项 | 填写值 | 说明 |
|---|---|---|
| Dada Mail Program URL | http://10.89.74.10:8150/cgi-bin/dada/mail.cgi | 自动预填,需与实际访问 URL 一致 |
| Support Files:Server Absolute Path | /var/www/html | 站点根目录,向导在其下创建 dada_mail_support_files |
| Support Files:Corresponding URL | http://10.89.74.10:8150/dada_mail_support_files | 必须与 Program URL 同域/同子域 |
| Dada Mail Root Password | q1w2e3r4(示例,生产请用强密码) | 全局超级密码,单向加密存储 |
| Backend | MySQL (recommended) | PostgreSQL/SQLite 选项显示 disabled(见排障实录三) |
| SQL Server / Port | localhost / auto | |
| Database Name | dadamail | |
| Username / Password | dadamail / q1w2e3r4 | 第三节创建的账号 |
提交后返回 "Installing/Configuring Dada Mail" 页,安装日志(逐行照抄实测回显):
Attempting to make Dada Mail Files at, /var/lib/dadamail/.dada_files Success!
Attempting to create .dada_config file... Success!
Attempting to create SQL Tables... Success!
Clearing Session Data... Success!
Attempting to backup original ../DADA/Config.pm file... Success!
Attempting to edit ../DADA/Config.pm file... Success!
Setting up Support Files Directory... Success!
Installing plugins/extensions... Success!
Installing WYSIWYG Editors... Success!
Setting up CGI/FastCGI/PSGI Deployment... Done!
Checking for needed CPAN modules to install... Done!
Removing old Screen Cache... Success!
Removing Old Backups in, dada_mail_support_files dir... Success!
Installation and Configuration Complete!
同时验证数据库建表情况:
# mysql dadamail -e 'SHOW TABLES;'
dada_archives
dada_bounce_scores
dada_clickthrough_url_log
dada_clickthrough_urls
dada_confirmation_tokens
dada_consent_activity
dada_consents
dada_email_message_previews
dada_mass_mailing_event_log
dada_message_drafts
dada_password_protect_directories
dada_privacy_policies
dada_profile_fields
dada_profile_fields_attributes
dada_profile_settings
dada_profiles
dada_rate_limit_hits
dada_sessions
dada_settings
dada_simple_auth_str
dada_subscribers
第 3 步:两个 Required 收尾动作
完成页给出两个必做项:
Required 1:设置 cronjob(完成页提供的原始命令,建议每 5 分钟一次):
/bin/curl --user-agent "Mozilla/5.0 (compatible;)" --silent --get --url http://localhost/cgi-bin/dada/mail.cgi/_schedules/_all/_all/_silent/
写入 www-data 的 crontab(运行 Dada Mail 的用户身份):
apt-get install -y cron && service cron start
echo "*/5 * * * * /bin/curl --user-agent \"Mozilla/5.0 (compatible;)\" --silent --get --url \"http://localhost:8150/cgi-bin/dada/mail.cgi/_schedules/_all/_all/_silent/\" > /dev/null" \
| crontab -u www-data -
crontab -l -u www-data
实测回显:
*/5 * * * * /bin/curl --user-agent "Mozilla/5.0 (compatible;)" --silent --get --url "http://localhost:8150/cgi-bin/dada/mail.cgi/_schedules/_all/_all/_silent/" > /dev/null
手动触发一次验证调度入口可用(HTTP 200 即正常):
# curl -s -o /dev/null -w '%{http_code}\n' 'http://localhost:8150/cgi-bin/dada/mail.cgi/_schedules/_all/_all/_silent/'
200
Required 2:移除 installer 目录(防他人重新配置):
mv /usr/lib/cgi-bin/dada/installer /usr/lib/cgi-bin/dada/installer-aB3xY9kQ2m
chmod 644 /usr/lib/cgi-bin/dada/installer-aB3xY9kQ2m/install.cgi
七、排障实录
实录一:Support Files Directory 不可写
表单提交后页面顶部出现警告条,正文(照抄):
Some problems were encountered when attempting to install and configure Dada Mail. Details are marked below.
Can not create or write into the below Support Files Directory.
原因:/var/www/html 属主为 root,向导以 Web 服务器用户身份运行,无法创建 dada_mail_support_files 子目录。修复:
chown www-data:www-data /var/www/html
另有一个易错点:Support Files 的 Path 应填站点根目录(如 /var/www/html),而不是 /var/www/html/dada_mail_support_files 本身——安装器会在其下自建同名子目录,填深层路径会导致 URL 被拼成双层 .../dada_mail_support_files/dada_mail_support_files(本文实测出现过,见第九节修正方法)。
实录二:File::HomeDir 缺失
向导页校验异常时,dada/installer/installer_errors.txt 中的关键行(照抄):
[Wed Oct 28 04:42:52 2026] install.cgi: File::HomeDir not installed? Can't locate File/HomeDir.pm in @INC ... at /usr/lib/cgi-bin/dada/installer/lib/DadaMailInstaller.pm line 5845.
修复:
apt-get install -y libfile-homedir-perl
实录三:PostgreSQL / SQLite 选项不可用
向导 Backend 下拉框实测渲染:
<option value="mysql" selected="selected">MySQL (recommended)
<option value="Pg" disabled="disabled">PostgreSQL (not available)
<option value="SQLite" disabled="disabled">SQLite(not available)
原因:Perl DBD 驱动未安装(缺 DBD::Pg、DBD::SQLite)。MySQL 因已装 libdbd-mysql-perl 而可用。如需其他后端,安装 libdbd-pg-perl 或 libdbd-sqlite3-perl 后重新进入向导即可。官方建议 SQLite 仅用于本地测试。
实录四:创建列表时 "4 fields ... were filled out incorrectly"
首次用 root 密码创建列表提交后报 4 个字段错误,实测页面给出的具体原因包括:
- List Password 错误:
The password you have entered is the same as the Dada Mail Root Password. Please pick a different password.(列表密码不得与 Root 密码相同) Please type a Mailing List description.Please type a Mailing List Privacy Policy.Please type a Physical Address(CAN-SPAM 合规要求的实体地址)
修正后重新提交,页面标题变为 "Your New Mailing List Has Been Created"。
八、安装验证与首次登录
访问 http://10.89.74.10:8150/cgi-bin/dada/mail.cgi,页面标题实测为:
Congratulations, and Welcome to Dada Mail!
使用 Root 密码登录列表控制面板:首页登录框输入 q1w2e3r4(即安装时设置的 Dada Mail Root Password),选择目标列表即可进入完整管理界面。实测用 root 密码登录后跳转 "Which Mailing List?" 列表选择页,选择 devops 进入管理面板。
九、配置文件落位与一处必查修正
向导生成的全局配置文件位置(完成页原文照抄):
your outside config file is located at, /var/lib/dadamail/.dada_files/.configs/.dada_config
实测中向导把 $SUPPORT_FILES 的 url 写成了双层路径(Support Files Path 填了深层目录所致):
$SUPPORT_FILES = {
dir => '/var/www/html/dada_mail_support_files',
url => 'http://10.89.74.10:8150/dada_mail_support_files/dada_mail_support_files',
};
修正为单层后页面 CSS/JS 立即恢复正常加载:
cp .dada_config .dada_config.bak # 官方建议:改前先备份
sed -i 's|/dada_mail_support_files/dada_mail_support_files|/dada_mail_support_files|' \
/var/lib/dadamail/.dada_files/.configs/.dada_config
修正后首页引用的资源 URL 实测变为正确形态(照抄自页面源码):
<link rel="stylesheet" href="http://10.89.74.10:8150/dada_mail_support_files/static/css/vendor/foundation/app.css?v=v11.22.0%20stable%202023-09-18">
.dada_files 目录结构(实测 ls -la):
.archives .backups .configs .htaccess .lists .logs .templates .tmp
十、未实测项说明
以下官方能力本文未逐一实测,仅给出入口与预期结果:
- 官方
uncompress_dada.cgi辅助脚本安装法(共享主机无 SSH 场景):上传 tarball 与该脚本到 cgi-bin,浏览器访问即自动解压并进入向导,预期页面底部出现 "Continue Installing and Configuring Dada Mail!" 按钮(来源:官方安装文档)。 - Bundle::DadaMailXXL 全量 CPAN 模块包:官方完成页建议安装,预期增强部分高级功能(如更多邮件格式处理能力)。
- PostgreSQL / SQLite 后端:向导默认 disabled,装对应 DBD 驱动后可选,预期功能与 MySQL 一致(官方文档表述)。
- Pro Dada 订阅版:付费构建,官方称在社区版基础上提供增强,本文未采购验证。
相关文档
- 选型与功能总览:《Dada Mail 介绍与选型指南》
- 配置文件逐项解析:《Dada Mail 配置参数详解》
- 维护脚本与备份恢复:《Dada Mail 常用 CLI 命令详解》