MTA-STS-DAEMON.YML(5)
π mta-sts-daemon.yml β the config file for mta-sts-daemon π
okay bestie so like. this is the manual page for mta-sts-daemon.yml (section 5 of the manuals, if you're keeping score) and it's literally the glow-up guide for mta-sts-daemon's config file. it's giving "one YAML file to run your whole vibe." let's get into it π«Ά
β¨ DESCRIPTION β¨
this config file is the main character for three things: the listening socket, the caching behaviour, and the manipulation of MTA-STS mode. that's it, that's the whole job. slay. π
πΈ SYNTAX πΈ
the file is in YAML syntax and it's got the following elements, and yes we're going through every single one, no skips:
host:β (str) daemon bind address. Default:127.0.0.1port:β (int) daemon bind port. Default:8461path:β (str) daemon UNIX socket bind address (path). If specified,hostandportare ignored and UNIX socket is bound instead of TCP. (not me ghostinghostandportlike that π)mode:β (int) file mode for daemon UNIX socket. If not specified default filemode is used. This option has effect only when UNIX socket is used. If file mode specified in octal form (most common case), it has to be prepended with leading zero. Example:0666reuse_port:β (bool) allow multiple instances to share same port (available on Unix, Windows). Default:truecache_grace:β (float) age of cache entries in seconds which do not require policy refresh and update. Default:60shutdown_timeout:β (float) time limit granted to existing client sessions for finishing when server stops. Default:20
then we get into the nested stuff, and this is where it gets nested:
cachetype:β (str:internal|sqlite|redis|redis_sentinel|postgres) cache backend type. Default:internaloptions:- Options for
internaltype:cache_size:β (int) number of cache entries to store in memory. Default:10000
- Options for
sqlitetype:filename:β (str) path to database filethreads:β (int) number of threads in pool for SQLite connections. Default: number of CPUstimeout:β (float) timeout in seconds for acquiring connection from pool or DB lock. Default:5
- Options for
redistype:- All parameters are passed to
aioredis.from_url[0]. Check there for a parameter reference.
- All parameters are passed to
- Options for
redis_sentineltype:sentinel_master_name:β (str) name of the sentinel mastersentinels:β (list)(tuple) list of sentinels in form of IP/FQDN and port- All other parameters are passed to
aioredis.sentinel.Sentinel[1]. For additional details check [2].
- Options for
postgrestype:dsn:β (str) database connection string
- Options for
proactive_policy_fetchingenabled:β (bool) enable proactive policy fetching in the background. Default:falseinterval:β (int) if proactive policy fetching is enabled, it is scheduled every this many seconds. It is unaffected bycache_graceand vice versa. Default:86400concurrency_limit:β (int) the maximum number of concurrent domain updates. Default:100grace_ratio:β (float) proactive fetch for a particular domain is skipped if its cached policy age is less thaninterval/grace_ratio. Default:2.0
default_zonestrict_testing:β (bool) enforce policy for testing domains. Default:falsetimeout:β (int) network operations timeout for resolver in that zone. Default:4require_sni:β (bool) add optionservername=hostnameto policy responses to make Postfix send SNI in TLS handshake as required by RFC 8461. Requires Postfix version 3.4+. Default:truetlsrpt:β (bool) include response attributes for TLSRPT support (Postfix 3.10 and later). Default:false
zonesZONENAME:- Same as options in
default_zone
- Same as options in
the timeout is used for the DNS and HTTP requests. fyi. π
MTA-STS "testing" mode can be interpreted as "strict" mode. This may be useful (though noncompliant) in the beginning of MTA-STS deployment, when many domains operate under "testing" mode. so like, technically a little rule-breaky but iconic of you to do it early π§
π₯ EXAMPLE π₯
here's the whole thing looking cute, copy-paste-able, the blueprint:
host: 127.0.0.1
port: 8461
reuse_port: true
shutdown_timeout: 20
proactive_policy_fetching:
enabled: true
interval: 86400
concurrency_limit: 100
grace_ratio: 2
cache:
type: internal
options:
cache_size: 10000
default_zone:
strict_testing: false
timeout: 4
zones:
myzone:
strict_testing: false
timeout: 4
π SEE ALSO π
if you liked this page, you'll devour these:
iykyk π
π NOTES π
the receipts, the sources, the linked lore:
https://aioredis.readthedocs.io/en/latest/api/high-level/#aioredis.client.Redis.from_urlhttps://aioredis.readthedocs.io/en/latest/getting-started/#redis-sentinel-clienthttps://redis.readthedocs.io/en/stable/connections.html#sentinel-client
okay that's the whole page bestie, you ate it up fr fr π this was mta-sts-daemon.yml(5) brought to you by postfix-mta-sts-resolver, dated 2026-04-29. go configure something iconic π
β¨ππ¦π
π¦ where this page comes from
- ubuntu stonking: postfix-mta-sts-resolver 1.5.1-1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms