# SPF Milter changelog All notable user-facing changes are listed in this changelog. This project follows Rust-flavoured [semantic versioning], with changes to the minimum supported Rust version being considered breaking changes. [semantic versioning]: https://doc.rust-lang.org/cargo/reference/semver.html ## 0.7.0-alpha.1 (2024-06-13) With this release, development has moved from GitLab to the [Codeberg] platform. The minimum supported Rust version is now 1.74.0. [Codeberg]: https://codeberg.org ### Changed * The minimum supported Rust version has been raised to 1.74.0. ## 0.6.0 (2023-09-20) The minimum supported Rust version is now 1.65.0. ### Changed * The minimum supported Rust version has been raised to 1.65.0. * In parameter `header`, the order of inserted headers is reversed. That is, the setting `header = Received-SPF, Authentication-Results` now behaves like `header = Authentication-Results, Received-SPF`, and vice versa. ## 0.5.0 (2023-02-07) The minimum supported Rust version is now 1.61.0. ### Changed * The minimum supported Rust version has been raised to 1.61.0. * Deletion of incoming forged *Authentication-Results* headers is now logged at debug instead of info level. ### Fixed * When log destination `stderr` is used, the milter no longer panics when it cannot log to standard error. ## 0.4.3 (2022-11-16) ### Changed * The informational log messages for *temperror* and *permerror* verification results now state the reason for the result. ### Added * The `temperror_reply_text` and `permerror_reply_text` parameters can now include the special token `%{reason}`. This token is expanded to a phrase describing the reason for a *temperror* or *permerror* result. The new default value of these parameters includes this token. ## 0.4.2 (2022-09-24) ### Changed * The command-line user interface has been reimplemented using a lighter-weight, no-dependencies approach. While there are some differences in appearance and error reporting, there are no functional changes in using the program. Make sure that you are not relying on undocumented (and therefore unsupported) behaviour of the old CLI. ## 0.4.1 (2022-06-07) ### Changed * In the underlying [viaspf] SPF library the implementation of the DNS lookup limits requirements of RFC 7208 has been revised. Consequently, handling of the DNS lookup limits in SPF Milter is now more lenient. You will notice that *permerror* results due to exceeded lookup limits occur less often. * Text and style improvements in the man pages. [viaspf]: https://crates.io/crates/viaspf ## 0.4.0 (2022-03-14) In this release, the milter implementation has been replaced with the new [indymilter] library. With this change, there is no longer a dependency on the libmilter C library. SPF Milter is now a pure Rust application. The minimum supported Rust version is now 1.56.1. ### Changed * The minimum supported Rust version is now 1.56.1 (using Rust edition 2021). * The syntax of the mandatory `socket` parameter has changed: - Use inet:host:port for a TCP socket. - Use unix:path for a UNIX domain socket. * The signal that causes the milter to reload the configuration is now `SIGHUP` instead of `SIGUSR1`. Configuration reloading is no longer done asynchronously and delayed, but is instantaneous. * The command-line help information has changed its appearance slightly with the update of the underlying [clap] CLI library. * The changelog is now maintained in a more structured format, similar to https://keepachangelog.com. ### Removed * The parameter `milter_debug_level`, which was related to the underlying milter library, has been removed. ### Added * All SMTP reply text parameters now support macro expansion. Macros will be expanded according to spec. Previously this was only supported for parameter `fail_reply_text`. * The new parameter `max_lookups` can be used to configure the number of DNS lookups allowed per SPF query ([glts/spf-milter#5](https://codeberg.org/glts/spf-milter/issues/5)). ### Fixed * In generated *Authentication-Results* headers, internationalised domain names are recorded in Unicode instead of ASCII form, per RFCs 8616, 8601, and others. * When multiple forged *Authentication-Results* headers are to be deleted when parameter `delete_incoming_authentication_results` is set, delete the headers at the correct indices. [indymilter]: https://crates.io/crates/indymilter [clap]: https://crates.io/crates/clap ## 0.3.3 (2021-11-20) * Disable unused milter stages during milter protocol negotiation. * Various minor updates to documentation and project metadata. * Update dependencies. ## 0.3.2 (2021-07-31) * Ensure that SMTP replies are ASCII-only, in accordance with the requirement in RFC 7208, section 6.2. * Add parameter `skip_senders` to allow specifying inline a list of senders to ignore. * Improve formatting of generated *Authentication-Results* headers. * Update dependencies. ## 0.3.1 (2021-06-13) * Insert headers before the MTA’s *Received* header instead of after it. * Convey all available verification results (HELO and MAIL FROM) in a single *Authentication-Results* header. * Add installation instructions for Red Hat. Contributed by Swallowtail23. * Update dependencies. ## 0.3.0 (2021-05-20) * (defaults and behaviour change) The default value of the `definitive_helo_results` parameter is now the empty set (instead of `pass, fail`). At the same time, the parameter `reject_helo_results` now applies unconditionally and is no longer constrained by the value of `definitive_helo_results`. With this change, use of `definitive_helo_results` has been deemphasised in the documentation. While this parameter is necessary for full RFC conformance, we find it is more of a niche feature in practice, and not appropriate to enable by default. * Add parameter `skip_senders_file` to allow specifying a list of sender identities to ignore (ie, senders bypass SPF verification). * Add parameter `include_all_results` to allow adding all available verification results (HELO and MAIL FROM) to the message header, instead of just one of them. * Update dependencies. ## 0.2.2 (2021-03-27) * Update dependencies. ## 0.2.1 (2021-03-01) * Add parameter `include_mailfrom_local_part` to allow reporting the *local-part* of mailboxes in *Authentication-Results* headers. * Properly specify minimal dependency versions in `Cargo.toml`. * Update dependencies. ## 0.2.0 (2021-01-12) * (behaviour change) The HELO identity is now verified at the `helo` stage of the milter protocol instead of at the `mail` stage ([glts/spf-milter#1](https://codeberg.org/glts/spf-milter/issues/1)). While this is mainly an implementation change, it is nevertheless observable in certain cases. In particular, the sender authentication status is not available at the `helo` stage and cannot be taken into account for the HELO authorisation decision; users should revisit and if necessary adjust their setup (eg, disable SPF Milter on the submission port). * Add support for writing debug log output to syslog in integration tests (environment variable `SPF_MILTER_TEST_LOG`). * Update dependency `signal-hook` to version 0.3. * Update dependencies in `Cargo.lock` file. ## 0.1.0 (2020-11-28) Initial release.