What's new
This release adds support for the CHUNKING extension and highly improves the DSN/bounce generation with lots of options for customization. Please see the changelog below for a full list of changes, and the release blog for more information.
Important changes
- In version 5.3 and lower, an explicit call to Queue() when the max retry would have been be exceeded instead resulted in a bounce or delete. This was a problem for reliable logging, and programmatically predicating the behavior. It has therefore been changed in 5.4. An explicit call to the Queue() function from the pre- or post-delivery script (overriding the built-in logic) may now exceed the max retry (as configured on the transport).
- The SetDSN() function has been deprecated in favour of using the "dsn" option to Bounce() and Queue() in the pre- and post-delivery script. The old pattern did not provide information regarding whether a bounce were to be created or not. The new "dsn" option makes the intent clear.
- The inet_includes() function now return none on errors (for example caused by invalid subnet syntax).
- The LDAPResult.next() and File.readline() now return false on end-of-data instead of none (which is reserved for errors).
- The MIMEPart.setBody() limitation of 1 MiB is now removed.
- The dns_query() function's ttl result property of has been removed in favour of the new extended_result option.
- All messages in the active queue now have at least one localip (instead of showing an empty address). The addresses 0.0.0.0 or :: are chosen depending on the remoteip address family.
Deprecation warnings
No functions has been removed in this release, however, a few function previously generating critical warning (each time they were used) has now also been removed from the code validation functionality, causing an error when trying to save. If you need any help to resolve these warnings, please don't hesitate to contact support@halon.io.
The following 5 new deprecation warnings will appear in preparation for future changes:
- In the HELO and AUTH context the GetTLS() function is now deprecated in favor of using the available $connection["tls"] variable.
- In the HELO the GetExtensions() function is now deprecated in favor of using the available $arguments["extensions"] variable.
- In the pre and post-delivery context the GetMailFile() function is now deprecated in favor of using the available $arguments["file"] variable.
Changelog
This is a list of notable changes, in addition to the ones mentioned above. You can find the full changelog here.
Added
- Queue and delivery
- Support for CHUNKING/BDAT and the SIZE service extension
- DSN options to Bounce() and Queue() that allows you to override things like content, headers and delay
- Pre-defined variable of the DSN that is to be generated
- Default() function in post-delivery to terminate script with the default action based on delivery result and settings
- Access to the queued email data in pre/post-delivery as a File resource
- Ability to override recipient domain for MX lookup in pre-delivery and all other places
- Auto-Submitted header to bounces (rfc3834)
- SMTP server
- Support for CHUNKING/BDAT
- Disconnect script hook
- Settings for minimum amount of free inodes and bytes for receiving email
- Setting for fsync before 250 on DATA
- Settings for number of max hops (loop protection)
- Added reply code option to all Accept() functions
- Pre-defined variable for username when accepting email on local Unix socket
- Scripting language
- YAML decode function and import loader (similar to JSON)
- Ability to export an File classes as a C++ std::istream
- Ability to export an X.509 resources as a OpenSSL pointer
- FFI callback function
- http() callback function for POST data
- MailMessage queue() function
- MailMessage get/setPreamble and get/setEpilogue functions
- MailMessage modifyContent() function advanced, direct modification of email data
- MIME queue() options for delay and hold
- dns_query() option for extended results including TTL and type-specific fields
- Static File::read() function that returns all data from a file path
- LDAP class getoption function
- Numeric separator
- Zero-fill right shift bitwise operator
- Web administration
- Active queue policy, suspend and delivery configurations in code editor
- Saving custom views on queue pages
- Custom metadata groupings and columns on queue pages
- Number compare for metadata filters on queue pages
- Partial and case sensitive matching of local parts on queue pages
- Real-time rates for counters on process statistics page
- Other
- The API output is always normalised as UTF-8
- The API supports comparing queue metadata as numbers
Changed
- The MIMEPart.setBody() limitation of 1 MiB is now removed.
Fixed
- Resolved issue with SMTPUTF8 and connection pooling
- Wait for support processes like rated and dlpd
- Log thread creation errors in updateQueue
- Make the domain_includes() function non-case-sensitive
Integrated package
- Timeout settings for Sophos and ClamAV, with new defaults of 30 seconds
- Extended error reporting from Sophos AV
- Fixed an issue with multiple network interfaces using DHCP
- Fixed an issue with storage disk resizing
- Fixed an issue with history search filter matching and less- and greater-than
- FreeBSD 12.1-RELEASE-p7
- FreeBSD 12 quarterly packages
- Sophos 3.2.07.379.0
Comments
0 comments
Article is closed for comments.