Sympa 配置参数详解

Sympa 6.2.80 三层配置体系(sympa.conf/robot.conf/list config)与 388 个命名参数详解,按 Schema.pm 8 组分组覆盖站点描述数据库日志MTA对接列表定义收发控制归档退信周期任务WebSOAP安全,含B1实测 Postfix 别名权限坑、compound 参数段落写法、废弃参数映射。

Sympa邮件服务邮件列表2026/10/27

Sympa 6.2.80 配置参数详解

目标:覆盖 Sympa 三层配置文件(sympa.conf / robot.conf / 每列表 config)的主要参数,按 8 个功能组讲解名称、默认值、格式与生效层级,穿插 B1 实测排障结论(别名文件权限、Postfix 双 map)和 sympa.conf.in 安装必改参数速查。所有参数定义均出自 6.2.80 官方源码 Sympa::Config::Schema 与 sympa_config(5) man page(2026-10-27 读取)。组件背景见 《Sympa 6.2.80 介绍与选型指南》,安装实测见 《Sympa 6.2.66 Ubuntu 22.04 安装指南》,Compose 化部署见 《Sympa 6.2.66 Docker Compose 部署指南》。

一、配置体系概述

1.1 三层继承(覆盖规则)

Sympa 有三级配置文件,底层到顶层逐层覆盖:

层级文件路径(Debian 包)生效范围
站点全局sympa.conf/etc/sympa/sympa/sympa.conf所有域的默认值,首次安装必须创建
虚拟域(可选)robot.conf/etc/sympa/sympa/<域名>/robot.conf同一台机器承载多个邮件域时按域覆写
单列表config/var/lib/sympa/list_data/<列表>@<域>/config每个列表独立配置,建列表时生成

查找顺序:某参数在列表 config 里有则用它,否则查 robot.conf,再否则回退 sympa.conf,最终兜底源码内置默认值。

1.2 参数格式

两类参数(6.2.70 起 compound 参数改 . 分隔语法,保留空格分隔兼容):

  • 简单参数:一行一个,空格分隔。listmaster listmaster@example.org

  • 复合参数(compound):以段落方式写,首行是组名,后续缩进子参数(或用 . 连接)。

    # 旧语法(空格 + 缩进)
    archive
      web_access open
      mail_access closed
    
    # 新语法(6.2.70+,点号)
    archive.web_access open
    archive.mail_access closed
    

1.3 上下文(context)

每个参数声明所属层级——只能在哪几个文件里出现。man page 里的 context 字段:

  • site → sympa.conf 专属(如 db_* 数据库参数)
  • domain → robot.conf 可选(如 domain、listmaster,站点和域都能设)
  • list → 单列表 config 专属(如 subject、visibility)
  • 有些参数同时支持 site + domain + list 三层(如 lang、priority)

二、安装必改参数速查

sympa.conf.in 官方最小模板(Debian 包自动生成,72 行)只标了 6 个必须手动设置的参数——其他全部走内置默认值即可跑通:

参数必改建议值context说明
domain✅mail.example.orgsite/domain主邮件域,列表地址后缀。B1 实测:默认空,sympa_msg.pl 起不来
listmaster✅admin@mail.example.orgsite/domain超级管理员邮箱,审批/告警/首登密码都发给它
db_type✅SQLite(默认)/ MySQL / PostgreSQLsite数据库类型,Debian 包用 SQLite 开箱即用
db_name⚠️默认 sympasiteSQLite 时填 DB 文件全路径;MySQL/PG 填逻辑库名
wwsympa_url✅(Web 面)http://mail.example.org/wwssite/domainwwsympa Web 界面 URL,不配则 Web 面不可用
soap_url⚠️(SOAP API)http://mail.example.org/sympa_soap_server.fcgisite/domainSOAP API URL,不配则 SOAP 不可用

B1 实测追加的必改项(Debian 包默认值有坑):

参数必改原因实测值
sendmail_aliases✅默认指向 /etc/aliases(root:root 644),sympa 用户无写权,建列表时报 Permission denied/var/lib/sympa/sympa_aliases(chown sympa:sympa)

💡 这一条是 B1 唯一卡壳的点,postfix 双 map(hash:/etc/aliases, hash:/var/lib/sympa/sympa_aliases)同时引用系统别名与 sympa 别名即解决。详见 《Sympa 6.2.66 Ubuntu 22.04 安装指南》 第三章。

三、功能组详解

以下按 Schema.pm 的 group 划分,覆盖核心与高频参数。每组先给组名 + 关键参数表格,再给实测/默认值示例。

3.1 站点描述(presentation + description)

决定服务对外长什么样:标题、语言、虚拟域、可见性、列表定义。

参数默认值context说明
titleMailing lists servicesite/domainWeb 页面 header、通知邮件发件人显示名
gecosSYMPAsite/domainSympa 自发邮件的 From: 显示名(6.2a.34+)
domain无(必填)site/domain主邮件域,单域场景一个 robot;多域每个 robot.conf 各设一个
listmaster无(必填)site/domain超级管理员邮箱,可多值逗号分隔
supported_langca,cs,de,el,en-US,es,...zh-CN,zh-TWsite/domainWeb 面可选语言全集,locale 没装的语言自动忽略
langen-USsite/domain/list列表默认语言,初始化用户语言偏好
legacy_character_support_featureoffsite开启旧编码(如 iso-2022-jp 日语)支持,按 charset.conf 配置
visibilityconcealsite/domain/list列表在公共列表页/LISTS 命令中的可见性
max_list_members0(无限制)site/domain/list订阅者上限,0 不限制
priority5site/domain/listspool 中消息优先级(0 最高,z 冻结在队列)

visibility 四个可选值:

值行为
conceal仅订阅者可见(默认,讨论列表安全)
identified匿名用户隐藏,已登录用户可见
noconceal完全公开
secret连订阅者也隐藏(高保密)

3.2 数据库(database)

全部 site 级,Debian 包用 SQLite 开箱即用,生产 MySQL/PG 配完整连接参数。

参数默认值context说明
db_typemysqlsite可选 MySQL / PostgreSQL / SQLite / Oracle
db_namesympasiteSQLite 时必须是文件全路径,如 /var/lib/sympa/sympa.db;MySQL/PG 填库名
db_host无siteDB 主机名;PostgreSQL 也可写 socket 目录如 /var/run/postgresql
db_port无siteDB 端口,MySQL 默认 3306,PG 默认 5432
db_user无siteDB 用户名
db_passwd无siteDB 密码,生产务必保护(chmod 600 sympa.conf)
db_options无site追加到 DSN 的驱动专有选项,如 mysql_read_default_file=...;mysql_socket=...
db_env无siteOracle 场景的环境变量,如 NLS_LANG=...;ORACLE_HOME=...
db_timeout无siteDB 操作超时秒数(当前仅 SQLite 用)
update_db_field_typesautosite自动升级表结构,off 关闭
db_additional_subscriber_fields无sitesubscriber_table 自定义字段(如 billing_delay),模板/scenario 可引用
db_additional_user_fields无siteuser_table 自定义字段(如 age,address)

3.3 日志(logging)

参数默认值context说明
syslogLOCAL1sitesyslog facility,Sympa 进程日志发往这里
log_socket_typeunixsitesyslog 通信模式,unix(socket)/ inet(UDP/TCP)
log_level0site/domain日志详细度,0=仅主操作,3=几乎全部;生产建议 2
log_facilityLOCAL1site旧名,等价 syslog
log_condition无site仅记录满足条件的日志条目,复杂场景用
logs_expiration_period无site日志文件保留期,过期自动清理

B1 实测:Debian 包默认 log_level=0,查问题时临时 log_level 2 重启 sympa.service 即可,不影响投递。

3.4 MTA 对接(mta)

Sympa 不自带 MTA,通过以下参数桥接 Postfix/Exim/Sendmail。

参数默认值context说明
sendmail/usr/sbin/sendmailsiteMTA 提供的 sendmail 兼容二进制路径
sendmail_args-oi -odi -oemsite传给 sendmail 的参数,Sympa 自动追加 -f/-N/-V 和收件人
sendmail_aliases$SENDMAIL_ALIASES(Debian 包 /etc/aliases)site/domainB1 实测必改:Sympa 写列表别名的文件,改到可写路径
aliases_programnewaliasessite/domain重建别名 DB 的命令,可选 makemap/newaliases/postalias/postmap 或自定义
aliases_wrapperonsite/domain是否用 wrapper(sympa_newaliases-wrapper),6.2.59+;不需要 root 权限时设 off
aliases_db_typehashsite/domain别名 DB 类型,hash/btree/dbm/cdb 等
alias_manager$SBINDIR/alias_manager.plsite别名管理器脚本绝对路径,可换成 ldap_alias_manager.pl 或 mysql_alias_manager.pl

B1 实测 Postfix 完整对接:

# sympa.conf 必加
sendmail_aliases /var/lib/sympa/sympa_aliases

# Postfix main.cf
alias_maps     = hash:/etc/aliases, hash:/var/lib/sympa/sympa_aliases
alias_database = hash:/etc/aliases, hash:/var/lib/sympa/sympa_aliases

3.5 接收控制(incoming)

Sympa_msg.pl 收信时的判定与改写。

参数默认值context说明
sender_headersFromsite用于识别发件人的邮件头字段列表(逗号分隔),可选加 Return-Path/Resent-From
misaddressed_commandsrejectsite收到误发的邮件命令时的行为,reject(拒信,默认)/ignore(放行正文)
misaddressed_commands_regexp内置正则site识别误发命令的 Perl regexp,默认匹配 subscribe/unsubscribe/set/mail/nomail/digest
sympa_priority1(高)site/domain命令类消息的 spool 优先级,普通列表消息默认 5
message_hook无site外部消息改写钩子脚本路径
remove_headers无site出站时剥离的邮件头(逗号分隔),如 User-Agent,Importance
incoming_max_count无site单次投递的最大收件人数,防止一次信塞爆 bulk
loop_prevention_regex内置 regexpsite识别邮件循环的 regexp,命中则丢弃

3.6 投递与分发(sending + command)

Bulk 引擎投递策略、digest 行为、命令行改写。

参数默认值context说明
bulk_max_count1500site单次 bulk 进程最多投递的收件人数
bulk_fork_threshold1site多少封 bulk 信积压后 fork 新进程并行投递
bulk_sleep0site每次投递之间 sleep 秒数(降速用)
delivery_time无site投递时限(秒),超时重试
digest(列表 config 层必填)list摘要发送频率,daily/weekly/monthly 或 none
digest_max_size120000site单封摘要的最大字节数
distribution_moderecommendedsite/domain/list投递模式,影响 scenario 判定;多数场景用默认值
distribution_ttl0(无限)site/domain/list消息在队列中的最大存活期(秒),过期丢弃
verp_rate0(关闭)site/domainVERP 拆信比例(bounce 自动追踪需要,值越大越精确但投递变慢)
forced_reply_to / forced_replyto无list强制改写 Reply-To 头,把列表发件人变列表地址(讨论列表常见)
custom_headers无list追加到出站邮件的头(可多次出现),如 X-List: mylist
custom_subject无site/domain/list改写 Subject 的模板串(TT2),如 `[% msg.subject %]

3.7 归档 / 退信 / 周期任务(archive + bounce + tasks)

全部以 compound parameter(paragraph 或点号分隔)写法,man page 给了完整子参数。

Archive(归档)

# 段写法
archive
  web_access open
  mail_access closed
  default_index by_thread

# 点号写法(6.2.70+)
archive.web_access open
archive.mail_access closed
archive.default_index by_thread
子参数默认值可选值说明
archive.web_access(列表 scenario 默认)open / closed / owner / listmasterWeb 归档访问控制
archive.mail_access(列表 scenario 默认)同上邮件归档命令(GET 归档)访问控制
archive.default_indexby_threadby_thread / by_dateWeb 归档首页排序方式
archive_crypted_msg(列表默认)on / off是否归档加密/Signed 消息的密文
archive_default_indexby_thread同上站点默认值
arc_private_key_path无路径ARC seal 私钥
arc_signer_domain无域名ARC 签名域

Bounce(退信处理)

参数默认值说明
bounce_delay2h退信处理延迟,给临时故障留缓冲
bounce_halt_rate10%单列表退信率超过此比例暂停投递
bounce_warn_rate5%单列表退信率超过此比例发运维告警
bouncers_level1 / bouncers_level2(列表 scenario 默认)退信分级判定阈值
minimum_bouncing_count无超过此次数才标记订阅者失效
minimum_bouncing_period无在此周期内累计才触发

周期任务(tasks)

Sympa 自带大量内建周期任务(/etc/sympa/tasks/),以下几个参数控制调度频率。

参数默认值说明
expire_taskmonthly订阅过期检查频率
remind_taskmonthly即将过期订阅者提醒频率
default_max_list_members同 max_list_members 默认列表创建时 max_list_members 初始值
default_bounce_level1_rate / level2_rate内置值新建列表的退信阈值默认值

3.8 Web / SOAP / 安全(web + soap + security)

参数默认值context说明
wwsympa_url无site/domainWeb 面必配,WWSympa 管理界面完整 URL
wwsympa_url_local自动siteFastCGI 进程内本地回调 URL(自动推导,无需改)
soap_url无site/domainSOAP API 完整 URL
soap_url_local自动siteSOAP 本地回调 URL
cookiesympa_sessionsiteWeb 会话 Cookie 名
cookie_domain无site/domainCookie 域(跨子域单点登录用)
cookie_expire0(浏览器关即过期)siteCookie 存活期(秒)
cookie_refresh0site每次访问刷新 Cookie 存活期(秒)
css_path / css_url自动site自定义 CSS 路径与 URL
pictures_path / pictures_url自动site自定义图片上传目录与 URL
static_content_path / static_content_url自动site静态资源路径与 URL
dkim_featureoffsite开启 DKIM 签名
dkim_selectorsympasiteDKIM selector
dkim_private_key_path无siteDKIM 私钥绝对路径
dkim_signature_apply_on默认子集site对哪些出站邮件加 DKIM(mdn/standard/all)
dmarc_protection_modenonesiteDMARC 严格域处理(none/quarantine/reject/rewrite)
dmarc_protection_domain_regex内置 regexpsite识别 DMARC 严格域的 regexp

四、列表 config 专属参数(list 层级)

建列表时自动生成,全部在 /var/lib/sympa/list_data/<list>@<domain>/config。高频:

参数默认值说明
subject无(必填)列表主题,LISTS 命令返回
visibilityconceal见 3.1 表
topics无话题分类(逗号分隔),公共列表页按此筛选
langen-US列表语言
send / subscribe / unsubscribe / review / info / add / del内置 scenario每个动作对应的 scenario 规则文件名,sympa 默认提供 70+ scenario(见源码 default/scenari/)
subscribe.*—subscribe paragraph:subscribe.open / subscribe.closed / subscribe.auth / subscribe.open_notify
send.*—send paragraph:send.public / send.private / send.privateorpublickey / send.newsletter 等
review.*—review paragraph:review.open / review.closed / review.owner 等
arc_featureon(discussion_list)/ off(其他模板)内建归档开关

💡 scenario 授权语言:Sympa 特色 DSL——send/subscribe/review 等每个动作都有独立 scenario 文件,按「认证方式 + 角色 + 规则」组合判定放行/拒绝/转审批。新建列表选模板(discussion_list/news_letter/confidential/private_working_group 等)即预置一整套 scenario,生产定制直接改 config 里的 send/subscribe 等段引用不同 scenario 文件名,无需改代码。

五、废弃参数与版本语法

5.1 6.2.70 起 compound 参数 . 分隔

旧语法(缩进)自动兼容,新部署建议直接用点号:

# 旧
archive
  web_access open

# 新(等价)
archive.web_access open

5.2 废弃参数(6.2.70+)

废弃替代说明
update用 scenario 的 set 操作config 文件内的 update 段已无意义
shared_doc paragraphshared_feature + list 共享文档 Web 管理页手动写文件路径的方式废弃
legacy_character_supportlegacy_character_support_feature6.2.60+ 改名加 _feature 后缀
lock_method自动旧 NFS 锁选项,现在自动检测
mhonarc内建归档器6.2.37 起 archive.pl 取代 MHonArc

5.3 同名多义参数(兼容别名)

Sympa 保留了三对因历史原因并存的别名,行为完全一致:

别名 1别名 2说明
forced_reply-toforced_reply_to / forced_replytoconfig 层参数,三个都能识别
custom-headercustom_headerconfig 层参数
custom-subjectcustom_subjectconfig 层参数
sender_headerssender_headers仅此一种

六、FAQ

  • 改了 sympa.conf 要不要重启? 要。systemctl restart sympa.service,列表 config 改动需要 sympa reload_list_config 或重启 sympa_msg.pl 刷新 config.bin 缓存。
  • robot.conf 放哪? /etc/sympa/sympa/<domain>/robot.conf(domain 即虚拟域全限定名),多域场景每域一个。
  • 改 list config 后生效时间? sympa_msg.pl 轮询 config.bin,默认几秒内;reload_list_config 立即刷新。
  • sendmail_aliases 改成 none 会怎样? Sympa 不再管理别名,MTA 侧别名需手工维护;适合 alias_manager 走 LDAP/SQL 外部数据源的场景。
  • db_timeout 为啥配了没反应? 当前仅 SQLite 实现了超时,MySQL/PG 由驱动层控制;6.2.80 没实现应用层超时。
  • dkim_feature on 了但出站邮件没 DKIM 头? 先检查 dkim_private_key_path 指向的私钥文件是否可读(sympa 用户),再看 dkim_signature_apply_on 是否包含 standard(默认可能只对 MDN 加签)。

七、参考链接