Enabling
batch_handling="BatchByDomain"
will cause message:recipient and the
recipient field of Log Record to switch to
an array holding the list of recipients. These are NOT active by default,
but if you wish to enable them you should audit your policy and consider
switching to using
message:recipient_list as well as
review your log processors to ensure that they are able to handle the
recipient field being either an array or a string, or otherwise adjusting
your log templates accordingly.
HTTP injections no longer consider the Forwarded header as a source of
information to populate the received_from metadata. Instead, only the
directly connecting IP information will be used. See the upstream
issue for more
information.
smtp_server_data event enables
once-per-transaction processing of a message and recipient list modification
for alias expansion and legal capture.
Admin bounces and scheduled queue suspensions can now optionally target the
complete queue name instead of matching by domain/campaign/tenant. This is
useful in certain automation scenarios where you wish to target a specific
queue precisely. The kcli commands support a --queue option to select the
queue name, while the API expose that via a queue_names field.
New kcli xfer and kcli
xfer-cancel commands enable migration
of queues to alternative kumomta nodes as part of operational tasks such
draining a queue for decomissioning or scaling down infrastructure. These
commands are building blocks for you to deploy auto-scaling or similar
functionality within your infrastructure orchestration. The new
xfer_message_received can be
used to fixup messages as they are arrive on the target node via xfer.
XferOut and XferIn are two new log record
types associated with message transfers. The kcli commands have
corresponding HTTP API endpoints:
xfer and
xfer-cancel#311
New kumo.file_type module provides
functions for reasoning about file types.
new smtp_server_rejections counter to track the number of Rejection log
records produced by the smtp listener. The service key is the listener
address and port, and there is a total key that represents the total across
all listeners.
new kumo.spf.check_msg convenience
function for checking SPF and producing Authentication-Results once the
data has been received.
msg:append_header and
msg:prepend_header both now accept
an optional ENCODE parameter that opts in to wrapping or quoted-printable
encoding the value as appropriate.
new headermap:append method for
appending a header. This supplements the already available :prepend
method.
new kumo.string.wrap function that
enables manual wrapping of strings for use in, for example, header values.
Fixes
smtp server would incorrectly return a 451 instead of a 452 status when
max_recipients_per_message or max_messages_per_connection limits
were exceeded.
spf: a NoRecordsFound response from DNS during an exists: rule check
could cause the result to incorrectly be reported a temperror
spf: %{h} macro expansion could incorrectly enclose the domain in double quotes
spf: relax macro parsing to allow spaces in, for example, explanation txt records
kumo.spf.check_host: %{h} will be assumed to have the value of the
domain field when sender is not set, as ehlo_domain won't be set in
the connection context until after smtp_server_ehlo returns successfully.
kumo.start_esmtp_listener.line_length_hard_limit
could by off-by-two in certain cases when applied to DATA, and could
sometimes allow up to 1024 bytes for a single SMTP command outside of DATA,
even though the limit was set smaller.
Message builder API didn't quote every possible character that needed to be
quoted in the display name of a mailbox. #428
Incorrectly treated a 552 as a transient failure for non-RCPT-TO 552
responses. #431
spf: we now populate smtp.mailfrom in the Authentication-Results props map.
keysource now supports inline binary bytes
being passed via key_data. Previously, only UTF-8 strings could be
passed that way.
keysource now supports callback/event based
data loading, which is similar to inline key_data, but allows for more
efficient cache keys that use less RAM.