GNU Mailman 3 changes

Copyright (C) 1998-2018 by the Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA

Here is a history of user visible changes to Mailman.

3.3.3

(2021-02-02)

Bugs

  • Handle some UnicodeEncodeErrors in creating digests. (Closes #560)

  • Increased the size of the data column in the workflowstate table. (Closes #793)

  • Implemented a scrubber for plain text digests. (Closes #473)

  • The mailman gatenews command now adds original_size as a message attribute. (Extends fix for #762)

  • Handle FileNotFoundError when creating digest.mmdf file without a parent directory present. (Closes #699)

  • Fixed an issue where content filtering can throw UnicodeEncodeError when converting HTML to plain text. (Closes #798)

  • A bounce for a non-existent list is now handled. (Closes #799)

  • RFC 2047 From: headers in emailed join commands are now decoded. (Closes #802)

  • The mailman addmembers command now catches and reports a SubscriptionPendingError. (Closes #805)

  • RFC 2369 List-Owner header is now added when these headers are included. (Closes #809)

  • Header filters will now properly match RFC 2047 encoded headers. (Closes #815)

  • Mailman’s vette log discard messages now include the reasons. (Closes #816)

  • Increase the default REST API (gunicorn) timeout to 360 seconds from 30 as several API endpoinds can be very slow. (Closes #770)

  • Header filter rules are now properly processed after deletions and/or reordering. (Closes #818)

  • Folded To: list-confirm+token@... headers are now parsed correctly. (Closes: #819)

Command line

  • A new findmember mailman subcommand has been added to find to which lists and with which roles an address matching a given pattern belongs.

  • A new changeaddress mailman subcommand has been added to enable site admins to change a user’s address.

New Features

  • There is a new setting hold_digest in the [mailman] section of mailman.cfg. If this is set to yes, posts with a digest like Subject: header or which quote the digest masthead will be held for moderation.

REST

  • List configuration option send_goodbye_message is now exposed through the REST API. (See !737)

  • Allow updating an Addresses’ display_name attribute. (Closes #786)

  • Allow specifying a reason when rejecting a subscription request. (Closes #767)

  • REST API now exposes unsubscription requests that can be handled by Moderator. (Closes #768)

3.3.2

(2020-11-6)

Bugs

  • When importing 2.1 lists, ignore CR characters added by browsers in headers and footers. (Closes #701)

  • RFC 2369 headers are now added to notification messages. (Closes #710)

  • Bounce probes are now encoded in the correct charset. (Closes #712)

  • We now unfold address containing headers before parsing in avoid_duplicates. (Closes #725)

  • The dmarc rule no longer misses if DNS returns a name containing upper case. (Closes #726)

  • Fixed mailman.email.message.Message.as_string to not return unicode surrogates. (Closes #732)

  • Bounce probes can now be sent to a member subscribed as a User. (Closes #739)

  • A member subscribed as a User can now be unsubscribed. (Closes #734)

  • When a handler rejects or discards a message, it won’t be delivered or archived anyway. (Closes #752)

  • Messages forwarded when content filtering removes the entire message and filter_action is forward now go to owners as well as moderators. (Closes #753)

  • Handle TOCTOU conditions when there are two simultaneous subscription requests for the same email address. (Closes #748)

  • Removed unnecessary call to Lock().disown() from bin/master.py. (Closes #754)

  • Fixed an invalid logging call in bin/master.py. (Closes #756)

  • VERPed list welcome messages now have a correct envelope sender. (Closes #757)

  • Messages in digests now contain a Message: N header. (Closes #764)

  • The LMTP runner will now add a Message-ID: header if missing. (Closes #448 and #490)

  • The mailman gatenews command now adds original_size to the msgdata. (Closes #762)

Command line

  • New addmembers, delmembers and syncmembers mailman subcommands have been added. These provide more options and controls than the corresponding mailman members modes which are now deprecated. (Closes #686)

  • The mailman conf command without a -s/--section argument will now show sections defined only in mailman.cfg in addition to those from schema.cfg. (Closes #736)

  • Added a charset option to the import21 subcommand. (Closes #769)

  • The import21 subcommand will now truncate long SAUnicode values if the database is MySQL. (Closes #772)

  • The import21 subcommand no longer adds the entire legacy *_these_nonmembers list and then removes the non-regexps. It now just adds the regexps. (Closes #773)

REST

  • Add a new endpoint /lists/<listid>/requests/count which returns total number of pending requests. (Closes #713)

  • Subscription requests API now allows filtering requests with token_owner parameter. (Closes #714)

  • Add subscription_mode to Member resource so API clients can differentiate between subscription via address and via primary address of an user. (Closes #707)

  • Add /list/<listid>/held/count to get a count of total held messages. (Closes #713)

  • Add fields as an optional parameter in all the Member’s APIs to customize which fields are included in the resource. (Closes #716)

  • Expose emergency field of MailingList via REST API. (Closes #719)

Localization

  • Italian translations of the templates have been added.

  • The default charset for many languages is changed to utf-8. (Closes #747)

Others

  • Add a new archive_rendering_mode attribute to MailingList to configure what kind of rendering should Archivers use to render Emails. (Closes #720)

  • An address= option has been added to the email join command to allow requesting subscription of other than the sender of the email. (Closes #721)

  • Added the ability to invite members to a list. (Closes #510 and #730)

  • Made (un)subscription confirmation email subjects user friendly and translatable. (Closes #541)

  • Implemented a new email who command to obtain list membership.

  • Add support for dnspython>=2.0. (Closes #743)

  • Added information about pass_types, filter_extensions and pass_extensions to the content filtering doc. (Closes #775)

3.3.1

(2020-04-19)

Bugs

  • Allow action for header matches to be None in REST interface. (Closes #671)

  • It is now possible to add the list posting address with nonmember role, e.g. to give it a moderaction of discard. (Closes #633)

  • The issue of posting a message without a To: header to a fully personalized list throwing a KeyError has been fixed. (Closes #639)

  • Confirmation or moderator approval of a subscription from an address banned subsequent to subscribing will no longer succeed. (Closes #642)

  • Fixed an issue caused by the fix for #642 where email confirmation of a banned subscription address would cause a shunted message. (Closes #643)

  • Fixed a bug where the postfix_vmap file would merge two columns for long domain names. (Closes #651)

  • Fix failing test cases due to changed API in a new version of dkimpy. (Closes #655)

  • Mailman now auto-geneartes alias maps when it starts for the first time. (Closes #469)

  • Sending a bounce probe now resets bounce_score. (Closes #660)

  • Bounce probes which bounce are now properly recognized. (Closes #661)

  • Residual bounces are logged but are not processed further. (Closes #662)

  • Disabling delivery by bounce properly initializes some bounce info so warnings can be sent and the member eventually removed. (Closes #663)

  • Bouncing member is not removed until bounce_you_are_disabled_warnings_interval after the last warning was sent. (Closes #664)

  • Fixed recipient address in delivery disabled by bounce notice to the user. (Closes #665)

  • Residial bounces are now marked as processed. (Closes #669)

  • Find members API now searches for the Member’s display name too. (Closes #667)

  • Content filtering convert_html_to_plaintext no longer creates messages that can’t be flattened as_bytes. (Closes #677)

  • Removed an incorrect failing assertion when confirming a confirm_then_moderate unsubscription. (Closes #553)

  • Fix a bug due to incompatible API of a new version of importlib_resources library which causes Templates loading to fail. (Closes #691)

  • Fix a bug due to incompatible API of a new version of zope.intefaces. (See !606)

  • Import21 no longer tries to import banned addresses. (Closes #688)

Command line

  • A new mailman members --sync command has been added to help you synchronize subscribed mailing list members against a text list of subscription addresses. (see !545)

REST

  • Expose max_days_to_hold, accept_these_nonmembers, reject_these_nonmembers, discard_these_nonmembers, hold_these_nonmembers, personalize, and unsubscription_policy attributes of a MailingList through API. (See !570)

  • Add a new send_welcome_message flag when subscribing users to override MailingList’s default setting. (Closes #362)

  • Expose content filtering settings for MailingList. (Closes #694)

  • Add advertised attribute to MailingList object so Postorius doesn’t have to make multiple calls for Index Page. (See !608)

  • Expose filter_action attribute of MailingList through API. (See !609)

  • Unsubscribing a user by calling DELETE on a Member resources now honors Lists’s unsubscription_policy and also sends out notifications to user and admins if list is configured to do so. (Closes #759)

Features

  • Add support for processing of email bounce events. Thanks to Aaryan Bhagat for working on this as a part of his GSoC project and Thanks to Google for sponsoring the project as a part of GSoC.(See !584)

3.3.0 – “Tom Sawyer”

(2019-09-04)

Bugs

  • A list member with receive_list_copy set to False who is addressed in CC will now be removed from CC even if this results in no CC. (Closes #575)

  • X-Mailman-Approved-At header now has correct timezone. (Closes #584)

  • A spurious invalid FilterAction: discard. Treating as discard log message is eliminated. (Closes #592)

  • A post from a nonmember matching the legacy accept_these_nonmembers is now subject to subsequent rules rather than accepted immediately. (Closes #587)

  • Email attempts to subscribe a user who is banned or has a subscription already pending are now handled properly. (Closes #577 and #583)

  • It is no longer possible to add the list’s posting address with any role to a list. (Closes #599)

  • Fixed the nntp runner which was calling the nntplib.NNTP.post() method with a string object instead of bytes. (Closes #613)

  • A post with a Reply-To: the list address will no longer be shunted. (Closes #614)

  • Encoded (base64 or quoted-printable) HTML message bodies are now decoded for html_to_plaintext. (Closes #616)

  • Non-VERPed temporary failure DSNs are no longer reported as unrecognized bounces. (Closes #622)

  • Fix mailman