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, and action_quarantine_entire_message
     
    For any METHOD in the above list, you can replace:
     
    $self->METHOD($ctx, @args);
     
    with:
     
    $ctx->METHOD(@args);
     
  • Mailmunge::Filter: The filter_message and filter_wrapup functions can return a Mailmunge::Response object, which (if it's TEMPFAIL, REJECT or DISCARD) will be respected
  • Mailmunge::Filter::Compat: The filter_begin, filter, and filter_multipart functions can return a Mailmunge::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 and canonical_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 to filter_sender and filter_recipient callbacks. This populates sendmail_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 an action_* function based on a Mailmunge::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 © 2022 Skoll Software Consulting