Release 2023.11.28-b5252a41
Breaking Changes
None known
Other Changes and Enhancements
- New RFC-conformance options are available to control server behavior when receiving messages that are non-conformant:
- HTTP injection API will now parse and re-encode the message content to ensure
that it has appropriate transfer encoding applied when
content
is set to a string, rather than using the builder variant of the API. - Preliminary support for MTA-STS. It defaults to enabled. See make_egress_path for more details. At this time, we do not support TLSRPT.
- Preliminary support for DANE. It defaults to disabled because it requires additional configuration to enable DNSSEC. See make_egress_path for more details. At this time, we do not support TLSRPT.
- The DKIM
helper
now allows setting
body_canonicaliation
andheader_canonicalization
. Thanks to @cai-n! #81 - msg:dkim_verify() and msg:add_authentication_results() #82
- You may now use
log_record
to refer to the entire log record when using templated log files. See kumo.configure_local_logs for more information. - You may now specify an optional
segment_header
and optionalfilter_event
, when customizing local logs. See kumo.configure_local_logs for more information. - Delivery log records now include information about the TLS cipher, protocol version and peer subject name for SMTP deliveries that used TLS
- New regex_set_map type for efficiently matching multiple regular expressions in a single search operation and returning an associated value.
- New smtp_client_rewrite_delivery_status event to enable rewriting SMTP client status codes.
- minijinja templates now provide date/time formatting filters and globals via minijinja_contrib. Thanks to @cai-n! #91
- It is no longer necessary to call
shaper.get_queue_config
when using the shaping helper together with TSA. You should change your config from:
kumo.on('get_queue_config', function(domain, tenant, campaign, routing_domain)
local cfg = shaper.get_queue_config(domain, tenant, campaign)
if cfg then
return cfg
end
-- Do your normal queue config handling here
end)
to:
kumo.on('get_queue_config', function(domain, tenant, campaign, routing_domain)
-- Do your normal queue config handling here
end)
- It is no longer necessary to register
shaper.should_enqueue_log_record
when using the shaping helper together with TSA. You should remove this line from your config:
- New pre_init event to aid in building optional modular lua helpers.
- log records now only log meta values which are non-null. Thanks to @cai-n! #94
- Admin bounces now have the option to suppress generation of
AdminBounce
log records. #75
Fixes
- HTTP injection API did not expand templating in
From
,Reply-To
orSubject
headers unless they were set in the additional headers object - Allow optional spaces after the colon in
MAIL FROM:
andRCPT TO:
. #76 - Missing 334 response to clients using multi-step SMTP
AUTH PLAIN
- Messages that require "dot stuffing" could hang an outgoing SMTP session and tie up a connection until the data and/or data-dot timeout was reached.
- DKIM Signature headers with a long list of signed headers would wrap on hyphens instead of colons, which caused problems with some but not all verifiers.