Changelog
6.5.1
Released 2024-12-19
Bug Fix rare deadlock when using DANE together with connection pooling
6.5
Released 2024-12-16
🌟 Added clustered queue throttles (concurrency, rates & connect intervals)
🌟 Added support for connect intervals (time in between connections)
🍀 MTA improvements
Added support for compression on the HTTP submission API
Support
?pretty=true
in HTTP JSON outputShow TTL for rate suspends
🍀 Script language improvements
Added
is_rsa_privatekey()
andis_ed25519_privatekey()
functions
🍀 Native (C ABI) plugin improvements
Added
HalonMTA_config_object_key_get
to get object key name by indexAdded
HalonMTA_queue_policy_divide
Added
HalonMTA_queue_policy_add5
andHalonMTA_queue_policy_update3
functions, to support properties
🍀 Command line tool improvements
Added missing filtering options for queue commands in halonctl
Restructured halontop output
🐛 Bug fixes
Allow more than 32 SAN in certificates in server certificates
6.4
Released 2024-08-26
Imp MTA improvements
Added capability to spool in from disk using a fixed rate (
spool.rate
)In
smtpd-app.yaml
allowtransportgroups[].retry.during
andcount
to be configured without intervalsSpool in mail in the order of
spool.paths[].path
insmtpd-app.yaml
Added support for remoteip groupings (
queues.grouping.groupings[].remoteip[]
)Added capability to configure
servers[].commands.maxidle
andservers[].commands.maxbad
Inherit properties from policies to policy generated suspends
Updated c-ares (asynchronous name resolver) to 1.33.1
Updated curl (http client library) to 8.9.1
Imp Script language improvements
New str_chunk() function
New array_random() function
Support for AWS SIGv4 authentication in http() function
Added support for comments in CSV files (using
csv_decode
andimport
)Added support to add properties to suspends using queue_suspend() function
Optimized usage of
continue
in loops
Imp Native (C ABI) plugin improvements
Added HalonMTA_queue_suspend_add4(), HalonMTA_queue_suspend_update2() HalonMTA_queue_policy_update2() functions, to support properties
Added Halon_privileged_init() function, supporting privileged initialization
Imp Command line tool improvements
Added capability to spool in using a fixed rate with
hqfmove
Added progress indicate to
hqfmove
Bug Various bug fixes
Potential issue on manual message duplication
Dep Important changes
Do not increase process-stats counter
queue.pickup.misses
if the queue is emptyMove C-ABI callback
Halon_cleanup
callback to be call last during shutdown
6.3.1
Released 2024-07-10
Bug Couldn’t override
transportgroups[].retry.during
with a longer expiration using pre-deliveryTry()
function
6.3
Released 2024-06-20
Imp MTA improvements
Support for the PROXY protocol v2 TLV by passing it to the connect hook
Added tenantid queue policy field for supporting segmenting for example sender domains more easily
Make
servers[].phases.data.maxheadersize
configurableExpired messages are now removed from the active queue as well
Updated c-ares (asynchronous name resolver) to 1.31.0
Imp Script language improvements
Support to override encoding when doing MIMEPart.setBody() function
New strpduration() function
Updated libcurl (HTTP client library) to 8.8.0
Default
cache []
scope is nowconfig
(in configuration version “6.3”) instead ofglobal
(scripting.cache.scope
)
Imp Command line tool improvements
New hqfmove tool be able to migrate messages between hosts
Bug Various bug fixes
Fixed issue in halonctl when sorting a groupby
Fixed issue with HalonMTA_message_getinfo() and HALONMTA_MESSAGE_TAGS
Fixed memory leak when moving messages manually from the defer queue
Dep Important changes
Removed peer_cert in return value of smtp_lookup_rcpt()
6.2.4
Released 2024-05-14
Bug Downgrade included c-ares package due to upstream regression
6.2.3
Released 2024-05-08
Bug Fixed issue affecting CentOS7 due to bug in libc
6.2.2
Released 2024-05-02
Bug Fixed regression in multi-field suspends with localip
6.2.1
Released 2024-05-02
Imp Improved multicore performance on certain workloads
Bug Fixed rare issue with certain types of dynamic suspends
6.2
Released 2024-04-26
Imp MTA improvements
Improved suspend and policy evaluation performance
Added the ability to specify PROXY protocol servers per localip
Added
queues.threads.rate.priority
settingAdded support for suspend flag in queue list and queue groupby
Default rate algorithm for
"6.2"
policy configuration is now fixed-window instead of token-bucket (smtpd-policy.yaml:rate: algorithm: fixedwindow/tokenbucket
)Added support for systemd notifications in
smtpd
processAbility to trace a specific transaction
Added support for RFC8616 - EAI In DKIM and DMARC
Added option for disabling announcing
PIPELINING
(servers[].extensions.pipelining
)Added check to enforce protocol synchronization (
compatibility.synchronization
)Added
spool.threads.loader.wait
settingDomain DNS cache may include nullmx
C-ares upstream (1.28.1)
Imp Script language improvements
Improved detection of “Message expired” in Post-delivery script hook
DNS resolving functions are now async (
dns_query
,spf_query
, andverifyDKIM
)sleep
function is now asyncsignDKIM
now signsList-Unsubscribe
headers by defaultOptimized
pcre_replace
replacements
Imp Command line tool improvements
Added colors to
halontop
Clarified usage of
--reason
argument inhalonctl
queue update commandshalonconfig
will now use stable sort when compiling running configuration (smtpd-app.yaml
) includes
Bug Various bug fixes
Fix issue with conflicting Ansible roles (When running multiple roles on the same server)
Remove leading spaces when unfolding headers with
MailMessage->getHeader()
Fixed issue where
csv_encode
omitted all empty columns at the start of the list
Dep Important changes
MAIL FROM: <> SIZE
parameter is now enforcedRemoved
getpeercert
onTLSSocket
Removed
dnsbl
function (usedns_query
since 5.3)Removed
dns
anddns(mx|txt|...)
functions (usedns_query
since 5.1)Removed support for custom servers and timeout for
dns_query
,spf_query
, andverifyDKIM
Deprecated
peer_cert
in return value ofsmtp_lookup_rcpt
(peercert
should be used)In protobuf API rename
UNKNOWN
state toOTHER
The
halonctl.yaml
starting from file version 6.2, does now usesmtpd.yaml
format (and path).
6.1.1
Released 2023-12-27
Imp Explicitly configure bare LF behavior (
compatibility.barelf
)Default is changed to auto-detection, to keep the previous behavior set it to
true
.
6.1
Released 2023-12-14
Imp Plugin API(s)
HalonMTA_hsl_value_set()
can now set an OpenSSLEVP_PKEY*
to aPrivatekey
resourceHalonMTA_hsl_value_type()
can now detectX509Resource
andPrivatekey
resourcesHalonMTA_hsl_value_get()
can now get OpenSSLX509*
and OpenSSLEVP_PKEY*
fromX509Resource
andPrivatekey
resourcesAdded a new import API
Imp MTA improvements
It’s now possible to set concurrency and rate as unlimited in queue policy conditions
Added option to never try expired messages in queue (
transportgroups[].retry.pickupexpire
)Added support for changing syslog facility (
environment.syslog.facility
)Added support for groupings per IP (
queues.grouping.groupings[].unique
)Added support for spool-in only queue folders (
spool.paths[].write
)Added option to remove the from part of the Received header (
servers[].phases.data.receivedheader.from
)Added support for
servers[].proxy.xforwardedfor
header in HTTP API
Imp Command line tool improvements
Improved
--json-request
option so it includes the full request (including command)Added option to show queue trace with elapsed time
Added possibility to update jobid in queue update command
Added ability to delete suspends by filter
Added ability to list and delete policy conditions by filter
Imp Script language improvements
Allow configuration of
sourceip
forproxyprotocol
Added
localipid
to post-delivery connection logging objectAdded a nullish coalescing assignment operator to HSL (
??=
)Added more insights into generic delivery errors (such as DNS response code) in post-delivery
Throw an exception (
"No such transportid"
) if message is queued on a non-existing transportAdded
mx_exclude_bypass
to override anymx_exclude
Added support for
identity
option toadditional_signatures
option insignDKIM
Added
Map->merge()
function to merge keysAdded “buffered” option to
File()
to disable bufferingfile://
files into memoryAdded
mimeword_decode
andmimeword_encode
functionsAdded
header_addresslist_compile
function to properly escape a list of addresses with display namesheader_addresslist_extract
can now extract display names for addresses as wellhttp()
,TLSSocket()
,smtp_rcpt_lookup
,smtp_rcpt_auth()
,MIME.send()
,MailMessage.send()
,Predelivery.Try()
now support tls client certificate option as array of “x509”, “chain” (array) and “privatekey” resourcespkcs7_sign()
now support certificate option as array of “x509”, “chain” (array) and “privatekey” resourcesImprove overall performance of crypto functions using PKI or keys from the configuration
Added
toResource
method onX509
objectAdded support for importing certificates as resources in HSL
Improved performance of halonconfig when used with large configurations
Dep Important changes
Revamped license system
The
cache [ per_message ]
option has now been removed as a no-op (deprecated in6.0
)Private keys in the configuration (
pki[].private
) now needs to be in PEM format. In the case of ed25519 private keys without PEM header, use the following command(printf \\x30\\x2e\\x02\\x01\\x00\\x30\\x05\\x06\\x03\\x2b\\x65\\x70\\x04\\x22\\x04\\x20 && cat ed25519.key | base64 -d) | openssl pkey -inform DER -outform PEM
to add PEM header.
6.0.3
Released 2023-11-15
Bug Problem with eviction of connection based on grouping
6.0.2
Released 2023-10-02
Sec Updated libspf to fix CVE-2023-42118
6.0.1
Released 2023-09-01
Bug Fix issue with OpenMetric output in halonctl
Bug Suppress warning for unhandled submission.yaml file in halonconfig
Bug HTTP2 wasn’t available in http() on Ubuntu 22.04
6.0
Released 2023-08-16
Imp MTA improvements
Overall performance and memory usage improved
Ability to configure custom thread pools for internal SMTP event loops
Allow pooling reuse by grouping fields
New C-ABI functions
HalonMTA_config_to_json() to convert configuration to JSON
Added two new API hooks Halon_ready() and Halon_early_cleanup()
Added a new inject API
Improvements to
halonctl
Added support for all metadata filter options in
halonctl queue
commandsAdded
--limit
option to queue update commandAdded
--probability
option to halonctl queue update, list and unload commandsAdded types and help to OpenMetric output for
halonctl process-stats
command
Include CycloneDX SBOM files for the smtpd package
Improvements to metadata queries in queue protobuf API
Increase tag limits (16 to 32 characters) for queue pickup policies and suspends
Imp Script language improvements
Dep Important changes
Remote SMTP bounce messages no longer include SMTP states
Removed special meaning of
lookup-mx
as hostname toTry()
,smtp_()
andMIME|MailMessage.send()
functionsRemoved special meaning of
MIME("0")
(to get the EOD hooks root MailMessage object)The
cache [ per_message ]
option is now deprecated and will become a no-op in 6.1 (use$context
variable instead)Removed builtin
LDAP()
,ScanDLP()
andScanDMARC()
functions (use halon-extras-ldap, -dlp and -dmarc instead)
Bug Various bug fixes
HSL function memory_store() callback argument bug
5.12.1
Released 2023-05-03
Bug In HSL fix an issue with Map/Sets iterators and foreach
5.12
Released 2023-04-12
Imp MTA improvements
Faster policy evaluations and subdomain matching
Added a new grouping field to the queue structure to be used for combined recipientdomain/remotemx groupings
Added
LOGIN
parameter support to theXCLIENT
commandAdded support for network matching in PROXY, XCLIENT and TLS client cert settings
Added connection pooling reuse setting based on remotemx
Various improvements to DNS resolving
Added a global DNS domain cache
Restructured DNS cache to resolve all addresses, with deduplication
Added global settings for resolver.mx.exclude.ip and resolver.mx.exclude.mx
Priority messages now also have priority in resolver and script execution queues
Allow overriding serverhost (
servers[].hostname
) in connect hooks’sAccept()
functionAdded ability to read plugin configurations from file paths
Improvements to
halonctl
Added
--no-pipelining
options to queue trace commandMore precise time (usec) resolution in queue trace command
Queue update command now supports changing only localpart or domain of senders/recipients
halontop
now resizes layout to terminal sizeAdded a new C-API (HalonMTA_deliver_trace) to do custom trace outputs in delivery plugins
Added a new C-API for queue pickup plugins
Imp Script language improvements
Added support for multiline CSV data in csv_encode() and csv_decode()
Added option to allow non-convertible objects to be converted to none in json_encode()
Dep Important changes
Deprecated
ScanDMARC()
(installhalon-extras-dmarc
)Deprecated builtin
LDAP
class (installhalon-extras-ldap
)Removed
MailMessage.deliver
(deprecated since 5.2, useMailMessage.queue()
instead)Removed
/dev/null
as special transport destinationRemoved
GetMailQueueMetric()
(deprecated since 5.3)
Bug Various bug fixes
Missing dynamic policy id in
$arguments
in post-delivery on rate only policy conditionsFixed timeout issue with PIPELINING
queue_policy_delete()
function was missing in AUTH hookFix issue with
unset
inforeach
loopsFix issue with
scripting.rootpath
ending with/
In HSL do not allow index dereference of string with key types other than numbers
In HSL do not allow slice operator dereference with key types other than numbers
jobid
set in pre-deliveryTry()
function was not updated in post-delivery hookFixed rare crash with queue trace command on busy systems
5.11.3
Released 2023-02-17
Bug Improved error handling with HTTP submissions API
Bug Fix error message with
halonconfig --dist-check
and missing schemasBug Fix rare issue connection retry
5.11.1
Released 2023-02-06
Bug Fix a rare issue with configuration reload on Ubuntu
5.11
Released 2023-02-03
Imp MTA improvements
Added a
halonctl queue trace
command to trace outbound SMTP connectionsOutbound PIPELINING support
Ability to change TLSv1.3 cipher suites on server and clients
Queue performance optimizations
Added setDateLater() function to set Date header on delivery
Added connection
id
and numbers oftransactions
to post-delivery attempt connection arrayAdded support for networks in the Try() argument
ip_exclude
Allow changing jobid with
Queue()
functions in pre- and post-deliveryAdded remotemx information to outbound connection list
Added support for
--size
,--subject
,--metadata-and
filter conditions tohalonctl
Added the ability to clear the internal DNS cache using domain wildcards in
halonctl
Imp Script language improvements
Map
/Set
iterator are now thread safe with imports (modifications are not)Added support for data types when
import
ing YAML filesAdded support for private key import (RSA and ED25519 keys)
Added rsa_privatekey() and ed25519_privatekey() function to load keys as PrivateKey resources
Added array_combine() function
Added
exclude_headers
tosignDKIM()
functionsAdded support for PrivateKey resources to
signDKIM()
functionsAdded support for tags when
parsing
ing YAML filesAdded
MIMEPart.getByID()
functions to retrieve a MIMEPart by IDAdded support for Regex types to
MIMEPart.findByType()
andMIMEPart.findByFileName()
functionscsv_encode()
will not added quotes to string with spaces
Bug Fix issue with slow graceful shutdown of
smtpd
Bug Fix issue with the
halonctl queue groupby
command if jobid was set withTry()
Bug Fix issue with including files using symlinks within the rootpath in HSL
Bug Fix issue with global functions and module imports in HSL
Dep Important changes
Migrating away from Cyren (ctasd and ctipd)
The deprecated
DirectDeliver()
function now acts as a queuing deliverRemoved deprecated
GetTLS()
,Allow()
,Block()
andDeliverWithDKIM()
functionsOn Linux, trying to reload with Halon script compilation errors will continue using the previous configuration
5.10.1
Released 2022-12-06
Bug halonctl resolver command didn’t ignore SIGPIPE
Bug halontop didn’t show patch version properly
Bug On some Linux distros environment.rlimit.nice could not be set to a negative value
Bug Improved error handling on JSON payloads in smtpd HTTP API
Bug On configuration load filename was missing in error message
Bug Fixed a stability issue
5.10
Released 2022-10-11
Imp Package and repository improvements
Builds for Ubuntu 22.04 LTS
Packages for extras projects written in Halon script
Imp MTA improvements
Ability to change IP address family (v4/v6) preference
Support for implicit TLS for outbound connections
New outbound TLS mode dane_fallback_require_verify for DANE/MTA-STS coexistence
Added peer certificate error and TLSA to post-delivery’s attempt information
Store last attempt’s
localip
,remoteip
andremotemx
in the defer queue
Imp Script language improvements
Added domain_publicsuffix() function
Added url_parse() function
Added
insert_function
option tocache []
Added new match expression
Socket.recv
may now use multiple flags as an arrayAdded support for
body_length
in signDKIM()Ability to set properties and the stop flag in for dynamic queue_policy()
Imp Protobuf API improvements
QueueGroupBy
bylocalip
as wellQueueGroupBy
support policy grouping (MX rollup, etc)More
ServerConnectionsList
information; transactions, local IP and ports
Imp Command line tool improvements
halonctl groupby
overhaul, adding lots of new functionalityhalonctl queue update
now have a dry-run flag to test querieshalonctl process-stats
may now output Prometheus compatible formats
Bug Fix issue with dynamic policies in the 35/8 subnet
-
The Ubuntu packages no longer depends on
halon-extras-rate
andhalon-extras-dlp
(need to be explicitly installed)The per-recipient end-of-DATA function
DirectDeliver
is deprecated, useMailMessage.send()
insteadThe post-delivery function
GetTLS()
is deprecated, use thetls
object in$arguments
instead
5.9.3
Released 2022-12-05
Bug Fixed a stability issue
5.9.2
Released 2022-08-16
Bug
GetTLS()
in post-delivery could fail on non-delivered messagesBug Issue with
Queue()
in post-delivery with no retry delayBug Fixed an error message in
halonconfig
5.9.1
Released 2022-05-31
Bug Fix issue with IPC (Unix domain socket) permission on Linux
5.9
Released 2022-05-30
New Added priority for queued messages
New Added max age of messages in queue (
retry.during
) as an alternative toretry.count
Imp MTA improvements
Added support for thread priority for various thread pools and event loops
Made
ip_exclude_temporary
also work withmx_exclude
in SMTP clientsAdded
dane_fallback_require
as TLS mode in SMTP clientsAdded support for more AUTH mechanisms in SMTP clients (eg. XOAUTH2)
Randomize the order of equal-preference MX host addresses
Added possibility to configure custom script thread pools per hook
Delivery settings may now change max retries/during and retry intervals
Added
queues.maxmessages
to limit number of messages to hold in memoryAdded
data.fixheaders
(false) anddata.mimepart.fixheaders
(false) to inject\r\n
before bad headersAdded
queue.loader.active
counter to hold total messages currently loadedPostmaster address may be configured separately as localpart and domain (inherit from reporting-mta)
Added possibility to disable MIME multipart parsing for performance
Added
maxparts
to configure max MIME partsAdded ability to change
transportid
inTry()
Added
$arguments["expired"]
to post-delivery hook to indicate bounces due to age or max retry countAdded reason to
Delete()
in the pre-delivery hookAdded support for DSN options to
Bounce()
in the pre-delivery hook
Imp Script language improvements
Added array dereference with spread operator inside of arrays
Allow upcast of TLSSocket to Socket with TLSocket.toSocket()
Added setFileName() and setDisposition() functions to
MIME()
Detect MIME parsing errors with MailMessage.getErrors()
Added support to create
MailMessages
fromFile
objects using MailMessage::File()Added reason for policy result and detailed error/errno to
spf_query()
output
Imp Native (C ABI) plugin improvements
Added support to get object properties with HalonMTA_hsl_object_property_get()
Create MailMessage and File classes from strings with HalonMTA_hsl_value_set()
Detect MailMessage type with HalonMTA_hsl_value_type()
Imp HTTP submission API improvements
Added
/health
endpoints to be used with load balancersAdded
$arguments["headers"]
to end-of-DATA scriptAdded concurrency limit setting per server
Certificates are soft reloadable in configuration
Imp Protobuf API improvements
Include HTTP connection in ServerConnectionsList replies
Support for close reason of HTTP connections with ServerConnectionsClose
Added option to reset
transactionid
,ts
andretrycount
upon message importBounce action may set
status
anddiagnosticcode
on queue updatesAdded regular expression support in StringMatch in API for message conditions
Added unique count feature to groupby
Added maximum values to process stats and present them nicely in
halontop
Imp All halonctl commands accepting time now allows for X[dhms] syntax
Imp Added dist-check command to halonconfig to check generated configuration
Imp Added option to stop-on-match in smtpd-policy.yaml when matching rules
Imp Add configurable rate sync delay to improve UDP synchronization reliability
Bug Fix validation bug in JSON schema with HTTP submission API
Bug Fix validation bug in post-delivery hook with
$arguments["dsn"]["status", "diagnost
…Bug Allow long lines in message body when receiving messages with CHUNKING
Bug Fix rate issue with dynamic policies which could cause MTA restarts
Bug HTTP submission API header name “X-API-Key” was not case insensitive
Bug Statistics queue.policy.rate.suspends not decreased on manual message deletes
Bug Fix bug in C API when invoking function pointers in class member functions
Bug Properly detect temperror in ScanDMARC()
Bug Fix escaping of email addresses by escaping additional characters
Bug Added detection newer versions of .docx and .xlsx files in ScanDLP()
Dep Deprecated use of MIME(“0”) in EOD, use $arguments[“mail”] or GetMailMessage() instead
-
Removed “eodrcpt” from Linux builds
Removed ability to control “rated” and “dlpd” from “halonctl” (use ratectl or dlpctl instead)
Removed deprecated functions from per-message end-of-DATA script: Queue(), GetMailMessage(), GetTLS(), GetAddressList(), DKIMSign(), DKIMSDID(), DKIMVerify()
5.8.4
Released 2022-03-16
Sec Updated OpenSSL to fix CVE-2022-0778
5.8.3
Released 2022-02-10
Bug Auto-detection of DKIM keys in
additional_signatures
fixedBug Reduce risk of
rated
UDP packet loss for initial synchronizationBug Issue with
ScanDLP()
and custom rules fixedBug Updated libcurl to 7.81
5.8.2
Released on 2022-01-25
Bug DKIM validation issue under certain circumstances
5.8.1
Released on 2022-01-10
Bug Privdrop after creating control socket in
rated
Bug Fix
rated
startup rate hit syncBug Fix minor issue parsing bad headers
5.8
Released 2021-12-13
New Templates for Docker and Kubernetes
The
dlpd
content filtering connection now uses a HTTP based APIThe
rated
rate control connection supports DNS with dynamic re-resolve
New APT/deb and RPM repositories
Components are now in separate packages (MTA, rate control, content inspection, etc.)
Added separate
dlpctl
anratectl
tools for the respective new packages
New MTA features
HTTP submission API for pre-formatted RFC822 messages
halontop program showing realtime process metrics
Faster DKIM dual-signing with
additional_signatures
to signDKIM()Ability to use multiple spool paths
Added support reserved connection slots
Export message using with
QueueExportRequest
API
New Native (C ABI) plugin features
Added Halon_command_execute() function, supporting
argv
style of argumentsAdded Halon_early_init() function, supporting early initialization
Added HalonMTA_hsl_value_to_json() and HalonMTA_hsl_value_from_json() functions
Added HalonMTA_hsl_value_array_length function
Autoloading plugins without configuration
Support for objects
Support for exceptions
Support for static functions
Support for running Halon script functions in C
Support for working with lists function in C
Support for more types in C API such as
X509
,File
objects
Imp Script language improvements
Added zlib_compress() and uncompress functions
Added MIME.toFile() function
Added MIME.setDate() function
Added X509.extensions() function
Added X509.verify() function
Added X509::String() function
Added queue_policy_delete function
Added import support for multiple X509 certificates (.crt)
Added import support for rfc822 message files (.eml)
Added glob import support
Added support for
srv
records in dns_query() function
Imp MTA improvements
Improved DSN generation by supporting to include full original messages and DSN field customization
Include DSN arguments in post-delivery
$arguments["dsn"]
arrayInclude queue policy insights in post-delivery
$arguments["policy"]
arrayAdded support for customization of the Received header (
tls
andfor
)Order queue list by retrycount
Support message retry with a jitter (distribution) in queue actions
Added support for queue message grouping of remoteip and remotemx
Added lists, grouping of conditions, and custom properties to active queue policy and delivery settings
Allow configuration of multiple pickup threads
Added delivery counters to process stats
Added support for
.halonignore
files when packaging configuration usinghalonconfig
Bug Fix bug with localip in smtpd-delivery.yaml
-
Removed the deprecated
GetMailFile()
functionIt’s no longer valid to send message to plain IP addresses
user@ip
Standard ciphers names are now used in logs (instead of OpenSSL convention)
Graceful shutdown for inbound connections
Renamed process threads (visible in
top
)
5.7.4
Released on 2021-11-09
Bug MIME formatting issue with append/prependPart() on non-MIME messages
Bug Issue with DKIM signature in bounces
Bug
MIME()
not storing decoded headers when queuing
5.7.3
Released on 2021-09-19
Bug Direct deliver in EOD rcpt hook
5.7.2
Released on 2021-08-24
Bug File type detection in DLP engine
5.7.1
Released on 2021-08-06
Bug Make linter recognize
$connection["tls"]["sni"]
Bug Startup bulk synchronization in
rated
Bug PROXY protocol heartbeat connections
5.7
Released 2021-07-21
New Introducing exception handling with accompanying
try
,catch
andthrow
control structuresNew Visual Studio Code plugin support for debugging script in the
smtpd
MTA processNew
ServerConnectionsListRequest
APINew Ability to close inbound connections with
ServerConnectionsCloseRequest
APINew Added array_unique() and
array_shuffle()
functionsNew Added pcre_compile() function to pre-compile regular expressions from user input
New Added #/myregexpattern/ syntax for creating pre-compiled regular expressions
New Added X509::String() method for creating an X.509 resource from PEM or DER
New Added MIME.send() method for inline delivery directly from MIME object
Imp New HQF2 queue file format which combines .eml and .hqf
Imp Added
--unpack
option tohalonconfig
to reverse packingImp The
halonconfig
command now validates plugin configuration schemasImp Added
additional_headers
option to pre-deliveryTry()
function for passing dataImp Added
modified_original
DSN option to post-deliveryBounce()
for altering original headersImp Added connection
id
andremoteuid
to SMTP server$connection
arrayImp Added
remove_if_zero
argument tomemory_dec()
for automatic cleanupImp Added
json
andregex
formatters toimport
andcsv_decode()
Imp Ability to
import
text file lines asSet
object items for fast lookupsImp Allow
foreach
on$this
in classes to iterate all instance propertiesImp Added
depth
option todomain_includes()
functionImp Ability to use
response_headers
withextended_result
inhttp()
Imp Support for loading
File
from standard input when running inhsh
Dep The
=~
and!~
operators now throws on invalid regular expressionsDep Messages with empty
remotemx
orjobid
are not matched against queue policies with thoseDep Modules loaded with
import
can no longer access global user-defined functionsDep Removed
mail()
optionrawbody
and URI fallback forldap_bind()
(deprecated since 4.8)
5.6.4
Released on 2021-07-19
Bug No longer passes function pointers from in
$context
(only data is supported)Bug Fixed long loading times of
hsl-lint
andhalonconfig
with large YAML filesBug Resolved issue with
queue_suspend()
andqueue_policy()
argument orderBug Connection pooling didn’t work with outbound PROXY protocol
Bug In post-delivery attempt array, localip was not set correctly with outbound PROXY protocol
Bug Issue with
cache []
size if is set to2**32
Bug The transport retry intervals didn’t override the transport group’s intervals
5.6.3
Released on 2021-06-29
Bug Issue with the
cache []
when exception was thrown from cached functionBug Context switching with plugins wasn’t supported in the PROXY script
Bug The
$context
variable wasn’t updated after the EOD script hookBug Only one DKIM signature was supported on the
MIME()
objectBug Imported function could not resolve nested function in some special cases
Bug Imported object between multiple hooks could not resolve imported functions in some special cases
5.6.2
Released on 2021-05-28
Bug Fixed issue with updated variables and logging in per-recipient end-of-DATA script
Bug Fixed auto generation of transaction ID on API
QueueImport
Bug Fixed encoding issue in
xtext_encode()
5.6.1
Released on 2021-04-08
Bug Fixes a race condition in the queue script
5.6
Released on 2021-03-22, see the release notes for notable changes
New Added native plugin support by loading C ABI compatible libraries
New Added CSV schema validation support in import so that imported files gets validated
Imp Ability to start the server without any listeners in order to drain queue
Imp Allow server control socket to listen on IP in addition to socket file
Imp Ability to group queue distribution view by sending domain
Imp Added variables for disconnect reason to disconnect script hook
Imp http() function now supports explicit
http_version
andpost_size
Imp Ability to modify (rather than just add and delete) queue suspend and policy items
Imp Added total count in API response for queue
list
andgroupby
CLI/API commandsImp Possibility to disable the Received header (instead of having to delete it from script)
Imp Added In-Reply-To to DSN messages (to support threaded bounces)
Imp Added decode option to MIMEPart.getHeader functions
Imp Added binary option to all hashing functions (eg. sha2 function)
Imp Improved concurrent cache miss behavior in the HSL cache
Imp Added possibility to disable hook logs
Imp Default() function now allows configuration of bounce settings
Imp Try() function IP include and excludes (similar to
mx_include
andmx_exclude
)Bug Resolved an issue with the queue updates
Bug Resolved an issue with the import statements and reloads
Bug Fix bug with paging of Halon script rates
Bug Fix a memory leak in the backend authentication script (with modules)
Bug Missing error counters on connect and disconnect
Bug Halon script Socket classes’ close() method could cause unexpected disconnect behaviors
Bug Fix support for BDAT and the proxy script hook
Bug Fix an issue with SNMP and the firewall script
Dep queue_suspend() and queue_policy() has changed its return value
Dep Text log formats has been slightly changed
Dep File.toFFIValue() function now returns C-compatible FILE pointer.
Dep Remove functions a per the deprecation note
Dep Queue suspend and policy API calls return UUIDs instead of
uint64
Dep Minimum supported API version is (5.6)
5.5
Released on 2020-11-16, see the release notes for notable changes
New DSN extension support
New Outbound PROXY protocol support
New Function generators and
yield
New Map() and
Set()
data container classesNew Ability to disable sourceip_random, useful during for example IP warmup
New Added halonctl hsl memory list and corresponding
HSLMemoryListRequest
APINew Added base32_encode and decode functions
New Added url_encode and decode functions
New Test command for the asynchronous DNS resolver halonctl resolver query
New Queue suspend filters with
halonctl queue suspend list
andSuspendRequest
APINew Settings for max messages, recipients and hops
New Added
unix_socket_path
option to http() functionNew Added spool.corrupt setting for controlling handling of bad queue files
New High-resolution process runtime counter
process.elapsed
New Active queue performance counters
queue.pickup.X
New Script error counters
servers.X.scripts.Y.errors
Imp Fraction of second in sleep()
Imp Improved performance for large active queue policy rate buckets and exclude lists
Imp Ability to specify an ID for dynamic active queue suspensions and policy conditions
Imp Ability to filter
halonctl hsl rate list
based on conditionsImp More relaxed rules for naming of ID and file path in YAML schemas
Imp Improved
smtpd
process shutdownImp Improved SMTP command diagnostics (“in reply to”) in bounces
Imp Added Original-Envelope-ID and Original-Recipient headers to bounces
Imp Consider all 2xx-codes successful in SMTP client
Imp File descriptor exhaustion error logging and handling improved
5.4.3
Released on 2020-11-09
Bug Support binary POST data in background
http()
callsBug Fixed MIME’s
verifyDKIM()
after doing message modificationBug Fixed error flag issue with consecutive calls to
ScanKAV()
(on same message)Bug Prevent announcing extensions from HELO/EHLO script hook on
HELO
Bug Fixed
halonctl
missing fieldssenderhelo
,saslusername
andduration
Bug Fixed issue with queue list duration sort order
5.4.2
Released on 2020-10-01
Bug Fixed issue with PROXY protocol and implicit TLS
Bug Fixed proxy script and lint issue with
halonconfig
Bug Fixed counting issue with the
scripts.proxy.running
/finished
process statsBug Restored the
id
andts
fields inScanDMARC()
outputBug Enable queuing of messages from
hsh
5.4.1
Released on 2020-08-14
Imp UUID version selector (time/v1 or random/v4)
Bug Fix default enhanced status code in bounces for certain errors
Bug Added validation of certain CLI arguments to improve error reporting
5.4
Released on 2020-07-22, see the release notes for notable changes
New CHUNKING/BDAT and the SIZE service extension
New Disconnect script hook
New yaml_decode() function and import loader (similar to JSON)
New Ability to export an File classes as a C++ std::istream
New Ability to export an X.509 resources as a OpenSSL pointer
New FFI callback function
New DSN options to
Bounce()
andQueue()
that allows overriding content, headers, delay, etcNew Pre-defined variable of the DSN that is to be generated
New
Default()
function in post-delivery to terminate script based on delivery result and settingsNew Settings for minimum amount of free inodes and bytes for receiving email
New Setting for fsync before 250 on DATA
New Settings for number of max hops (loop protection) of 30 seconds
New Pre-defined variable for username when accepting email on local Unix socket
New
http()
callback function for POST dataNew MailMessage queue() function
New MailMessage
get/setPreamble()
andget/setEpilogue()
functionsNew MailMessage
modifyContent()
function advanced, direct modification of email dataNew Static
File::read()
function that returns all data from a file pathNew LDAP class getoption() function
New Numeric separator
New Zero-fill right shift bitwise operator
Imp Ability to change
import
loader typeImp Includes SIZE= in MAIL FROM if server announces SIZE service extension
Imp SMTP client always send EHLO first (and then try HELO)
Imp Do not include detail in local-part in license count (user+detail@domain)
Imp MIME
queue()
options for delay and holdImp Ability to override recipient domain for MX lookup in pre-delivery and all other places
Imp Access to the queued email data in pre/post-delivery as a
File
resourceImp
dns_query()
option for extended results including TTL and type-specific fieldsImp Added reply code option to all
Accept()
functionsImp
Auto-Submitted
header to bounces (rfc3834)Imp Saving custom views on queue pages
Imp Custom metadata groupings and columns on queue pages
Imp Number compare for metadata filters on queue pages
Imp Partial and case sensitive matching of local parts on queue pages
Imp Real-time rates for counters on process statistics page
Imp Added process stat counter for finished script hooks
Imp Added multiple recipientdomain and remotemx option to if statements in delivery configuration
Imp Network matching in queue conditions for sender-, local- and *remoteip&
Imp The API output is always normalized as UTF-8
Imp The API supports comparing queue metadata as numbers
Imp The
MIMEPart.setBody()
andMailMessage.toString()
limitation of 1 MiB is now removedImp Extended error reporting from Sophos AV
Imp Added -R to
hsh
to override scripting.rootpathImp Added –ffi to
hsh
to override scripting.ffiImp Added –binary flag to
hsh
Imp Added support for FFI in
hsl-lint
Imp Protobuf schemas are now part of the Linux package
Imp Removed
httprd
from the Linux packageImp Added queue load command to
halonctl
to import messagesBug Resolved issue with SMTPUTF8 and connection pooling
Bug Wait for support processes like
rated
anddlpd
Bug Log thread creation errors in updateQueue
Bug Make the
domain_includes()
function non-case-sensitiveBug Depend on
uuidd
runtime on LinuxDep The
Queue()
function (overrides the built-in logic) may now exceed the transport’s max retry countDep The
SetDSN()
function has been deprecated in favour of the “dsn” option to Bounce() and Queue()Dep The
inet_includes()
function now return none on errorsDep The
LDAPResult.next()
andFile.readline()
now return false on end-of-data instead of noneDep The
MIMEPart.setBody()
limitation of 1 MiB is now removedDep The dns_query() function’s ttl result property has been removed in favour of the extended_result option
Dep All messages in the active queue now have at least one localip (instead of showing an empty address)
5.3.5
Released on 2020-06-10
Bug Fixed a stability issue with the connection pool
5.3.4
Released on 2020-05-26
Bug Fixed issue with server connection concurrency limit
Bug Fixed tags (comments) for some types of manual active queue suspends
Bug Fixed issue with the proxy script hook
5.3.2
Released on 2020-03-10
Imp Support more charsets by inclusion of latest GNU iconv
Imp Changed log level of ldap_auth() function failures
Bug Fixed issue with active queue policy with certain groupings
Bug Fixed issue with decoding of RFC2231 parameters values
Bug Fixed regression with decoding of certain charsets
Bug Fixed regression with Mellanox (mlx5en) network adapters
5.3.1
Released on 2020-02-24
Imp Added SMTP state information to delivery error logs
Imp Added
port
option to dns_query() functionBug Fixed issue with duplicate messages API call
Bug Fixed “neq” condition (not equal) with “size” and “retry_count” fields
Bug Fixed issue with message size variable and per-recipient end-of-DATA script
5.3
Released on 2020-02-11
New Queue features and API
Connection pooling (reuse)
Fine-grained queue query API (for list, update and distribution)
Improved queue quota functionality
Added delivery settings for active queue fields
Added active queue suspend and policy functions to more script hooks
Added message size including modifications to pre- and post-delivery script
New Command-line interface tool halonctl
New SMTP server scripting features
Added timestamp, expiration and identity options to the signDKIM functions
Imp Script language improvements
New Iconv() class for internationalization conversion
Added array_every function to test all element against callback
Added Base64 encoding option to the MIME set/addHeader functions
Imp Certificate can be in reloadable configuration even if private key is in startup
Imp Added graceful draining to the background http() process httprd
Imp Added idle timeout to virtual servers
-
Removed GetMailQueueMetrics() in favour for new queue_quota() function
Merged smtpd and queued processes which affects logging