Dada Mail 配置参数详解
Dada Mail 11.22.0 配置三层体系(Config.pm/.dada_config/列表设置)逐项解析:URL 与支持文件、加密密码、SQL 参数、发信通道、调度选项,附两处配置修改生效实录与高频变量速查表。
Dada Mail 配置参数详解
基于 Dada Mail v11.22.0 在 Ubuntu 22.04 实测(2026-10-28)。文中路径与取值均来自实测环境:程序目录
/usr/lib/cgi-bin/dada,数据目录/var/lib/dadamail/.dada_files,示例超级密码q1w2e3r4。
一、配置的三层体系
Dada Mail 的配置自上而下分三层,下层覆盖上层默认值:
| 层 | 文件/位置 | 作用 | 修改方式 |
|---|---|---|---|
| 程序默认层 | dada/DADA/Config.pm | 定义全部全局变量的出厂默认值(//= 赋值语法,仅在不被上层覆盖时生效) | 一般不手改 |
| 全局外部配置层 | /var/lib/dadamail/.dada_files/.configs/.dada_config | 安装向导生成的实际生效配置,程序每次请求都会加载 | 手动编辑,或管理端 Plugins → Global Configuration |
| 列表设置层 | SQL 表 dada_settings(按列表序列化存储) | 每个邮件列表自己的设置(名称、所有者、发信方式、隐私政策等) | 管理端列表控制面板 |
安装时若向导无法写入 Config.pm,会要求手工编辑其中一行来指定 .dada_config 的位置;本实测环境向导已自动完成改写,无需手改。
二、.dada_config 逐项解析
文件头注释(照抄):
#---------------------------------------------------------------------#
# Dada Mail Outside Config File! (.dada_config)
#
# Dada Mail Global Variables Configuration Guide:
#
# https://dadamailproject.com/d/global_variables.pod.html
#
#---------------------------------------------------------------------#
2.1 路径与 URL
$DIR = '/var/lib/dadamail/.dada_files';
$PROGRAM_URL = 'http://10.89.74.10:8150/cgi-bin/dada/mail.cgi';
$S_PROGRAM_URL = 'http://10.89.74.10:8150/cgi-bin/dada/mail.cgi';
$RUNNING_UNDER = 'CGI';
| 变量 | 说明 | 实测注意 |
|---|---|---|
$DIR | .dada_files 数据目录根,日志/备份/模板/全局配置都挂在它下面 | 迁移数据目录时改这里 |
$PROGRAM_URL | mail.cgi 的访问 URL,退订/确认等链接都以它为基址 | 必须与浏览器实际访问地址一致,否则所有页面内链失效 |
$S_PROGRAM_URL | 安全版 Program URL(HTTPS 场景区分使用) | 纯 HTTP 环境与 $PROGRAM_URL 相同 |
$RUNNING_UNDER | 运行模式:CGI / FastCGI / PSGI | 本实测为 CGI |
2.2 静态支持文件
$SUPPORT_FILES = {
dir => '/var/www/html/dada_mail_support_files',
url => 'http://10.89.74.10:8150/dada_mail_support_files',
};
dir 为服务器路径,url 为公开访问地址。实测踩坑:向导曾把 url 写成双层 .../dada_mail_support_files/dada_mail_support_files,导致 CSS/JS 全部 404;修正为单层后页面样式立即恢复(验证依据:修正后首页源码中资源引用变为 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")。此变量是部署后第一个应目检的配置。
2.3 超级密码
$PROGRAM_ROOT_PASSWORD = 'wIXXGRfLmqpL6';
$ROOT_PASS_IS_ENCRYPTED = '1';
安装向导写入的已经是单向加密摘要($ROOT_PASS_IS_ENCRYPTED = '1'),明文不可还原。忘记密码的官方出路是 plugins/change_root_password 插件(配合生成新加密串),而不是改这个字段。示例环境明文为 q1w2e3r4。
2.4 数据库后端
$BACKEND_DB_TYPE = 'SQL';
%SQL_PARAMS = (
dbserver => 'localhost',
database => 'dadamail',
port => '3306',
dbtype => 'mysql',
user => 'dadamail',
pass => 'q1w2e3r4',
);
| 键 | 可选值 | 说明 |
|---|---|---|
dbtype | mysql / Pg / SQLite | 对应 DBD::mysql / DBD::Pg / DBD::SQLite 驱动 |
port | 3306 / 5432 等 | 注释原文标注 MySQL:3306、PostgreSQL:5432 |
dbserver | 主机名或 IP | 共享主机常用 localhost |
改库后用 CLI 验证连通性的办法:触发一次任何走 DB 的入口(如 _schedules URL),观察 .logs/errors.txt 无新报错即通。
2.5 发信通道(在 Config.pm 默认层)
以下变量实测采集自 dada/DADA/Config.pm(行号为文件实测行号):
# Config.pm line 416-418
$MAILPROG //= '/usr/sbin/sendmail';
$MAIL_SETTINGS //= "|$MAILPROG -t";
$MASS_MAIL_SETTINGS //= "|$MAILPROG -t";
| 变量 | 默认值 | 说明 |
|---|---|---|
$MAILPROG | /usr/sbin/sendmail | 发信程序路径;改 SMTP 时置空并在列表设置中配置 SMTP |
$MAIL_SETTINGS | |$MAILPROG -t | 单发管道参数(-t 从邮件头解析收件人) |
$MASS_MAIL_SETTINGS | 同上 | 群发管道参数 |
需要 SMTP 中继时,在列表设置(管理端)把发信方式切到 SMTP,或在 .dada_config 的 %LIST_SETUP_INCLUDE 中预设:
# .dada_config line 180-184 实测原文
%LIST_SETUP_INCLUDE = (
set_smtp_sender => 1, # For SMTP
add_sendmail_f_flag => 1, # For Sendmail Command
admin_email => undef,
);
2.6 定时任务调度
# .dada_config 实测原文
$SCHEDULED_JOBS_OPTIONS = {
scheduled_jobs_flavor => '_schedules',
log => 0,
run_at_teardown => 0,
};
| 键 | 说明 | 实测验证 |
|---|---|---|
scheduled_jobs_flavor | cron 入口对应的 mail.cgi flavor | cron URL 实测返回 200 |
log | 是否记录调度输出到 .logs/cronjob_output.txt | 见下文生效实录 |
run_at_teardown | 是否在响应结束时同步执行调度 | 默认关闭 |
生效实录:把 log 从 0 改为 1 保存后,手动触发一次调度 URL:
# curl -s -o /dev/null -w 'schedules=>%{http_code}\n' \
'http://10.89.74.10:8150/cgi-bin/dada/mail.cgi/_schedules/_all/_all/_silent/'
schedules=>200
.logs 目录随即新增 cronjob_output.txt,内容(照抄):
Started: Wed Oct 28 05:00:53 2026 UTC
PID: 8933
Running as uid:, www-data
Running as dedicated schedule.
证明 .dada_config 的修改无需重启服务即对下次请求生效(CGI 模式每次请求重新加载配置)。
2.7 编辑器与文件浏览器
向导生成时默认整段被 =cut 注释包裹(实测原文节选):
$WYSIWYG_EDITOR_OPTIONS = {
ckeditor => { enabled => 0, url => '', },
tiny_mce => { enabled => 0, url => '', },
};
$FILE_BROWSER_OPTIONS = {
rich_filemanager => { enabled => 0 },
core5_filemanager => { enabled => 0, },
none => { enabled => 1, },
};
启用某编辑器:去掉 =cut/# start cut 注释块,把目标项 enabled 置 1。v11.20.0 发行说明明确 KCFinder 已被弃用移除(安全原因),文件浏览器推荐 Rich Filemanager 或 Core 5 Filemanager。
2.8 权限位(Config.pm 默认层)
# Config.pm line 1084-1085
$FILE_CHMOD //= 0644;
$DIR_CHMOD //= 0755;
新写入文件的权限 644、目录 755,与发行包解压后的权限形态一致。
三、修改配置的正确姿势
- 先备份(官方文档原话:"make a backup first"):
cp /var/lib/dadamail/.dada_files/.configs/.dada_config \
/var/lib/dadamail/.dada_files/.configs/.dada_config.bak
- Perl 语法自检(改错会全站 500):
perl -c /var/lib/dadamail/.dada_files/.configs/.dada_config
-
改完即生效,刷新页面验证(CGI 每请求加载)。
-
图形化替代:管理端 Plugins → Global Configuration 可改大部分全局项;该插件安装向导默认启用(表单项
install_global_config)。用 Root 密码登录才可见(List Password 登录不可用)。 -
重新启用安装向导(官方文档方法):把移除的目录改名回去——
Rename the, "dada/installer-a.bunch.of.letters.and.numbers" directory back to, "dada/installer"
Change the file permission of, "dada/installer/install.cgi" script back to, "755"
四、Config.pm 高频变量速查
以下变量名均实测自 dada/DADA/Config.pm 的 use vars 声明表,运维最常打交道的子集:
| 变量 | 用途 |
|---|---|
$PROGRAM_URL / $S_PROGRAM_URL | 程序入口 URL |
$PROGRAM_ROOT_PASSWORD / $ROOT_PASS_IS_ENCRYPTED | 超级密码及是否已加密 |
$MAILPROG / $MAIL_SETTINGS / $MASS_MAIL_SETTINGS | 发信通道 |
$SUPPORT_FILES | 静态文件路径/URL |
%SQL_PARAMS / $BACKEND_DB_TYPE | 数据库连接 |
$FILE_CHMOD / $DIR_CHMOD | 默认权限位 |
$DEBUG_TRACE / %LOG / %CPAN_DEBUG_SETTINGS | 调试与日志开关(向导表单 configure_debugging 组) |
$SCREEN_CACHE / $DATA_CACHE | 页面与数据缓存(向导表单 cache_options 组) |
$GLOBAL_UNSUBSCRIBE / $GLOBAL_BLACK_LIST | 全局退订/黑名单 |
$ENFORCE_CLOSED_LOOP_OPT_IN | 强制闭环确认订阅 |
$DISABLE_OUTSIDE_LOGINS | 拒绝来自外部表单的登录提交(实测开启后,不带正确 Referer 的 POST 会被拒,返回 "You've attempted to log in from a unauthorized form.") |
$MAILOUT_AT_ONCE_LIMIT / $MAILOUT_STALE_AFTER | 群发并发限速与僵死任务阈值 |
$LIST_QUOTA / $SUBSCRIPTION_QUOTA | 列表数与订阅量配额 |
$PROFILE_OPTIONS / $PII_OPTIONS / $GLOBAL_API_OPTIONS | 订户档案、隐私数据、全局 API |
五、未实测项说明
- Global Configuration 插件的全部图形化表单:本环境已确认插件启用,但未逐一走完其界面项,操作路径以官方文档为准;
$MIME_*系列附件策略变量:默认值未改动过,未做行为对比测试;$AMAZON_SES_OPTIONS/$MAILGUN_OPTIONS:SES/Mailgun 云发信集成,实测环境无对应服务,仅确认配置结构存在;$CAPTCHA_TYPE/$RECAPTCHA_PARAMS:验证码集成未申请密钥,未实测。
相关文档
- 项目定位与选型:《Dada Mail 介绍与选型指南》
- 安装全流程:《Dada Mail Ubuntu 22.04 安装部署指南》
- 维护脚本与备份恢复:《Dada Mail 常用 CLI 命令详解》