[Top][All Lists]

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

GNU Mailutils 1.2 released (GPLv3)

From: Sergey Poznyakoff
Subject: GNU Mailutils 1.2 released (GPLv3)
Date: Fri, 29 Jun 2007 20:15:29 +0300


The GNU Mailutils team is pleased to announce the release of
GNU Mailutils 1.2.  This release is a part of the releasing of
version 3 of the GNU General Public License.  It is available for download
via anonymous FTP from

and from mirrors worldwide -- see <>.

The available files and their MD5 checksums are:

0a5bf84e908f15343414c6a95118a373  mailutils-1.2.tar.bz2
4ae27d9a0fe79633e33a1c41e4897a41  mailutils-1.2.tar.gz

More information about the package is available from the following

Please email bugs or suggestions to <address@hidden>.

The list of noteworthy changes follows:

* GPLv3

The programs in this release are licensed under GNU General Public License
version 3.  The libraries are covered by GNU Lesser General Public License
version 3.

* `libmailbox' library

** mu_stream_wait and mu_fd_wait allow to wait for exceptional conditions.

** maildir and mh repositories are created if MU_STREAM_CREAT flag is supplied.

** Fix coredump in argcv, which was triggered by input line consisting of
a single double-quote character.

** Fix inconsistency in decoding MIME messages: the CRLF preceding the
encapsulation line is conceptually attached to the boundary, as
requested by RFC 1521.

** Three kinds of accessors.

Each MU object has now three kind of accessors.  The `sget' accessor
returns a pointer to the immutable memory allocated inside the object
and holding its string representation.  The `aget' accessor allocates
new memory chunk, copies there the string representation of the object
and returns the pointer to the allocated memory.  Finally, the `get'
accessor copies the string representation to the character buffer
supplied by the caller.  For example:

  const char *s;
  mu_header_sget_value (hdr, "From", &s);

  char *s
  mu_header_aget_value (hdr, "From", &s);
  free (s);

  char buf[SIZE];
  size_t size;
  mu_header_get_value (hdr, "From", buf, sizeof buf, &size);

** RFC2822 Headers.

The RFC 2822 headers support has been rewritten from scratch.  The
accessor functions are able to return a given header instance in case
of multiple headers, something which was impossible in the earlier
Mailutils releases.  These new functions are given identifiers, ending
with `_n', for example:

   int mu_header_sget_value_n (mu_header_t header,
                               const char *name, int n, const char **retval);

The `n' argument gives the ordinal number (1-based) of the header to return.
For example, to get the topmost 'Recieved' header:

   mu_header_sget_value_n (header, "Received", 1, &str);

To count headers from the bottom up, pass negative value of `n',
e.g. to get the last 'Recieved' header:

   mu_header_sget_value_n (header, "Received", -1, &str);

For backward compatibility, traditional header accessors are still
provided, being implemented as macros that expand to the
corresponding `_n' style accessors.   
Important note: `mu_header_aget_value' does not allocate any memory
if the requested header was not found. This differs from its behavior
in previous releases, where it used to return a pointer to an empty
string ("") in that case. 

New functions are provided for adding and replacing headers:

- int mu_header_prepend (mu_header_t header, const char *name, const char *val)

Prepends header `name: val' to the existing headers;

- int mu_header_append (mu_header_t header, const char *name, const char *val)

Appends header `name: val' to the existing headers

- int mu_header_insert (mu_header_t header, const char *name, const char *val, 
                        const char *ref, int num, int flags)

Inserts header `name: val'. The insertion position is determined by
the last three arguments: 

  -- If flags is MU_HEADER_REPLACE and the header with the same name
     exists, it is replaced by the new header. Otherwise:
  -- If ref == NULL, the header is added before the existing ones;
  -- If ref is not NULL, the new header is inserted after `num'th
     occurrence of the header named `ref'.  If flags is
     MU_HEADER_BEFORE, it is inserted before that occurrence.
** New functions `mu_address_set_local_part', `mu_address_set_domain',
`mu_address_set_route', `mu_address_set_email'

* The `mail.local' utility

The program can be run by a non-privileged user.  Thus, it can be used with
`fetchmail' and similar utilities.

Any changes to message headers done by Sieve filters are reflected in
the delivered message.

* The `mail' utility:

Fix bugs in `pipe' command: the cmd variable setting
and single-argument invocation were handled incorrectly

Fix coredump in `send' command.

** Empty messages 

The handling of empty messages by the `mail' utility is controlled by the
bollean variable `nullbody'.  If it is set (the default), the message
is sent and the warning ``Null message body; hope that's ok'' is
issued. This is compatible with other mail implementations. The exact
message displayed in this case is set by `nullbodymsg' variable.

If `nullbody' is unset, the message is silently ignored. This is
useful, in particular, in crontab files.

* The `readmsg' utility.

Improve compatibility with elm's implementation.  In particular -w
'From_' will now output `From ' markers.  If the underlying mailbox
format does not contain those, `readmsg' will try to construct them
from the available data.

* The `pop3d' utility.

New options `--bulletin-db' and `--bulletin-source' implement bulletin

* MH changes

** sortm uses stable sort algorithm.
** send supports `--split'. The new option `--chunksize' allows to
set size of chunks to split the message into. The default size is
48032 (632 lines, each of 76 bytes).

* Support for old DBM has been withdrawn.


reply via email to

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