Dada Mail Ubuntu 22.04 安装部署指南

Dada Mail 11.22.0 在 Ubuntu 22.04 的官方 Web 向导安装实录:依赖安装、数据库初始化、Apache CGI 配置、向导全流程回显、四个真实排障案例与 cron 定时任务配置,附未实测项标注。

Dada Mail邮件Perl 语言2026/10/28

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 LTSPerl v5.34.0 系统自带
Perl5.34.0Dada Mail 要求 5.10.1+
Apache2.4.52CGI 模式(mod_cgi)
MariaDB10.6.23生产后端
Dada Mail11.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",正文明确提示三步:

  1. Rename the, dada/installer-disabled directory to, dada/installer
  2. Change the permissions of the dada/installer/install.cgi script to, 755
  3. 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 URLhttp://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 URLhttp://10.89.74.10:8150/dada_mail_support_files必须与 Program URL 同域/同子域
Dada Mail Root Passwordq1w2e3r4(示例,生产请用强密码)全局超级密码,单向加密存储
BackendMySQL (recommended)PostgreSQL/SQLite 选项显示 disabled(见排障实录三)
SQL Server / Portlocalhost / auto
Database Namedadamail
Username / Passworddadamail / 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 订阅版:付费构建,官方称在社区版基础上提供增强,本文未采购验证。

相关文档