Dada Mail 配置参数详解

Dada Mail 11.22.0 配置三层体系(Config.pm/.dada_config/列表设置)逐项解析:URL 与支持文件、加密密码、SQL 参数、发信通道、调度选项,附两处配置修改生效实录与高频变量速查表。

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

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_URLmail.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',
);
键可选值说明
dbtypemysql / Pg / SQLite对应 DBD::mysql / DBD::Pg / DBD::SQLite 驱动
port3306 / 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_flavorcron 入口对应的 mail.cgi flavorcron 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,与发行包解压后的权限形态一致。

三、修改配置的正确姿势

  1. 先备份(官方文档原话:"make a backup first"):
cp /var/lib/dadamail/.dada_files/.configs/.dada_config \
   /var/lib/dadamail/.dada_files/.configs/.dada_config.bak
  1. Perl 语法自检(改错会全站 500):
perl -c /var/lib/dadamail/.dada_files/.configs/.dada_config
  1. 改完即生效,刷新页面验证(CGI 每请求加载)。

  2. 图形化替代:管理端 Plugins → Global Configuration 可改大部分全局项;该插件安装向导默认启用(表单项 install_global_config)。用 Root 密码登录才可见(List Password 登录不可用)。

  3. 重新启用安装向导(官方文档方法):把移除的目录改名回去——

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:验证码集成未申请密钥,未实测。

相关文档