================================================ Mailman - The GNU Mailing List Management System ================================================ Copyright (C) 1998-2015 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.0.0 -- "Show Don't Tell" ========================== (2015-04-28) Architecture ------------ * Domains now have a list of owners, which are ``IUser`` objects, instead of the single ``contact_address`` they used to have. ``IUser`` objects now also have a ``is_server_owner`` flag (defaulting to False) to indicate whether they have superuser privileges. Give by Abhliash Raj, with fixes and refinements by Barry Warsaw. (LP: #1423756) * Mailing list subscription policy work flow has been completely rewritten. It now properly supports email verification and subscription confirmation by the user, and approval by the moderator using unique tokens. ``IMailingList`` objects now have a ``subscription_policy`` attribute. (LP: #1095552) * Port the REST machinery to Falcon 0.3. (LP: #1446881) Bugs ---- * Fix calculation of default configuration file to use when the ``$var_dir`` is created by ``mailman start``. (LP: #1411435) * When creating a user with an email address, do not create the user record if the email address already exists. Given by Andrew Stuart. (LP: #1418280) * When deleting a user via REST, make sure all linked addresses are deleted. Found by Andrew Stuart. (LP: #1419519) * When trying to subscribe an address to a mailing list through the REST API where a case-differing version of the address is already subscribed, return a 409 error instead of a 500 error. Found by Ankush Sharma. (LP: #1425359) * ``mailman lists --domain`` was not properly handling its arguments. Given by Manish Gill. (LP: #1166911) * When deleting a user object, make sure their preferences are also deleted. Given by Abhishek. (LP: #1418276) * Be sure a mailing list's acceptable aliases are deleted when the mailing list itself is deleted. (LP: #1432239) * The built-in example ``IArchiver`` implementations now explicitly return None. (LP: #1203359) * The test suite now runs successfully again with PostgreSQL. Given by Aurélien Bompard. (LP: #1435941) Configuration ------------- * When specifying a file system path in the [paths.*] section, $cfg_file can be used to expand into the path of the ``-C`` option if given. In the default ``[paths.dev]`` section, ``$var_dir`` is now specified relative to ``$cfg_file`` so that it won't accidentally be relative to the current working directory, if ``-C`` is given. * ``$cwd`` is now an additional substitution variable for the ``mailman.cfg`` file's ``[paths.*]`` sections. A new ``[paths.here]`` section is added, which puts the ``var_dir`` in ``$cwd``. It is made the default layout. Documentation ------------- * Improve the documentation describing how to run Alembic to add new schema migrations. Given by Abhilash Raj. REST ---- * **Backward incompatible change**: The JSON representation for pending mailing list subscription hold now no longer includes the ``password`` key. Also, the ``address`` key has been renamed ``email`` for consistent terminology and other usage. * You can now view the contents of, inject messages into, and delete messages from the various queue directories via the ``/queues`` resource. * You can now DELETE an address. If the address is linked to a user, the user is not delete, it is just unlinked. * A new API is provided to support non-production testing infrastructures, allowing a client to cull all orphaned UIDs via ``DELETE`` on ``/reserved/uids/orphans``. Note that *no guarantees* of API stability will ever be made for resources under ``reserved``. (LP: #1420083) * Domains can now optionally be created with owners; domain owners can be added after the fact; domain owners can be deleted. Also, users now have an ``is_server_owner`` flag as part of their representation, which defaults to False, and can be PUT and PATCH'd. Given by Abhilash Raj, with fixes and refinements by Barry Warsaw. (LP: #1423756) 3.0 beta 5 -- "Carve Away The Stone" ==================================== (2014-12-29) Bugs ---- * Fixed Unicode errors in the digest runner and when sending messages to the site owner as a fallback. Given by Aurélien Bompard. (LP: #1130957). * Fixed Unicode errors when a message being added to the digest has non-ascii characters in its payload, but no Content-Type header defining a charset. Given by Aurélien Bompard. (LP: #1170347) * Fixed messages without a `text/plain` part crashing the `Approved` rule. Given by Aurélien Bompard. (LP: #1158721) * Fixed getting non-ASCII filenames from RFC 2231 i18n'd messages. Given by Aurélien Bompard. (LP: #1060951) * Fixed `AttributeError` on MIME digest messages. Given by Aurélien Bompard. (LP: #1130696) Commands -------- * The `mailman conf` command no longer takes the `-t/--sort` option; the output is always sorted. Configuration ------------- * The ``[database]migrations_path`` setting is removed. Database -------- * The ORM layer, previously implemented with Storm, has been replaced by SQLAlchemy, thanks to the fantastic work by Abhilash Raj and Aurélien Bompard. Alembic is now used for all database schema migrations. * The new logger `mailman.database` logs any errors at the database layer. Development ----------- * Python 3.4 is now the minimum requirement. * You no longer have to create a virtual environment separately when running the test suite. Just use `tox`. * You no longer have to edit `src/mailman/testing/testing.cfg` to run the test suite against PostgreSQL. See `src/mailman/docs/START.rst` for details. Interfaces ---------- * The RFC 2369 headers added to outgoing messages are now added in sorted order. * Several changes to the internal API: - `IListManager.mailing_lists` is guaranteed to be sorted in List-ID order. - `IDomains.mailing_lists` is guaranteed to be sorted in List-ID order. - Iteration over domains via the `IDomainManager` is guaranteed to be sorted by `IDomain.mail_host` order. - `ITemporaryDatabase` interface and all implementations are removed. REST ---- * The Falcon Framework has replaced restish as the REST layer. This is an internal change only. * The JSON representation `http_etag` key uses an algorithm that is insensitive to Python's dictionary sort order. * The address resource now has an additional '/user' sub-resource which can be used to GET the address's linked user if there is one. This sub-resource also supports POST to link an unlinked address (with an optional 'auto_create' flag), and PUT to link the address to a different user. It also supports DELETE to unlink the address. (LP: #1312884) Given by Aurélien Bompard based on work by Nicolas Karageuzian. * The ``/3.0/system`` path is deprecated; use ``/3.0/system/versions`` to get the system version information. * You can access the system configuration via the resource path ``/3.0/system/configuration/
``. This returns a dictionary with the keys being the section's variables and the values being their value from ``mailman.cfg`` as verbatim strings. You can get a list of all section names via ``/3.0/system/configuration`` which returns a dictionary containing the ``http_etag`` and the section names as a sorted list under the ``sections`` key. The system configuration resource is read-only. * Member resource JSON now include the ``member_id`` as a separate key. 3.0 beta 4 -- "Time and Motion" =============================== (2014-04-22) Development ----------- * Mailman 3 no longer uses ``zc.buildout`` and tests are now run by the ``nose2`` test runner. See ``src/mailman/docs/START.rst`` for details on how to build Mailman and run the test suite. Also, use ``-P`` to select a test pattern and ``-E`` to enable stderr debugging in runners. * Use the ``enum34`` package instead of ``flufl.enum``. * Use ``setuptools`` instead of ``distribute``, since the latter is defunct. REST ---- * Add ``reply_to_address`` and ``first_strip_reply_to`` as writable attributes of a mailing list's configuration. (LP: #1157881) * Support pagination of some large collections (lists, users, members). [Florian Fuchs] (LP: #1156529) * Expose ``hide_address`` to the ``.../preferences`` REST API. [Sneha Priscilla.] (LP: #1203519) * Mailing lists can now individually enable or disable any archiver available site-wide. [Joanna Skrzeszewska] (LP: #1158040) * Addresses can be added to existing users, including display names, via the REST API. [Florian Fuchs] * Fixed a crash in the REST server when searching for nonmembers via ``/find`` which we've never seen before, because those members only have an address record, not a user record. This requires a small change in the API where the JSON response's ``address`` key now contains the URL to the address resource, the new ``email`` key contains the email address as a string, and the ``user`` key is optional. Commands -------- * `mailman conf` now has a `-t/--sort` flag which sorts the output by section and then key. [Karl-Aksel Puulmann and David Soto] (LP: 1162492) * Greatly improve the fidelity of the Mailman 2.1 list importer functionality (i.e. ``mailman import21``). [Aurélien Bompard]. Configuration ------------- * Add support for the Exim 4 MTA. [Stephen Turnbull] * When creating the initial file system layout in ``var``, e.g. via ``bin/mailman info``, add an ``var/etc/mailman.cfg`` file if one does not already exist. Also, when initializing the system, look for that file as the configuration file, just after ``./mailman.cfg`` and before ``~/.mailman.cfg``. (LP: #1157861) Database -------- * The `bounceevent` table now uses list-ids to cross-reference the mailing list, to match other tables. Similarly for the `IBounceEvent` interface. * Added a `listarchiver` table to support list-specific archivers. Bugs ---- * Non-queue runners should not create ``var/queue`` subdirectories. [Sandesh Kumar Agrawal] (LP: #1095422) * Creation of lists with upper case names should be coerced to lower case. (LP: #1117176) * Fix REST server crash on `mailman reopen` due to no interception of signals. (LP: #1184376) * Add `subject_prefix` to the `IMailingList` interface, and clarify the docstring for `display_name`. (LP: #1181498) * Fix importation from MM2.1 to MM3 of the archive policy. [Aurélien Bompard] (LP: #1227658) * Fix non-member moderation rule to prefer a member sender if both members and non-members are in the message's sender list. [Aurélien Bompard] (LP: #1291452) * Fix IntegrityError (against PostgreSQL) when deleting a list with content filters. [Aurélien Bompard] (LP: #1117174) * Fix test isolation bug in ``languages.rst``. [Piotr Kasprzyk] (LP: #1308769) 3.0 beta 3 -- "Here Again" ========================== (2012-12-31) Compatibility ------------- * Python 2.7 is now required. Python 2.6 is no longer officially supported. The code base is now also `python2.7 -3` clean, although there are still some warnings in 3rd party dependencies. (LP: #1073506) REST ---- * **API change**: The JSON representation for held messages no longer includes the `data` key. The values in this dictionary are flatted into the top-level JSON representation. The `key` key is remove since it's redundant. Use `message_id` for held messages, and `address` for held subscriptions/unsubscriptions. The following `_mod_*` keys are inserted without the `_mod_` prefix: - `_mod_subject` -> `subject` - `_mod_hold_date` -> `hold_date` - `_mod_reason` -> `reason` - `_mod_sender` -> `sender` - `_mod_message_id` -> `message_id` * List styles are supported through the REST API. Get the list of available styles (by name) via `.../lists/styles`. Create a list in a specific style by using POST data `style_name=