1. 22 Apr, 2017 1 commit
    • * include/mailutils/cctype.h (MU_CTYPE_TSPEC): New class.  Represents
      tspecials as per RFC 2045, section 5.1.
      (mu_istspec): New define.
      * libmailutils/string/muctype.c (mu_c_tab): Mark tspecials
      
      * include/mailutils/assoc.h (mu_assoc_mark)
      (mu_assoc_sweep): New protos.
      * libmailutils/base/assoc.c (_mu_assoc_elem): New field: mark
      (mu_assoc_mark,mu_assoc_sweep): New functions.
      
      * libmailutils/filter/Makefile.am (libfilter_la_SOURCES): Add dq.c
      and percent.c.
      * libmailutils/filter/dq.c: New file.
      * libmailutils/filter/percent.c: New file.
      * include/mailutils/filter.h (mu_percent_filter)
      (mu_dq_filter): New externs.
      * libmailutils/filter/filter.c (mu_filter_get_list): Register
      mu_percent_filter and mu_dq_filter.
      
      * include/mailutils/mime.h (mu_mime_header_set)
      (mu_mime_header_set_w): New protos.
      * libmailutils/mime/Makefile.am (libmime_la_SOURCES): Add mimehdrset.c
      * libmailutils/mime/mimehdrset.c: New file.
      * libmailutils/mime/mime.c (_mime_set_content_type): For multipart/alternative,
      remove also all parameters except charset from the Content-Type header.
      * mail/send.c (saveatt): Remove the now unneeded conditionals.
      * libmailutils/tests/mimehdr.at: Test formatting functions.
      
      * include/mailutils/stream.h (MU_IOCTL_FILTER_SET_OUTBUF_SIZE): New ioctl.
      * include/mailutils/sys/filter.h (_MU_FILTER_DISABLED)
      (_MU_FILTER_EOF): Remove.  Use bitfields instead.
      (_mu_filter_stream): Remove fltflag.  New fields: flag_disabled,
      flag_eof, outbuf_size.
      * libmailutils/stream/fltstream.c (MFB_BASE)
      (MFB_CURPTR, MFB_ENDPTR, MFB_SIZE, MFB_LEVEL)
      (MFB_POS, MFB_RDBYTES, MFB_FREESIZE)
      (MBF_CLEAR, MBF_FREE): Replace with inline functions.
      (init_iobuf): Use the outbuf_size field (unless 0) to
      set the output buffer size.
      (filter_read): Stop if on success if outbuf_size is set,
      without trying to fill the entire buffer.
      (filter_ctl): Handle MU_IOCTL_FILTER_SET_OUTBUF_SIZE.
      
      * libmailutils/tests/mimehdr.c: New option -width: format and
      print the value assuming given line width.
      Sergey Poznyakoff authored
  2. 19 Apr, 2017 5 commits
    • Minor change · 5aea5b2d
      * mail/mail.h: Remove unneeded extern qualifiers.
      Sergey Poznyakoff authored
    • If the mime header is set, then mail will provide the missing 'charset'
      parameter for each Content-Type header that begins with 'text/'.
      Its value will be determined by examining the 'charset' mail variable.
      If it is set to 'auto' (the default), the character set will be extracted
      from the value of the LC_ALL environment variable.  If it is unset, it
      will be deduced from the LANG environment variable.
      
      Thus, provided that LC_ALL is set correctly, the following setting in
      .mailrc is recommended to ensure that mails in native character
      sets will be processed correctly:
      
        set charset=auto mime
      
      In most cases, it can be simplified to just 'set mime'.
      
      * NEWS: Update.
      * doc/texinfo/programs.texi: Update the description of the charset
      variable.
      * mail/mail.h (util_get_charset): New proto.
      * mail/send.c (attach_set_content_type): New function.
      (attlist_add, add_body): Use attach_set_content_type to
      set the content_type field.
      * mail/util.c (util_get_charset): New function.
      (util_rfc2047_decode): Use util_get_charset.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * mail/mail.c (mime_option): New variable.
      (main): assume --mime if either or both of --content-type and
      --content-encoding are set.  Set the mime variable if so.
      * mail/mail.h (mailvar_is_true): New prototype.
      * mail/send.c (add_attachments): Continue if the mime variable
      is set.
      (add_body): Rewrite, treating the text read from the stdin as
      MIME part in itself.
      * mailvar.c (mailvar_tab): New variable "mime"
      (mailvar_is_true): New function.
      
      * NEWS: Document --mime
      * doc/texinfo/programs.texi: Rewrite the Attachments subsection.
      Sergey Poznyakoff authored
    • Minor changes · ff1a8a6e
      * mail/mail.c (cli_attach): Exit if unable to attach file.
      * mail/mail.h (send_attach_file): Change prototype.
      * mail/send.c (send_attach_file): Return int.
      (add_body): Honor default_content_type
      Sergey Poznyakoff authored
  3. 18 Apr, 2017 2 commits
    • fix a typo · a72570a2
      Sergey Poznyakoff authored
    • Until now, mu_header_set_value called with replace=0 prepended the header
      to the header list, if a header with such name was already present.  This
      has been changed.  Now, if the header with the requested name is already
      present, its action is as follows:
      
        1. If repl is 0, return MU_ERR_EXISTS
        2. Otherwise, replace the header with the new value.
      
      If the header is not present, it is appended to the end of the header
      list, instead of putting it at the beginning.
      
      This change is incompatible and breaks the tests, that relied on a particular
      field ordering.  These are fixed as well.
      
      The use of mu_header_set_value throughout the sources has been revised to
      ensure that single-instance headers are never added twice.
      
      This change also facilitates the second part of this commit, which
      fixes creation of the multipart/alternative message by the mail utility.
      
      * libmailutils/mailbox/header.c (mu_header_set_value): Fix semantics.
      If the replace parameter is not set and the header field with the
      given name already exists, return MU_ERR_EXISTS without changing
      anything.  If adding new header, append it to the end of the header
      list, instead of pushing it to the top.
      
      * configure.ac: Raise shared library revision number.
      
      * libmu_scm/mu_message.c (mu-message-set-header)
      (mu-message-set-header-fields): call mu_header_set_value explicitly if
      repl is not set.
      * libmu_sieve/extensions/moderator.c: Force replace header mode when
      needed.
      * libmu_sieve/extensions/vacation.c: Likewise.
      * mh/mh_init.c (mh_annotate): Prepend the annotation header.
      * mh/mhn.c: Force replace header mode when needed.
      * mh/repl.c: Likewise.
      * mh/send.c: Likewise.
      
      * libmailutils/tests/modmesg01.at: Change expected header order.
      * libmailutils/tests/modmesg03.at: Likewise.
      * mh/tests/mhn.at: Likewise.
      * mh/tests/send.at: Likewise.
      * sieve/tests/moderator.at: Likewise.
      * sieve/tests/redirect.at: Likewise.
      * sieve/tests/reject.at: Likewise.
      * sieve/tests/vacation.at: Likewise.
      
      * examples/mta.c (message_finalize): Append X-Authentication-Warning,
      instead of setting it.
      
      Make sure Content-Disposition is not set for parts of a multipart/
      alternative MIME message.  Some mail readers (notably, yahoo),
      misinterpret it.
      
      * libmailutils/mime/attachment.c (at_hdr): Use mu_header_set_value
      to set Content-Type and Content-Disposition.
      * libmailutils/mime/mime.c (_mime_set_content_type): If the content
      type is set to multipart/alternative, remove the Content-Disposition
      headers from the message parts.
      
      * mail/send.c (saveatt): Don't set content-disposition for
      multipart/alternative, it is now done by the library.
      (add_attachments): Warn about ignored headers.
      Append only Received and X-* headers, replace others.
      (parse_headers): Append headers.
      (compose_header_set): Use mu_header_append if COMPOSE_APPEND is requested.
      * mail/util.c (util_header_expand): Use mu_header_append.
      Sergey Poznyakoff authored
  4. 13 Apr, 2017 2 commits
    • Bugfix · c010cf73
      * libmailutils/base/assoc.c (merge_sort): Fix last argument in call to cmp.
      Sergey Poznyakoff authored
    • The new option --alternative is provided to change the content type of
      the composed message to multipart/alternative.  The ~/ escape toggles
      the type between multipart/mixed and multipart/alternative.  In messages
      of multipart/alternative type, the Content-Disposition header of all
      attachments is reset to "inline".
      
      * libmailutils/mime/mime.c (mu_mime_create): Bugfix: honour the
      MU_MIME_MULTIPART_ALT flag.
      * mail/mail.c: New option --alternative.
      * mail/mail.h (compose_env) <attlist,mime>: New members.
      (multipart_alternative): New global.
      (send_attach_file): Change return value.
      (escape_toggle_multipart_type): New proto.
      * mail/send.c (multipart_alternative): New global.
      Keep the list of attachments in compose_env_t.  Make sure it is freed
      when no longer used.
      Implement the ~/ escape.
      * mail/table.c: New escape ~/
      * mail/util.c: Use mu_strerror instead of strerror.
      
      * NEWS: Document changes to the mail utility
      * doc/texinfo/programs.texi: Likewise.
      Sergey Poznyakoff authored
  5. 11 Apr, 2017 1 commit
    • The subcommands are re-implemented as standalone binaries installed
      to pkglibexecdir.  The main binary acts as a dispatcher.
      
      * configure.ac: Build mu/libexec/Makefile
      * include/mailutils/.gitignore: Ignore gitinfo.h
      
      * include/mailutils/opt.h (mu_parseopt_help_stream_create): New proto.
      * libmailutils/cli/cli.c (mu_cli_ext): Honor MU_PARSEOPT_PROG_NAME
      setting.
      * libmailutils/opt/help.c (mu_parseopt_create_help_stream): New
      function.
      (mu_program_help,mu_program_usage)
      (mu_program_version): Use it.
      
      * mu/Makefile.am: Move commands to separate executables under libexec.
      * mu/mu.c: Rewrite.
      * mu/dispatch.c: Remove.
      * mu/help.c: Remove.
      * mu/libexec/.gitignore: New file.
      * mu/libexec/Makefile.am: New file.
      * mu/libexec/getopt.c: New file.
      * mu/getans.c: Move to mu/libexec.
      * mu/getarg.c: Likewise.
      * mu/getyn.c: Likewise.
      * mu/util.c: Likewise.
      * mu/verbose.c: Likewise.
      * mu/shell.c: Likewise.
      * mu/mu.h: Remove.
      * mu/libexec/mu.h: New file.
      * mu/acl.c: Move to mu/libexec; Rewrite as a standalone program.
      * mu/cflags.c: Likewise.
      * mu/dbm.c: Likewise.
      * mu/filter.c: Likewise.
      * mu/flt2047.c: Likewise.
      * mu/imap.c: Likewise.
      * mu/info.c: Likewise.
      * mu/ldflags.c: Likewise.
      * mu/logger.c: Likewise.
      * mu/pop.c: Likewise.
      * mu/query.c: Likewise.
      * mu/send.c: Likewise.
      * mu/smtp.c: Likewise.
      * mu/stat.c: Likewise.
      * mu/wicket.c: Likewise.
      * mu/mu-setup.awk: Remove.
      * po/POTFILES.in: Update.
      Sergey Poznyakoff authored
  6. 10 Apr, 2017 1 commit
  7. 09 Apr, 2017 2 commits
    • Version 3.2.91 · 89be18ea
      Sergey Poznyakoff authored
    • * NEWS: Describe the change.
      * doc/texinfo/mailutils.texi: Remove description of sieve2scm
      * doc/texinfo/programs.texi: Likewise.
      * scheme/Makefile.am: Remove sieve2scm.
      * scheme/mimeheader.scm: Remove.
      * scheme/numaddr.scm: Remove.
      * scheme/redirect.scm: Remove.
      * scheme/reject.scm: Remove.
      * scheme/sieve-core.scm: Remove.
      * scheme/sieve2scm.scmi: Remove.
      * scheme/vacation.scm: Remove.
      Sergey Poznyakoff authored
  8. 08 Apr, 2017 2 commits
    • * include/mailutils/acl.h (mu_acl_set_session_id): Remove proto.
      * include/mailutils/server.h (mu_session_id): Remove extern.
      (mu_sid): New proto.
      * libmailutils/server/sid.c: New file.
      * libmailutils/server/Makefile.am: Add sid.c
      * libmailutils/server/ipsrv.c (mu_ip_tcp_accept)
      (mu_ip_udp_accept): Remove calls to mu_acl_set_session_id.
      (mu_ip_server_accept): Make sure output to mu_strerr is filtered so
      that session ID is prepended to each line.
      (mu_ip_server_loop): Remove.
      * libmailutils/server/msrv.c (mu_m_server_check_acl): Remove call
      to mu_acl_set_session_id.
      * libmailutils/server/server.c (mu_session_id): Remove variable.
      
      * imap4d/imap4d.c (get_client_address, set_strerr_flt)
      (clr_strerr_flt): Remove unused functions.
      (imap4d_connection): Simplify.
      * pop3d/pop3d.c: Likewise.
      Sergey Poznyakoff authored
  9. 07 Apr, 2017 1 commit
  10. 06 Apr, 2017 2 commits
    • * mu-aux/mailutils.m4: Don't use packed version representation, because of
      eventual numerical overflows.  Compare versions number by number.
      Define the following additional constants: MAILUTILS_VERSION_MAJOR,
      MAILUTILS_VERSION_MINOR, and MAILUTILS_VERSION_PATCH.
      * NEWS: Document changes.
      Sergey Poznyakoff authored
    • * Makefile.am: Minor change.
      * include/mailutils/Makefile.am (gitinfo.h): Build only if
      $(srcdir) and $(builddir) are the same.
      * mu-aux/gitinfo.pl: Rename to mu-aux/gitinfo
      * configure.ac (GITINFO): Reflect this change
      * mu-aux/Makefile.am: Likewise.
      Sergey Poznyakoff authored
  11. 05 Apr, 2017 1 commit
  12. 04 Apr, 2017 1 commit
  13. 03 Apr, 2017 2 commits
  14. 24 Mar, 2017 1 commit
    • * libmailutils/tests/.gitignore: Update.
      * libmailutils/tests/xscript.at: New file.
      * libmailutils/tests/xscript.c: New file.
      * libmailutils/tests/Makefile.am: Add new files.
      * libmailutils/tests/testsuite.at: Include new testcase.
      Sergey Poznyakoff authored
  15. 23 Mar, 2017 2 commits
    • * include/mailutils/debug.h (MU_ASSERT): Prefix local variable name
      with two underscores to diminish the probability of shadowing.
      Sergey Poznyakoff authored
    • * Makefile.am: Mark ChangeLog as noinst_DATA to trigger
      its rule.  Rewrite the ChangeLog rule using a wrapper
      over gitlog-to-changelog, which rewrites the file only
      when needed.
      (dist-hook): Fail if there are uncommitted changes.
      * mu-aux/gencl: New file.
      
      * maint.mk: Remove.
      Sergey Poznyakoff authored
  16. 22 Mar, 2017 1 commit
    • Bugfix · fe4bfde5
      * libmailutils/stream/xscript-stream.c (print_transcript): Print
      closing double-quote after user name in LOGIN statement.
      Sergey Poznyakoff authored
  17. 21 Mar, 2017 5 commits
  18. 20 Mar, 2017 3 commits
    • Intermediate tarballs have the same version number as initial alpha
      version, to which is appended a suffix "-N", where N is the number of
      commits between the current git HEAD and the original alpha release.
      
      Additionally, the --version (or -version, for MH) output has been changed
      to include the N and the git description (for all releases, but stable).
      
      * .gitignore: Update.
      * Makefile.am: Remove git-describe and git-describe.h goals.
      (alpha, alphacheck): Rewrite.
      * configure.ac (GITINFO): New subst variable.
      * include/mailutils/Makefile.am (gitinfo.h): New built source.
      * libmailutils/cli/cli.c: Include gitinfo.h
      (mu_version_hook): Rewrite.
      * mh/mh_getopt.c: Include gitinfo.h
      (mh_version_hook): Rewrite.
      * mu-aux/gitinfo.pl: New file.
      * mu-aux/Makefile.am (EXTRA_DIST): Add gitinfo.pl
      * mu/Makefile.am (mu-setup.c): Add dependency
      * testsuite/testsuite.inc (MUT_VERSION): Account for changes in
      version output.
      Sergey Poznyakoff authored
    • * pop3d/cmd.c (command_table_head): Remove.  Use command_table
      instead.  All uses changed.
      * pop3d/stls.c (pop3d_stls): Fail if TLS is not requested.
      Sergey Poznyakoff authored
    • * include/mailutils/iterator.h (mu_itrctl_req) <mu_itrctl_count>: New request
      type.
      * libmailutils/base/assoc.c (itrctl): Support mu_itrctl_count.
      * libmailutils/list/iterator.c (list_itrctl): Likewise.
      * libmailutils/mailbox/hdritr.c (hdr_itrctl): Likewise.
      * libmailutils/mailbox/mbxitr.c (mbx_itrctl): Likewise.
      * libmailutils/base/opool.c (opitr_itrctl): New function - support
      mu_itrctl_count.
      (mu_opool_get_iterator): Register opitr_itrctl.
      * libmailutils/diag/debug.c (list_itrctl): Return 1-based position
      indices on mu_itrctl_tell.
      Support mu_itrctl_count.
      Sergey Poznyakoff authored
  19. 19 Mar, 2017 1 commit
  20. 18 Mar, 2017 1 commit
    • The new implementation allows for per-server certificates.
      
      * libmu_auth/Makefile.am: Build tls support depending on the value of
      MU_COND_GNUTLS.
      * libmu_auth/notls.c: New file.
      * libmu_auth/tls.c: Rewrite.
      * libmu_auth/tlsiostr.c: New file.
      * libmu_auth/tlsvar.c: New file.
      * libmu_auth/tlsconf.c: New file.
      
      * include/mailutils/sys/tls-stream.h (_mu_tls_stream): New members:
      session_type, conf, cred.
      (mu_tls_io_stream_create): New proto.
      * include/mailutils/tls.h (mu_tls_module_config): Remove definition.
      (mu_tls_config): New structure.
      (mu_tls_server_stream_create): Remove proto.
      (mu_tls_cert_file_checks)
      (mu_tls_key_file_checksr)
      (mu_tls_ca_file_checks): New globals
      (MU_TLS_CERT_FILE_CHECKS)
      (MU_TLS_KEY_FILE_CHECKS)
      (MU_TLS_CA_FILE_CHECKS): New defines.
      (mu_tls_stream_create): New proto.
      (mu_tls_config_status): New constants.
      (mu_tls_check_config): Remove.
      (mu_tls_config_check): New function.
      
      * include/mailutils/server.h (mu_m_server_preflight_fp): New typedef.
      (mu_m_server_set_preflight): New proto.
      
      * libmailutils/diag/debcat (tls): New category.
      * libmailutils/server/ipsrv.c (mu_ip_server_get_data): New function.
      * libmailutils/server/msrv.c (_mu_m_server) <preflight>: New method.
      (mu_m_server_set_preflight): New function.
      (mu_m_server_destroy): Destroy the srvlist.
      (open_connection): New function.
      (mu_m_server_run): Remove from srvlist only those servers that failed
      to open.  Run preflight check, if registered.
      
      * include/mailutils/cfg.h (mu_cfg_section): New member: data.
      * libmailutils/cfg/driver.c (dup_container): Copy the "data" pointer.
      (mu_cfg_section_add_params): Preserve original pointer and offset when
      necessary.
      * libmailutils/cfg/parser.y (_scan_tree_helper): Use the section data
      pointer (if set) as data target.
      
      * configure.ac (MU_COND_GNUTLS): New conditional.
      * imap4d/commands.c: Remove #ifdef WITH_TLS preprocessor conditional.
      * imap4d/imap4d.c (tls_mode): Remove variable.
      (imap4d_srv_config): Move definition to the header file.
      Remove #ifdef WITH_TLS preprocessor conditionals.
      Rename the tls configuration statement to tls-mode.
      Add new subsection .server.tls;
      Remove the legacy tls-required configuration statement.
      (imap4d_mainloop): Change signature: take a pointer to the
      struct imap4d_srv_config as the 3rd argument,
      Use the cfg->tls_mode member to decide on TLS state.
      (main): Call mu_tls_cfg_init.
      Install server preflight checker.
      * imap4d/imap4d.h: Remove #ifdef WITH_TLS preprocessor conditionals.
      (imap4d_srv_config): Moved from imap4d.c
      New member: tls_conf
      (imap4d_session): New member: tls_conf
      (global_tls_conf): New global.
      (io_setio, imap4d_init_tls_server): Change prototypes.
      * imap4d/io.c (io_setio): Change signature: take a pointer to the
      struct mu_tls_config as the 3rd argument.
      Rewrite TLS support.
      (imap4d_init_tls_server): Take a pointer to the
      struct mu_tls_config.
      * imap4d/starttls.c (tls_available, tls_done): Remove globals.
      (global_tls_conf): New global.
      (imap4d_starttls): Keep TLS state in the session.
      (tls_encryption_on): Likewise.
      (starttls_init): Rewrite as a mserver preflight check function.
      
      * pop3d/capa.c: Remove #ifdef WITH_TLS preprocessor conditional.
      (capa_stls): Rewrite.
      * pop3d/cmd.c (global_tls_conf): New global.
      (stls_preflight): New function.
      (pop3d_error_string): Rewrite using char ** array.
      * pop3d/extra.c (pop3d_setio): Take a pointer to struct mu_tls_config
      as the 3rd argument. Decide on TLS using it.
      (pop3d_init_tls_server): Take a pointer to struct mu_tls_config.
      * pop3d/pop3d.c: Rename the tls configuration statement to tls-mode.
      Add new subsection .server.tls;
      Remove the legacy tls-required configuration statement.
      (pop3d_mainloop) Take a pointer to struct mu_tls_config
      as the 3rd argument. Decide on TLS using it.
      (main): Call mu_tls_cfg_init. Install server preflight check.
      * pop3d/pop3d.h (pop3d_session): New member tls_conf.
      (pop3d_srv_config): New definition.
      (global_tls_conf): New extern.
      * pop3d/stls.c: Rewrite TLS support.
      
      * NEWS: Document new features.
      * configure.ac: Version 3.2.90.
      * doc/texinfo/programs.texi: Update.
      Sergey Poznyakoff authored
  21. 11 Mar, 2017 2 commits
  22. 06 Mar, 2017 1 commit