2024-07-30: Mailmunge 3.17 is available at the download page. Changelog:
- Mailmunge 3.17 RELEASED
- BUG FIX: mailmunge-multiplexor: Remove newlines from messages that are syslogged when activating a worker.
- BUG FIX: mailmunge-multiplexor.c: Zero-terminate a string that previously might not have been.
- IMPROVEMENT: Add Docker tests for Rocky 9 and rename the old Rocky 8 tests from "rocky" to "rocky8".
- IMPROVEMENT: Fix a bunch of "cppcheck" warnings in the C code and "perlcritic / use strict / use warnings" complaints in the Perl.
- IMPROVEMENT: mailmunge: Exit with an error if multiple options are given for options where it only makes sense to have at most one.
- DOCUMENTATION IMPROVEMENT: Add examples of using
$ctx->log()
to the sample filter. - BUG FIX: When returning a
Mailmunge::Response
object from a message-context callback, preserve thecode
anddsn
parameters, if any are supplied.
2024-02-06: Mailmunge 3.16 is available at the download page. Changelog:
- Mailmunge 3.16 RELEASED
- MINOR NEW FEATURE: mailmunge: Add the "-Q n" option to set the libmilter debugging level (with smfi_setdbg).
- MINOR CHANGE: Rename a few MD_* variables to MM_* in the C code
- MINOR IMPROVEMENT: Escape non-ASCII characters when logging header changes.
2024-02-04: Mailmunge 3.15 is available at the download page. Changelog:
- Mailmunge 3.15 RELEASED
- BUG FIX: Do not allow
action_add_header
oraction_change_header
to create headers with embedded carriage-returns. This was causing problems with DKIM signatures for very picky MTAs. - BUG FIX: Remove a leftover debugging line from
Mailmunge::Action::DKIMSigner
- POD FIXES: Minor documentation fixes and updates.
2024-01-25: Mailmunge 3.14 is available at the download page. Changelog:
- Mailmunge 3.14 RELEASED
- MAJOR FIX:
Mailmunge::Action::DKIMSigner
can correctly sign a message whose headers have been modified, as long as you follow the constraints mentioned in that module's POD. - DOCUMENTATION: Minor POD fixes.
mm-mx-ctrl
: Add themta
command to query what Mailmunge thinks the MTA is.mm-mx-ctrl
: Add thefilterversion
command and the analogousfilter_version
filter method.mm-mx-ctrl
: Fix handling of the-b
flagwatch-multiple-mailmunges.tcl
: Show the MTA and Mailmunge version on each remote machine.
2024-01-25: Mailmunge 3.13 is available at the download page. Changelog:
- Mailmunge 3.13 RELEASED
- Minor POD fix
- Add the
Mailmunge::Context->ambiguous_content
method. This requiresMIME::tools
version 5.513 or later. If it returns true, it indicates an ambiguity in the parsed MIME message that could indicate a security risk. See theMIME::Parser
documentation for details—search for "ambiguous_content" on the CPAN documentation page.
2023-07-02: Mailmunge 3.12 is available at the download page. Changelog:
- Mailmunge 3.12 RELEASED
- Mailmunge::Context: Add canonical_first_recipient() function.
- mailmunge-multiplexor: Drain stderr when a worker goes from busy to idle, before clearing out qid.
- mailmunge-multiplexor: Eliminate compiler warnings issued by GCC 12.2.0
- Docker: Add support for running regression tests in Debian 12 (Bookworm) Docker containers
- Mailmunge::Filter: Make canonical_email(undef) return undef.
2023-02-17: Mailmunge 3.11 is available at the download page. Changelog:
- Mailmunge 3.11 RELEASED
- Mailmunge::Filter: the push_tag and pop_tag methods alter the process title to something useful that we can see with "ps". (This is in addition to reporting the tags back to mailmunge-multiplexor.)
- mm-mx-ctrl: Eliminate compiler warning.
- configure.ac: Enable link-time optimization if possible.
- Mailmunge::Test::SMTPForward: Add log_smtp callback.
- Many places: Add SPDX-License-Identifier tags to source files.
- Documentation: Many improvements, typo-fixes and clarifications.
- Documentation: Add "THINGS YOU SHOULD NEVER DO IN YOUR FILTER CODE" section to Mailmunge::Filter and Mailmunge::Filter::Compat.
- mm-mx-ctrl: Make "mm-mx-ctrl reload" a synonym for "mm-mx-ctrl reread"
- mailmunge-multiplexor: Clear out qid when a worker exits the busy state. Not doing so could cause confusing logs with old queue-IDs.
- mailmunge-multiplexor: Log reload/reread requests.
- Perl code: Eliminate Perl::Critic complaints (on "gentle" setting.)
- Debian packaging: Set DH_COMPAT to 10 instead of 9.
- Regression tests: Add Docker tests for Sendmail and Postfix on Ubuntu 22.04.
2022-10-21: Mailmunge 3.10 is available at the download page. Changelog:
- Mailmunge 3.10 RELEASED
- Minor documentation improvements
- rm_r.c: Remove dead code
- mailmunge: Print embedded Perl version if invoked with prcap
- mailmunge.spec: Point source URL to mailmunge.org instead of github.com
- mailmunge, mailmunge-multiplexor, mm-mx-ctrl: Wrap the read() system call so we automatically restart in the face of EINTR. Older versions of mailmunge may not have properly drained stderr when a worker process exits.
2022-07-04: Mailmunge 3.09 is available at the download page. Changelog:
- Mailmunge 3.09 RELEASED
- New feature: Add Mailmunge::Action::DKIMSigner for DKIM-signing messages.
- mailmunge: In addition to the HEADERS file that contains unwrapped headers, create a PRISTINE_HEADERS file with the original unmodified headers. This is required for reliable DKIM signing if we modify the message body.
- Minor documentation fixes
2022-06-15: Mailmunge 3.08 is available at the download page. Changelog:
- Mailmunge 3.08 RELEASED
- spec/mailmunge.spec.in: Add a spec file that lets you build
Mailmunge RPMs.
rpm -tb mailmunge-$VERSION.tar.gz
should work - .github/workflows/gitub-action.yml: Run unit and regression tests when pushing to GitHub
- c/Makefile.in: Remove obsolete "chown" command in install target
- c/config.h.in: Add test for setproctitle_init to make Mailmunge compile properly on FreeBSD
- mailmunge-multiplexor: Log MTA type in the "multiplexor alive" log line rather than a separate log line
- mailmunge: Add option to debug Milter memory allocation/deallocation
- Many places: Fix typos in comments
- Mailmunge::Filter: Move many action_* methods into
Mailmunge::Context instead. However, the Mailmunge::Filter versions
will be maintained indefinitely for backward-compatibility; they
just call into the context object. Functions affected are:
action_from_response
,action_bounce
,action_discard
,action_tempfail
,action_change_header
,action_delete_header
,action_delete_all_headers
,change_sender
,add_recipient
,delete_recipient
,action_add_header
,action_insert_header
,action_sm_quarantine
, andaction_quarantine_entire_message
For anyMETHOD
in the above list, you can replace:
$self->METHOD($ctx, @args);
with:
$ctx->METHOD(@args);
- Mailmunge::Filter: The
filter_message
andfilter_wrapup
functions can return aMailmunge::Response
object, which (if it's TEMPFAIL, REJECT or DISCARD) will be respected - Mailmunge::Filter::Compat: The
filter_begin
,filter
, andfilter_multipart
functions can return aMailmunge::Response
object, which (if it's TEMPFAIL, REJECT or DISCARD) will be respected - Mailmunge::Response: The
is_discard
accessor has been added - Mailmunge::Context: Added
canonical_sender
andcanonical_recipients
methods - Documentation: Remove obsolete references to "server mode"
- Documentation: Document pitfalls of the "-y" mailmunge option and turn it off by default in the systemd unit and sysvinit startup script
2022-02-13: Mailmunge 3.07 is available at the download page. Changelog:
- Mailmunge 3.07 RELEASED
- Mailmunge::Filter: Add input_fh convenience method
- Mailmunge::Test::Rspamd: Log exact reason ($@) if calling rspamd fails.
- Regression tests: Add support for Debian bullseye docker images
- Test::Mailmunge::Utils: Fix POD for parse_and_copy_msg
- configure: Add dependency on FindBin as per bug report from Robert Scheck.
- configure: Add --disable-perl-build-artifacts option to avoid generation of perllocal.pod and .packlist files. Problem pointed out by Robert Scheck.
- Unit test: Skip tests that require working DNS if they are run on a machine without DNS. Problem pointed out by Robert Scheck.
2022-01-03: Mailmunge 3.06 is available at the download page. Changelog:
- Mailmunge 3.06 RELEASED
- documentation: Clarify that the -p argument to mailmunge(8) wants
a socket specification following the libmilter spec and not the
Mailmunge spec.
In particular, if you want to bind the -p TCP socket to localhost only, you must use the form: -p inet:port@127.0.0.1. The form -p inet:port listens on all interfaces! - documentation: Fix typos
- Mailmunge::Filter: Stricter checking of command-line arguments
- Mailmunge::Filter: Consistent capitalization of error messages
- Mailmunge::Filter: Add decode_mime_string utility function. This tries very hard to sensibly decode a MIME-header-encoded string to a native Perl string.
2021-09-30: Mailmunge 3.05 is available at the download page. Changelog:
- Mailmunge 3.05 RELEASED
- documentation: Fix many typos and add some clarifications.
- tests: Change syslog identifier so that tests use a different syslog identifier than production Mailmunge filters.
- compilation: Use -Wno-unused-result flag if the compiler supports it.
- Mailmunge::Action::Boilerplate: Log error messages if adding boilerplate fails.
- mailmunge: Rather than determining the host's IP address by resolving its hostname, create a connected UDP socket to 8.8.8.8 and use getsockname() to get the local IP address chosen by the kernel.
- mailmunge-multiplexor: Fix potential code path that could call non-signal-safe snprintf function from a signal handler.
- tests: Remove unused file
- mailmunge: Remove support for systems that lack inet_ntop. inet_ntop was standardized over 15 years ago, so any systems that lack it are not worth supporting.
- mailmunge-multiplexor.c: Log the "MTA appears to be: XXX" message from the C code instead of the Perl code. This causes it to be logged only once per multiplexor startup instead of once per scanning worker startup.
2021-08-17: Mailmunge 3.04 is available at the download page. Changelog:
- Mailmunge 3.04 RELEASED
- Mailmunge::Filter: Read the
COMMANDS
file prior tofilter_sender
andfilter_recipient
callbacks. This populatessendmail_macros
. - mailmunge-multiplexor: Fix error in embedded Perl code.
PERL_SYS_TERM
was being called each time an embedded interpreter was destroyed; this is incorrect. While this code happened to work on older Perls, it will fail on newer Perls such as that shipped with Debian Bullseye. - mailmunge: Provide more helpful error messages if filter file is not readable or has a syntax error or fails for some reason.
- mailmunge-multiplexor: Set default for "-w" option to 1 second instead of 3.
- configure: add --with-perlinstalldirs={site,perl,vendor} flag
- gen_id.c: Generate 8-character IDs instead of 7-character ones. This allows for up to 216,000 IDs per second.
- Mailmunge::Filter: diagnose incorrect return values from various filter callbacks and log helpful error messages.
- Makefile: Don't install the *.in files when running "make install"
- Many typo fixes and documentation improvements.
2021-08-01: Mailmunge 3.03 is available at the download page. Changelog:
- Add
Mailmunge::Filter::action_from_response
helper function. If appropriate, it calls anaction_*
function based on aMailmunge::Response
object. See docs for details. - Add support for running regression tests against Rocky Linux 8 as well as Debian 10. Both Sendmail and Postfix are tested.
- Add support for Rspamd. We do not use the rspamc client; instead, we talk directly to the daemon using its native HTTP protocol.
- Update included copy of GPLv2 to the latest version
- Put GPLv2 license markers in all files
- Use
-fPIE
rather than-fPIC
when building executables - Get rid of
--enable-cleanup-with-rm
- Clean out a LOT of cruft from
configure.ac
- Include a sample
/etc/default/mailmunge
file - Better diagnosis of syntax errors in filter file; terminate multiplexor if it looks like the filter is completely broken.
- Many minor fixes and documentation fixes.
2021-07-08: Mailmunge 3.02 is available at the download page. Changelog:
- Mailmunge 3.02 RELEASED
- Adds
Mailmunge::Test::Greylist
- an implementation of greylisting
2021-06-14: The Introduction to Mailmunge video is released.
2021-06-01: Mailmunge 3.01 is available at the download page. Changelog:
- Mailmunge 3.01 RELEASED
- Many fixes to documentation
- Added continuous integration using Github Actions
- BUGFIX: Mailmunge::Test::GetMX: Fix incorrect test for class E networks
- Use getaddrinfo to resolve IP->hostnames so it works with both IPv4 and IPv6
- Add Mailmunge::Filter->ip_to_hostname() function
- Check both 127.0.0.1 and ::1 when checking for loopback address
- Proper generation of man pages from POD (include man page name; put pages in proper section.)
2021-05-31: The first release of Mailmunge (3.00) is available at the download page.
2021-05-28: Initial announcement and release of Mailmunge. Please see the FAQ for information about the release and then head over to documentation for in-depth documentation.
Copyright © 2024 Skoll Software Consulting