[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

mailutils-3.10 released [stable]

From: Sergey Poznyakoff
Subject: mailutils-3.10 released [stable]
Date: Fri, 14 Aug 2020 22:50:55 +0300


This is to inform you that the version 3.10 of GNU mailutils is
available for download.

GNU mailutils is a protocol-independent framework for email processing.
It provides a set of libraries for doing almost any mail-related task on
mailboxes in various formats, using a consistent format-independent API.

Several tools are built atop of these libraries and included in the package.
Among them are pop3 and imap4 servers, the traditional mailx mail reader,
the sieve mail filtering utility, the movemail tool, and a complete set
of MH utilities compatible with GNU Emacs MH-E mode.

This release introduces a new utility "decodemail", designed for converting
large amounts of mail (such as mailing list archives) to plain text
representation.  See the end of this message for details.

I would like to express my special thanks to Karl Berry for the idea
of decodemail and for his valuable help in testing the package.

Here are the compressed sources:
  https://ftp.gnu.org/gnu/mailutils/mailutils-3.10.tar.gz   (6.7MB)
  https://ftp.gnu.org/gnu/mailutils/mailutils-3.10.tar.bz2   (4.6MB)
  https://ftp.gnu.org/gnu/mailutils/mailutils-3.10.tar.xz   (3.0MB)

Here are the GPG detached signatures[*]:

Use a mirror for higher download bandwidth:

Here are the MD5 and SHA1 checksums:

5e3aee1400dd6953e3890e4e9eddaf03  mailutils-3.10.tar.gz
386e06cc82e4bca4716a1b03c0d4b9a1  mailutils-3.10.tar.bz2
6564afb9a5d507d563d0832c6ea9fb3f  mailutils-3.10.tar.xz
c226fdaae7264917d28eeed3e7f2e4840263f2ea  mailutils-3.10.tar.gz
7598809e239ba96512ff1f91cc467f2b9ba9ca61  mailutils-3.10.tar.bz2
27ea7659b474e6ff6425ff4e88352fb35a781944  mailutils-3.10.tar.xz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify mailutils-3.10.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver keys.gnupg.net --recv-keys 3602B07F55D0C732

and rerun the 'gpg --verify' command.

Noteworthy changes in this release:

* New utility: decodemail

This is a filter program that reads messages from the input mailbox,
decodes textual parts of each multipart message to plain text, and
stores the processed messages in the output mailbox.  Non-multipart
messages as well as message parts that cannot be decoded are
transferred to the output mailbox verbatim.  Optionally, textual parts
can be recoded from their original character set.

* mail

** Changed syntax for addressing MIME message part

The familiar dot notation is used.  E.g. 1.2 extracts part 2
from multipart message 1.

** write command

The write (Write) command operates on message parts as well as on
messages.  Decoding is automatic.

* readmsg

** MIME messages are decoded on output

** Improve searches

Requested patterns are searched in textual MIME parts as well.
Regular expression search is also supported.
New options --glob, --regex, and --ignorecase control the type of
search used.

* imap4d: implement TLS in inetd mode

* imap client code

** Fix handling of [TRYCREATE] and similar imap responses

* sieve: quoted strings may span several lines

This fixes the sieve parser to comply to RFC 5228.  Quoted strings may
span several lines and are allowed to contain special characters.
Backslash and double-quotes appearing within a quoted string must be
escaped by a backslash.  A backslash in front of any other character
is silently removed.

* Dropped support for Python 2.x

* Rewrite the AM_GNU_MAILUTILS macro to avoid using mailutils-config

* mda: restore the message-id-header configuration statement

* Changes to the libmailutils library

** New functions for MIME parsing and mime object creation:

int mu_mime_create_multipart (mu_mime_t *pmime, char const *subtype,
                              mu_assoc_t param)
int mu_mime_sget_content_type (mu_mime_t mime, const char **value)
int mu_mime_aget_content_type (mu_mime_t mime, const **value)
int mu_mime_sget_content_subtype (mu_mime_t mime, const char **value)
int mu_mime_aget_content_subtype (mu_mime_t mime, const **value)
int mu_mime_content_type_get_param (mu_mime_t mime, char const *name,
                                   const char **value);
int mu_mime_content_type_set_param (mu_mime_t mime, char const *name,
                                    const char *value);

** New function for parsing the Content-Type header

int mu_content_type_parse_ext (const char *input, const char *charset,
                               int flags, mu_content_type_t *retct);

The "flags" parameter controls the parser error tolerance and the
amount of data to be returned.

** mu_mime_create_multipart: Signature changed

The function takes third argument: an assoc table of additional
content-type parameters:

int mu_mime_create_multipart (mu_mime_t *pmime, char const *subtype,
                              mu_assoc_t param);

** New function mu_stream_shift

int mu_stream_shift (mu_stream_t str, mu_off_t dst, mu_off_t src,
                     size_t bufsize);

Moves the data in stream "str" from offset "src" to "dst".  The "bufsize"
parameter specifies the size of transfer buffer.  If 0, the size is determined

** New simplified interface to command line option parser

void mu_cli_simple (int argc, char **argv, ...);

Variadic arguments consist of key and optional value pairs, specifying
various additional parameters (e.g. array of allowed option definitions,
program docstring, etc).                                    

** Reconstructing message envelope

int mu_message_reconstruct_envelope (mu_message_t msg, mu_envelope_t *penv);

Creates an envelope reconstructed from the headers of the message "msg".

** logstream: optional prefix

The prefix, if set, is output at the beginning of each line, after
the location and before the severity. It can be used to provide
additional information about the diagnostics, such as, e.g. the number
or UID of the message.

The prefix is controlled by the MU_LOGMODE_PREFIX ioctl subfunction.

** stream API: remove the readdelim method

The method is superfluous as the API itself provides the necessary
functionality.  Besides, it interacted poorly with positioning in
buffered streams.

** New string conversion function

 int mu_strtosize (char const *str, char **endp, size_t *ret_val);

** Temporary streams

This new stream type combines the functionality of memory and temporary
file streams.  A temporary stream works as memory stream for as long as
its size remains below a preconfigured threshold value.  Once the threshold
is reached, the stream storage is automatically converted to temporary file,
and all data written so far are transferred to the new storage.  If the
temporary file cannot be created, the stream continues to operate in
memory-based mode.

The stream is created using the following call:
    int mu_temp_stream_create (mu_stream_t *pstream, size_t threshold);

** The caller is allowed to free messages obtained from the mailbox

* Bugfixes

 - Fix intermixed I/O in buffered streams
 - Fix handling of INTR in the "mail" utility shell
 - Fix compilation without libunistring
 - Fix operation of associative arrays in case-insensitive mode
 - Fix memory leaks
 - Fix compilation with gcc 10
 - smtp mailer: fix multiple open/close on the same mailer
 - Fix the list sort function


reply via email to

[Prev in Thread] Current Thread [Next in Thread]