Modoboa 2.11.1 配置参数详解
逐层解析 Modoboa 2.11.1 配置体系:settings.py 实例配置、参数注册表 11 组平台参数默认值全清单、经 API 实测的参数读取/修改回路与落库位置。
Modoboa 2.11.1 配置参数详解
目标:把 Modoboa 2.11.1 的配置参数一次讲全——既覆盖部署生成的实例配置文件(Django
settings.py),也覆盖管理面板"Settings → Modoboa → Parameters"背后由参数注册表驱动的全部平台参数(默认值、类型、含义),并给出经 API 实测的修改回路。文中默认值均自 2.11.1 运行实例的参数注册表逐项导出(2026-10-21 实测)。
一、环境信息
- 实测环境:Ubuntu 22.04.5 LTS,Modoboa 2.11.1(pip 安装,
/opt/modoboa/env,实例目录/home/modoboa/instance),PostgreSQL 14 + Redis 6 + Nginx/uWSGI,部署于 2026-10-21(安装过程见同专栏《Ubuntu 22.04 安装 Modoboa 指南》) - 取证方法:默认值来自运行实例的参数注册表(
modoboa.parameters.tools.registry,2.11.1 源码内建);生效值经GET /api/v2/parameters/global/<组>/实测读取;修改经PUT实测并回读验证 - 适用版本:Modoboa 2.11.x(其他版本参数集合可能增减,以
python manage.py shell中读取注册表为准)
二、配置体系总览
Modoboa 的配置分三层,修改入口与生效方式各不相同:
| 层 | 载体 | 修改入口 | 生效方式 |
|---|---|---|---|
| 实例配置 | instance/instance/settings.py(Django) | 编辑文件 | 重启 uWSGI/相关进程 |
| 平台参数 | 数据库 core_localconfig._parameters(JSON),由参数注册表定义默认值 | 管理面板 Settings → Modoboa → Parameters;或 REST API /api/v2/parameters/global/<组>/ | 保存即生效(个别缓存项需重启 worker) |
| 用户参数 | 数据库(按用户存) | 面板右上角用户菜单 → Settings | 保存即生效 |
三层的优先级关系:平台参数只在"面板行为"层面起作用(限额、反垃圾联动、DKIM 存储路径、界面主题等),运行边界(数据库地址、ALLOWED_HOSTS、队列连接等)永远由 settings.py 决定。排查问题先分清"改的是哪一层"。
关键差异解读:与其他邮件管理面板把全部配置写单一配置文件不同,Modoboa 的平台参数走"代码内默认值 + 数据库覆盖"模式——注册表(serializer)定义参数名、类型、默认值与帮助文案,UI 与 API 读写的是同一份数据库 JSON。好处是参数自带类型校验与文档;代价是看"当前实际值"必须查库或调 API,不能只看文件。
三、实例级配置 settings.py 逐组解析
以下为 deploy 生成的 settings.py 中运维必须掌握的键(2.11.1 实测文件节选):
3.1 安全与会话
| 键 | 默认(deploy 生成) | 说明 |
|---|---|---|
SECRET_KEY | deploy 随机生成 | Django 全局密钥;丢失会话/重置链接全部失效,务必备份 |
DEBUG | False | 生产保持 False;True 会泄漏错误页细节 |
ALLOWED_HOSTS | ['<--domain 值>'] | 请求 Host 不在名单内直接 400;加 IP/别名需手工追加并重启 uWSGI |
CSRF_COOKIE_SECURE / SESSION_COOKIE_SECURE | True | 强制 HTTPS 才回传 Cookie。仅 HTTP 内网验证时必须改 False,否则登录静默失败(本专栏实测踩坑);上 TLS 后恢复 True |
SITE_ID | 1 | Django sites 框架站点;对应 manage.py set_default_site 命令可改站点名/域名 |
3.2 应用注册
| 键 | 默认(deploy 生成) | 说明 |
|---|---|---|
MODOBOA_APPS | 元组,含 modoboa.core、modoboa.admin、modoboa.transport、modoboa.relaydomains、modoboa.limits、modoboa.parameters、modoboa.dnstools、modoboa.policyd、modoboa.maillog、modoboa.pdfcredentials、modoboa.dmarc、modoboa.imap_migration、modoboa.autoreply、modoboa.sievefilters、modoboa.contacts、modoboa.calendars、modoboa.webmail、modoboa.autoconfig 等 | 生效应用集;扩展安装后会追加在此列表 |
INSTALLED_APPS += MODOBOA_APPS | — | Django 生效应用集 = 基础 + Modoboa |
AUTH_USER_MODEL | 'core.User' | 自定义用户模型 |
AUTHENTICATION_BACKENDS | ModelBackend + IMAP 迁移后端 | 注释项含 LDAPBackend/SMTPBackend,启用 LDAP 认证需取消注释 |
AUTH_SMTP_SERVER_ADDRESS/_PORT/_SECURED_MODE | 注释(未启用) | SMTP 认证后端参数,需时取消注释 |
3.3 数据与队列
| 键 | 默认(deploy 生成) | 说明 |
|---|---|---|
DATABASES['default'] | 由 deploy --dburl 解析写入(dj-database-url) | 主库连接;改库连接改这里或重跑 deploy |
REDIS_HOST 等 Redis 连接 | localhost:6379(deploy 默认) | RQ 队列与策略守护计数共用 |
RQ_QUEUES | privileged、modoboa、dkim、dovecot 等队列定义 | manage.py rqworker <队列> 与之一一对应;dovecot 队列按 vmail 用户运行的配置在 deploy 生成的 units/官方文档样例中体现 |
HAYSTACK(如有 Xapian 扩展)/ 其他 | 视安装扩展而定 | 扩展自带键追加在文件尾部 |
3.4 语言与时区
deploy --lang/--timezone 写入 LANGUAGE_CODE 与 TIME_ZONE;面板显示语言按用户参数覆盖。
四、平台参数逐组详解(参数注册表)
以下 11 组参数为 2.11.1 注册表内建全局参数(所有默认值均为 2.11.1 源码实测导出)。查看与修改:面板 Settings → Modoboa → Parameters(分组即下列组名);API 方式见第五章。默认值为空/null 表示未预设(需按需填写)。
4.1 General(core 组,界面入口"General")
口令与认证:
| 参数 | 默认值 | 说明 |
|---|---|---|
authentication_type | local | 认证方式:local 本地库 / ldap |
password_scheme | sha512crypt | 口令散列方案(另有 sha256crypt、ssha、crypt、clear;与 Dovecot 同方案才能过认证) |
rounds_number | 70000 | sha512crypt 轮数 |
update_scheme | True | 用户登录时自动把旧散列升级为当前方案 |
default_password | ChangeMe1! | 新建账号的默认口令 |
random_password_length | 8 | 随机口令长度 |
allow_special_characters | False | 随机口令是否含特殊字符 |
update_password_url | null | 外部改密页 URL(如 Self-Service Password) |
password_recovery_msg | null | 登录页口令找回提示文案 |
sms_password_recovery | False | 是否启用短信找回 |
sms_provider | null | 短信服务商(ovh 等) |
LDAP 全家桶(authentication_type=ldap 时生效):
| 参数 | 默认值 | 说明 |
|---|---|---|
ldap_server_address / ldap_server_port | localhost / 389 | LDAP 服务器地址与端口 |
ldap_enable_secondary_server | False | 是否启用备用 LDAP |
ldap_secondary_server_address / ldap_secondary_server_port | null / 389 | 备用服务器 |
ldap_secured | none | 连接加密:none/starttls/ssl |
ldap_is_active_directory | False | AD 模式(组与过滤适配) |
ldap_admin_groups | '' | 哪些 LDAP 组映射为管理员 |
ldap_group_type | posixgroup | 组类型(posixgroup/groupofnames) |
ldap_groups_search_base | '' | 组搜索基 |
ldap_password_attribute | userPassword | 口令属性名 |
ldap_auth_method | searchbind | searchbind 或 directbind |
ldap_bind_dn / ldap_bind_password | '' | searchbind 的绑定账号 |
ldap_search_base | '' | 用户搜索基 |
ldap_search_filter | (mail=%(user)s) | 用户过滤模板 |
ldap_user_dn_template | '' | directbind 的 DN 模板 |
ldap_enable_sync | False | LDAP→本地账号同步 |
ldap_sync_bind_dn / ldap_sync_bind_password | null | 同步专用绑定账号 |
ldap_sync_delete_remote_account | False | 远端删除时是否同步删除本地 |
ldap_sync_account_dn_template | null | 同步 DN 模板 |
ldap_enable_import | False | 是否允许从 LDAP 批量导入 |
ldap_import_search_base / ldap_import_search_filter / ldap_import_username_attr | null / (cn=*) / cn | 导入搜索三件套 |
ldap_dovecot_sync | False | 是否生成 Dovecot LDAP 对接配置 |
ldap_dovecot_conf_file | /etc/dovecot/dovecot-modoboa.conf | 生成的对接配置路径 |
界面与主题:
| 参数 | 默认值 | 说明 |
|---|---|---|
custom_welcome_message | null | 登录页欢迎语 |
theme_primary_color | #046BF8 | 主题主色 |
theme_primary_color_dark | #0350BA | 主色(暗阶) |
theme_primary_color_light | #3688F9 | 主色(亮阶) |
theme_secondary_color | #F18429 | 主题辅色 |
theme_label_color | #616161 | 标签文字色 |
theme_login_logo_url / theme_menu_logo_url / theme_creation_form_logo_url | '' | 登录页/菜单/创建表单 Logo |
hide_features_widget | False | 隐藏仪表盘特性小组件 |
hide_pro_promotion | False | 隐藏 Modoboa Pro 推广提示 |
rss_feed_url | null | 仪表盘 RSS 源 |
show_rss_feed_to_superadmins | False | RSS 仅超管可见 |
版本检查与统计上报:
| 参数 | 默认值 | 说明 |
|---|---|---|
sender_address | noreply@yourdomain.test | 系统发信人地址(通知类) |
enable_api_communication | True | 与 Modoboa 官方 API 通信(版本检查) |
check_new_versions | True | 检查新版本 |
send_new_versions_email | False | 新版本邮件通知 |
new_versions_email_rcpt | null | 通知收件人 |
send_statistics | True | 匿名统计上报(离线环境可关) |
账号治理与分页:
| 参数 | 默认值 | 说明 |
|---|---|---|
enable_inactive_accounts | True | 启用不活跃账号检测 |
inactive_account_threshold | 30 | 不活跃判定天数 |
top_notifications_check_interval | 30 | 顶栏通知轮询间隔(秒) |
log_maximum_age | 365 | 平台日志保留天数 |
message_history_maximum_age | 180 | 消息历史保留天数 |
items_per_page | 30 | 列表分页大小(本专栏实测经 API PUT 修改为 50 再复原 30,回路畅通) |
4.2 Administration(admin 组)
DNS/邮件记录体检(新建域名时的自动检查):
| 参数 | 默认值 | 说明 |
|---|---|---|
enable_mx_checks | True | 检查 MX 记录 |
valid_mxs | '' | 视为合法的 MX 清单(如只允许自家 MX) |
domains_must_have_authorized_mx | False | 是否强制 MX 白名单 |
enable_ipv6_mx_checks | True | 同时查 IPv6 MX |
enable_spf_checks / enable_dkim_checks / enable_dmarc_checks | True/True/True | SPF/DKIM/DMARC 记录体检开关 |
dmarc_check_is_critical | True | DMARC 缺失是否按"严重"提示 |
enable_autoconfig_checks | True | 检查 autoconfig 自动配置记录 |
enable_dns_notifications | True | DNS 体检结果是否出面板通知 |
custom_dns_server | null | 自定义 DNS 服务器(默认走系统解析) |
enable_dnsbl_checks | True | 检查服务器 IP 是否在 DNSBL 黑名单 |
DKIM:
| 参数 | 默认值 | 说明 |
|---|---|---|
dkim_keys_storage_dir | null | DKIM 私钥落盘目录(需 OpenDKIM 可读,必填后由 dkim 队列 worker 写入) |
dkim_default_key_length | 2048 | 默认密钥长度(1024/2048/4096) |
域名与邮箱默认值:
| 参数 | 默认值 | 说明 |
|---|---|---|
default_domain_quota | 0 | 新域名默认配额(0=不限) |
default_domain_message_limit | null | 新域名默认每日发信上限(策略守护用,null=不限) |
default_mailbox_quota | 0 | 新邮箱默认配额 |
default_mailbox_message_limit | null | 新邮箱默认每日发信上限 |
handle_mailboxes | False | 是否由 Modoboa 管理邮箱存储(配合 Dovecot,整栈部署由安装器开启) |
auto_account_removal | False | 删除域名时是否连带删账号数据 |
auto_create_domain_and_mailbox | True | 新建账号时自动建同名域名/邮箱 |
create_alias_on_mbox_rename | False | 改邮箱名时是否自动加旧名别名 |
别名策略:
| 参数 | 默认值 | 说明 |
|---|---|---|
alias_can_target_any_domain | True | 别名可指向任意域名 |
alias_target_block_list | null | 别名目标黑名单(逗号分隔) |
alias_target_allow_list | null | 别名目标白名单 |
4.3 Limits(limits 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
enable_admin_limits | True | 启用"域管理员"资源限额 |
deflt_user_domains_limit | 0 | 域管理员默认可管域名数(0=不限) |
deflt_user_domain_aliases_limit | 0 | 默认域名别名数限额 |
deflt_user_mailboxes_limit | 0 | 默认邮箱数限额 |
deflt_user_mailbox_aliases_limit | 0 | 默认邮箱别名数限额 |
deflt_user_domain_admins_limit | 0 | 默认可授域管理员数限额 |
deflt_user_quota_limit | 0 | 默认总配额限额 |
enable_domain_limits | False | 启用"按域名"资源限额 |
deflt_domain_domain_admins_limit | 0 | 域级别:域管理员数默认限额 |
deflt_domain_domain_aliases_limit | 0 | 域级别:域名别名默认限额 |
deflt_domain_mailboxes_limit | 0 | 域级别:邮箱数默认限额 |
deflt_domain_mailbox_aliases_limit | 0 | 域级别:邮箱别名默认限额 |
4.4 Statistics(maillog 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
logfile | /var/log/mail.log | Postfix 日志路径(RQ worker 解析入库画图的数据源) |
rrd_rootdir | /tmp/modoboa | RRD 图表数据目录——生产建议改到持久目录(如 /var/lib/modoboa/rrd),默认落在 /tmp 重启即失 |
greylist | False | 日志中统计 greylisting 事件 |
enable_domain_limits | False | 图表按域名细分(与 limits 组同名参数各自独立) |
4.5 PDF Credentials(pdfcredentials 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
enabled_pdfcredentials | True | 新建账号生成 PDF 凭据 |
generate_at_creation | True | 创建即生成 |
storage_dir | /var/lib/modoboa/pdf_credentials | PDF 存放目录 |
delete_first_dl | True | 首次下载后即删除(安全默认) |
title | Personal account information | PDF 标题 |
custom_message | null | PDF 自定义文案 |
webpanel_url | null | 面板地址(打印进 PDF) |
include_connection_settings | False | 是否打印连接配置段 |
smtp_server_address / smtp_server_port / smtp_connection_security | null / 587 / starttls | PDF 中的 SMTP 连接信息 |
imap_server_address / imap_server_port / imap_connection_security | null / 143 / starttls | PDF 中的 IMAP 连接信息 |
4.6 DMARC(dmarc 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
enable_rlookups | False | DMARC 报告聚合时做反向解析(耗资源,按需开) |
4.7 IMAP Migration(imap_migration 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
enabled_imapmigration | True | 启用 IMAP 迁移功能 |
max_sync_accounts | 1 | 同时迁移账号数 |
create_folders | True | 迁移时按源建立文件夹 |
folder_filter_exclude | '' | 排除的文件夹清单 |
folder_filter_include | '' | 仅包含的文件夹清单 |
4.8 Automatic replies(autoreply 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
tracking_period | 7 | 自动回复重复提醒周期(天) |
default_subject | I'm off | 默认主题 |
default_content | I'm currently off. I'll answer as soon as I come back.\n\nBest regards,\n%(name)s\n | 默认内容(%(name)s 为姓名占位) |
4.9 Sieve filters(sievefilters 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
server / port | 127.0.0.1 / 4190 | ManageSieve 服务器(Dovecot) |
starttls | False | ManageSieve 是否 STARTTLS |
imap_server / imap_port / imap_secured | 127.0.0.1 / 143 / False | 辅助 IMAP 连接 |
4.10 Calendars(calendars 组,对接 Radicale)
| 参数 | 默认值 | 说明 |
|---|---|---|
server_location | '' | Radicale 服务地址 |
rights_file_path | /etc/radicale/rights | Radicale 权限文件路径 |
allow_calendars_administration | False | 是否允许在面板里管理日历后端 |
max_ics_file_size | 10240 | ICS 导入大小上限(KB) |
4.11 Webmail(webmail 组)
| 参数 | 默认值 | 说明 |
|---|---|---|
imap_server / imap_port / imap_secured | 127.0.0.1 / 143 / False | Webmail 的 IMAP 连接 |
smtp_server / smtp_port / smtp_secured_mode | 127.0.0.1 / 25 / none | Webmail 的 SMTP 连接 |
smtp_authentication | False | 是否 SMTP 认证 |
scheduling_smtp_server / scheduling_smtp_port / scheduling_smtp_secured_mode | 127.0.0.1 / 25 / none | 定时发信专用 SMTP |
max_attachment_size | 2048 | 单附件上限(KB) |
max_attachments_total_size | 10M | 附件总量上限 |
max_attachments_count | 10 | 附件个数上限 |
参数间联动提示:admin.dkim_keys_storage_dir 为空时面板生成 DKIM 只入库不落盘;webmail.imap_server 指向的 Dovecot 不通时 Webmail 登录报错但面板正常——这类"参数指向外部组件"的项是排障第一入口。
五、参数查看与修改实测(API 回路)
平台参数在面板上分组呈现;自动化运维可用 REST API 直改(完整认证方式见同专栏《Modoboa 2.11.1 管理 API 使用详解》)。
读取(实测回显,节选):
$ curl -s -H 'Host: mail.example.com' -H "Authorization: Token <TOKEN>" \
http://127.0.0.1/api/v2/parameters/global/core/ | python3 -m json.tool | head -25
{
"label": "General",
"params": {
"authentication_type": "local",
"password_scheme": "sha512crypt",
"rounds_number": 70000,
"update_scheme": true,
"default_password": "ChangeMe1!",
"random_password_length": 8,
"allow_special_characters": false,
"update_password_url": null,
"password_recovery_msg": null,
"sms_password_recovery": false,
"sms_provider": null,
"ldap_server_address": "localhost",
"ldap_server_port": 389,
...
}
}
修改与回读(实测:PUT 200 → 回读确认 → 复原):
$ curl -s -o /dev/null -w 'update PUT: %{http_code}\n' \
-H 'Host: mail.example.com' -H "Authorization: Token <TOKEN>" \
-X PUT http://127.0.0.1/api/v2/parameters/global/core/ \
-H 'Content-Type: application/json' -d '{"items_per_page": 50}'
update PUT: 200
$ # 回读 items_per_page = 50;复原同接口 PUT 回 30,再次回读 = 30
落库位置(实测查询):修改后的值整体写入 core_localconfig._parameters(JSONB),未改过的参数走注册表默认值:
modoboa=# SELECT substring(_parameters::text,1,150) FROM core_localconfig;
{"core": {"ldap_bind_dn": "", "ldap_secured": "none", "rss_feed_url": null, ...
用户级参数:同模式,端点为 /api/v2/parameters/user/<组>/(界面:用户菜单 → Settings),默认值同样由注册表定义,本篇不展开。
六、常见问题(FAQ)
Q1:改了面板参数,为什么行为没变?
先确认改的是对的一层:队列/数据库/域名白名单等运行边界在 settings.py(改完要重启 uWSGI 与 worker);面板参数即时生效但个别项被 worker 缓存,重启 modoboa-worker-* 服务观察。另注意 enable_admin_limits(用户级限额)与 enable_domain_limits(域名级限额)是两把独立开关。
Q2:rrd_rootdir 默认在 /tmp/modoboa 有风险吗?
有。/tmp 常被 tmpfs 或重启清理,图表历史会丢;生产改为 /var/lib/modoboa/rrd 并确保运行用户可写。
Q3:DKIM 密钥生成了但 OpenDKIM 不签?
检查 admin.dkim_keys_storage_dir:为空则不落盘;填了但 OpenDKIM 进程用户读不到也会失败。目录属主与 OpenDKIM 配置(KeyTable/SigningTable)需对应。
Q4:如何关掉面板对公网 modoboa.org 的版本检查/统计上报?
core.check_new_versions、core.send_statistics、core.enable_api_communication 三项置 False(离线内网部署建议全关)。
Q5:口令策略在哪配?
core.password_scheme(散列方案)、core.rounds_number(轮数)、core.default_password(新账号默认口令)、core.random_password_length、core.allow_special_characters。注意 password_scheme 与 Dovecot 认证方案必须一致,否则 Webmail/IMAP 认证失败。
Q6:怎么批量导出全部参数做备份?
for app in core admin limits maillog pdfcredentials dmarc imap_migration autoreply sievefilters calendars webmail; do
curl -s -H 'Host: mail.example.com' -H "Authorization: Token $TOKEN" \
"http://127.0.0.1/api/v2/parameters/global/$app/" > "params-$app.json"
done
七、参考链接
- 官方文档站(Parameters 相关说明):https://modoboa.readthedocs.io/
- Modoboa 主仓库(参数注册表源码
modoboa/*/apps.py与parameters/):https://github.com/modoboa/modoboa - 站内同专栏:《Ubuntu 22.04 安装 Modoboa 指南》、《Modoboa 2.11.1 介绍与选型指南》、《Modoboa 2.11.1 管理 API 使用详解》