Hello, I am pleased to announce the release of GNU Mailutils version 2.0.
GNU Mailutils is a set of libraries and programs for electronic mail handling. It contains a rich set of mail-related utilities and servers, including `pop3d', `imap4d', `sieve' and a universal mail delivery agent, `maidag'. All utilities are able to operate on mailboxes of arbitrary formats, ranging from standard UNIX maildrops, through maildir and up to remote mailboxes, which are transparently accessed using IMAP4, POP3 and SMTP. This release contains a lot of improvements over the previous version. See below for the list of user-visible changes. Here are the compressed sources: ftp://ftp.gnu.org/gnu/mailutils/mailutils-2.0.tar.gz (4.4MB) ftp://ftp.gnu.org/gnu/mailutils/mailutils-2.0.tar.bz2 (3.1MB) Here are the GPG detached signatures[*]: ftp://ftp.gnu.org/gnu/mailutils/mailutils-2.0.tar.gz.sig ftp://ftp.gnu.org/gnu/mailutils/mailutils-2.0.tar.bz2.sig Here are the MD5 and SHA1 checksums: d57a4fb60b5a68c83987ff613a09dbc7 mailutils-2.0.tar.gz 299ae73c1c0143de94d7486bf7f479a4 mailutils-2.0.tar.bz2 9736c0c08bbf92c52fa1a1c4084b440eed65f289 mailutils-2.0.tar.gz ffe23b80fcb3533b4d737572b65da740031adcf5 mailutils-2.0.tar.bz2 [*] You can use either of the above signature files 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-2.0.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 55D0C732 and rerun the `gpg --verify' command. This release was bootstrapped with the following tools: Autoconf 2.61 Automake 1.10.1 Libtool 2.2.5a Gnulib-tool 0.0.1317-d51f4-modified The list of user-visible changes follows: * New configuration file format. See documentation, chapter 2.2, `Mailutils Configuration File', for a detailed description. * Programs ** Debugging and online help Each Mailutils utility understands two additional command line options: --debug-level=LEVEL Set Mailutils debugging level. --debug-line-info Show source info with debugging messages. (see also `** Global debugging and verbosity settings.', below) The programs using configuration file facility also understand the --config-help command line option. This option prints on the standard output the detailed description of configuration file statements that affect the given program. ** URL parameters. Additional mailbox URL parameters `type', `user' and `param' can appear in any local URLs. ** MAIL and FOLDER environment variables. These variables are consulted only if mail-spool directory is not explicitely set either in the configuration files or in the command line. This is different from the previous versions. ** New utility `maidag' Maidag is a MAIl Delivery AGent. It is a general-purpose MDA able to run in both traditional and LMTP mode and to deliver mails to various mailbox formats. These formats, among others, include remote+smtp and remote+sendmail (see `New mailbox types.', below), which are equivalent to forwarding a message over SMTP. Thus, maidag supercedes both `mail.local' and `mail.remote' (which are still included for backward compatibility). Maidag is also able to process incoming messages using Sieve or Scheme scripts and, based on results of this processing, to take a decision on whether to actually deliver and where to deliver them. ** Comsat The `comsat' utility is able to notify about messages delivered to a mailbox of any `local' type, i.e.: UNIX mailbox, MH and Maildir. This is implemented using quick access mode. See `Quick access to a message', below. The communication protocol has been modified to make this possible. The traditional comsat protocol is supported as well. ** Sieve *** New Sieve action `pipe' Syntax: pipe [:envelope] <command line: string> This action executes the given <command line> and pipes the message to its standard input. If the :envelope tag is given, the envelope of the message is piped as well. *** Fileinto :permissions The `fileinto' action takes a tag :permissions that allows to set permissions on the mailbox, in case it is created. Its argument is a string, similar to that used in chmod(1): [go](+|=)[rw] For example: fileinto :permissions "g=rw,o=r" "/shared/mailbox" ** Client SMTP STARTTLS support ** Support for new protocols: POPS (pops://) and IMAPS (imaps://), ** LDAP support (authentication and authorization). ** Support for TCP wrappers. The support for TCP wrappers is added to the daemon programs (imap4d, pop3d, maidag). The support is controlled at compile time by the --with-tcpwrappers command line options to configure. By default, it is enabled if libwrap presence is detected. A set of configuration file statements are provided for fine tuning TCP wrappers at run-time. ** pop3d and imap4d ports. Pop3d and imap4d can be configured to listen on several different IP addresses/ports (or even local sockets) simultaneously. ** pop3d: Fixed APOP handling. ** Imap4d supports UNSELECT extension. ** Imap4d supports ID extension. ** imap4d supports PREAUTH mode. Three mechanisms are provided for authentifying the connection in PREAUTH mode: 1. stdio - PREAUTH mode is enabled automatically if imap4d is started from command line in interactive mode (-i command line option). The current login name is used as the user name. 2. ident - The remote machine is asked about the requester identity using the identification protocol (RFC 1413). Both plaintext and DES encrypted replies are understood. 3. prog - Imap4d invokes an external program to authenticate the connection. The command line is obtained from the supplied string, by expandind the following variables: 1) ${client_address} - Remote IP address in dotted-quad notation; 2) ${client_port} - Remote port number; 3) ${server_address} - Local IP address; 4) ${server_port} - Local port number. If the connection is authenticated, the program should print the user name, followed by a newline character, on its standard output and exit with code 0. Otherwise, it shoud exit with a non-zero exit code. * Libraries ** Support for ESMTP SIZE extension (RFC 1870). ** Diagnostic and debugging functions essentially rewritten. A set of debugging macros, MU_DEBUG0 through MU_DEBUG11, is provided. New functions mu_debug_printf and mu_debug_vprintf allow for flexible formatting of debugging messages. The mu_debug_t object features built-in line bufferring. The new function mu_debug_check_level(d,l) returns true if the logging level currently set for debugging object `d' matches that given by `l'. New diagnostics functions are available, among them: void mu_diag_vprintf (int level, const char *fmt, va_list ap); void mu_diag_printf (int level, const char *fmt, ...); void mu_diag_voutput (int level, const char *fmt, va_list ap); void mu_diag_output (int level, const char *fmt, ...); A new header file, mailutils/diag.h, provides declarations for these and other related functions. The functions mu_error and mu_verror are shortcuts for mu_diag_output (MU_DIAG_ERROR, ...) and mu_diag_voutput (MU_DIAG_ERROR, ...), correspondingly. The function mu_error_set_print is deprecated as well as the mu_error_pfn_t type. They are, however, still supported. The following approach is recommended to use instead of mu_error_set_print: mu_diag_get_debug (&debug); mu_debug_set_print (debug, new_printer, NULL); ** Header iteration New function `mu_header_get_iterator' returns an iterator for this header object. Thus, the following code loops over all headers: mu_iterator_t itr; mu_header_get_iterator (header, &itr); for (mu_iterator_first (itr); !mu_iterator_is_done (itr); mu_iterator_next (itr)) { const char *hdr, *val; mu_iterator_current_kv (itr, (const void**)&hdr, (void**)&val)); /* Do something with hdr and val */ } mu_iterator_destroy (&itr); ** Global debugging and verbosity settings. These settings provide default values for mu_debug_t objects created by various library objects. The following functions are provided for dealing with global debugging level: unsigned mu_global_debug_level (const char *object_name); int mu_global_debug_set_level (const char *object_name, unsigned level); int mu_global_debug_clear_level (const char *object_name); ** New function mu_mailbox_sync It supersedes mu_mailbox_save_attributes, which is now considered deprecated. ** Observable event handling Each event type is associated with an event-specific data pointer. This pointer is passed to event handling functions along with an opaque function-specific data pointer. This affects the following functions: mu_observer_set_action mu_observer_set_action_data (New function) mu_observable_notify New type of event, MU_EVT_MESSAGE_APPEND, is signalled whenever a new message is appended to the mailbox. ** Quick access to a message A set of functions are provided for so-called `quick access' to mail messages. Quick access is used when an application needs to quickly read one message from the mailbox. In particular, this mode is used by comsat. To use quick access functions, the mailbox must be opened with flags MU_STREAM_READ|MU_STREAM_QACCESS. The function mu_mailbox_quick_get_message can then be used to retrieve the message: int mu_mailbox_quick_get_message (mu_mailbox_t mbox, mu_message_qid_t qid, mu_message_t *pmsg); The message is identified by the second argument, qid. The function mu_message_get_qid can be used to retrieve mu_message_qid_t identifier for a message: int mu_message_get_qid (mu_message_t msg, mu_message_qid_t *pqid); ** New `aget' and `sget' accessors for mu_url_t The following new accessors are provided: extern int mu_url_sget_scheme (const mu_url_t, const char **); extern int mu_url_aget_scheme (const mu_url_t, char **); extern int mu_url_sget_user (const mu_url_t, const char **); extern int mu_url_aget_user (const mu_url_t, char **); extern int mu_url_sget_passwd (const mu_url_t, const char **); extern int mu_url_aget_passwd (const mu_url_t, char **); extern int mu_url_sget_auth (const mu_url_t, const char **); extern int mu_url_aget_auth (const mu_url_t, char **); extern int mu_url_sget_host (const mu_url_t, const char **); extern int mu_url_aget_host (const mu_url_t, char **); extern int mu_url_sget_path (const mu_url_t, const char **); extern int mu_url_aget_path (const mu_url_t, char **); extern int mu_url_sget_query (const mu_url_t, const char **); extern int mu_url_aget_query (const mu_url_t, char **); int mu_url_sget_fvpairs (const mu_url_t, size_t *, char ***); int mu_url_aget_fvpairs (const mu_url_t, size_t *, char ***); ** ACL A set of functions implements general-purpose access control lists. They are declared in the header file mailutils/acl.h. Currently, these functions support IPv4 and UNIX address families. Support for more address families, in particular IPv6, will be added in future. The following actions can be defined in ACLs: 1. mu_acl_accept - Accept connection. 2. mu_acl_deny - Deny connection. 3. mu_acl_log - Issue a log message, using mu_diag.* diagnostics functions. 4. mu_acl_exec - Execute an external program. 5. mu_acl_ifexec - Execute an external program and accept or deny connection depending on its exit code. ** KWD A set of functions is provided for translating string values to integer tokens and vice-versa using simple translation tables. These functions are declared in the header file mailutils/kwd.h. ** Vartab A set of functions is provided for performing variable expansion in strings. These functions are declared in the header file mailutils/vartab.h. ** Incompatible change in mu_url_get_.* return value Any mu_url_get_.* accessors return MU_ERR_ENOENT if the corresponding field is not present in the object. Previous versions in that case returned 0 and stored empty string in the output buffer. ** Prog mailer. New mailer type, `prog' is introduced. It is a generalization of the `sendmail' message. The syntax for this mailer type is: prog://progname?args where `args' is a list of command line arguments separated by `&' signs. When using this mailer, mailutils executes `progname' with the given arguments and pipes the message to its standard input. ** New mailbox types. Two new mailbox types, "remote+smtp" and "remote+sendmail", are supported. These are `append-only' mailboxes, i.e. the only operation that can be done on them is mu_mailbox_append_message. E.g., appending to the URL `remote+smtp://127.0.0.1:24' is equivalent to sending a message using mailer `smtp://127.0.0.1:24'. In addirion, "remote+prog" mailbox (abbreviated as "|") is useful for piping messages to the standard input of an external program. ** New argcv functions. - int mu_argcv_get_np (const char *command, int len, const char *delim, const char *cmnt, int flags, int *pargc, char ***pargv, char **endp); This function is an alternative entry point to mu_argcv_get/mu_argcv_get_n functions. The resulting argv will contain non-whitespace delimiters only if flags contains the bit MU_ARGCV_RETURN_DELIMS. - void mu_argcv_remove (int *pargc, char ***pargv, int (*sel) (const char *, void *), void *); Removes from pargc/pargv all elements for which the sel function returns true. ** New registry functions. - int mu_registrar_lookup_url (mu_url_t url, int flags, mu_record_t *precord, int *pflags); ** Fixed parsing of URLs similar to file:///a/b. It is parsed as an absolute file name `/a/b'. Previous versions incorrectly understood such an URL as `a/b' (relative file name). ** Remove v0.6 compatibility layer. ** Function mu_mail_directory is removed. ** New function mu_mailbox_url. Regards, Sergey _______________________________________________ GNU Announcement mailing list <info-gnu@gnu.org> http://lists.gnu.org/mailman/listinfo/info-gnu