1. 27 Apr, 2012 2 commits
  2. 23 Apr, 2012 1 commit
    • * libproto/mailer/smtp.c (_smtp_set_rcpt): Assign rcpt_to a copy of the
      recipient address.
      * mail/util.c (util_header_expand): Make sure exp is always initialized.
      * mh/send.c (main): Process mtstailor before checking input files, so
      its settings affect creation of additional headers and adresses. In
      particular, this allows for setting the sender address in mtstailor.
      Sergey Poznyakoff authored
  3. 13 Apr, 2012 1 commit
  4. 25 Mar, 2012 1 commit
    • * examples/aclck.c: Check return values from strdup.
      * libmailutils/base/usremail.c: Likewise.
      * libmailutils/mailbox/bodystruct.c: Likewise.
      * lib/mailcap.c: Likewise.
      * libmailutils/mailbox/mbx_default.c: Likewise.
      * libmailutils/server/acl.c: Likewise.
      * libmailutils/stream/logstream.c: Likewise.
      * libmailutils/stream/message_stream.c: Likewise.
      * libmu_argp/mu_argp.c: Likewise.
      * libmu_auth/ldap.c: Likewise.
      * libmu_auth/pam.c: Likewise.
      * libmu_auth/sql.c: Likewise.
      * libmu_sieve/comparator.c: Likewise.
      * libmu_sieve/conf.c: Likewise.
      * libmu_sieve/extensions/list.c: Likewise.
      * libmu_sieve/extensions/vacation.c: Likewise.
      * libproto/mailer/prog.c: Likewise.
      * libproto/mailer/smtp_io.c: Likewise.
      * maidag/lmtp.c: Likewise.
      * python/libmu_py/address.c: Likewise.
      * sql/odbc.c
      
      * examples/sfrom.c (main): Avoid unnecessary memory allocation.
      * libmailutils/mailbox/mailbox.c: Likewise.
      
      * frm/frm.h: Include mailutils/alloc.h, remove xalloc.h
      * mh/mh.h: Likewise.
      
      * imap4d/imap4d.h: Remove xalloc.h
      * mail/mail.h: Likewise.
      * mimeview/mimeview.h: Likewise.
      * mu/acl.c: Likewise.
      * readmsg/readmsg.c: Likewise.
      
      * include/mailutils/locker.h (mu_locker_set_default_external_program):
      Change returned type.
      * include/mailutils/mailbox.h (mu_set_folder_directory): Change
      returned type.
      * libmailutils/base/locker.c (mu_locker_set_default_external_program):
      Return int (error code).
      * libmailutils/base/tilde.c: Add extra checks
      * libmailutils/mime/mimehdr.c (_mime_header_parse): Bugfix.
      * mail/folders.c: Don't use alloca, use mu_alloc instead. It
      was the only use of that function in Mailutils, so this change
      allows to withdraw the alloca module.
      
      * gnulib.modules (alloca, malloc)
      (realloc, xalloc): Remove.
      
      * frm/common.c: Use mu_alloc and friends instead of xmalloc.
      * frm/from.c: Likewise.
      * imap4d/append.c: Likewise.
      * imap4d/auth_gsasl.c: Likewise.
      * imap4d/authenticate.c: Likewise.
      * imap4d/fetch.c: Likewise.
      * imap4d/imap4d.c: Likewise.
      * imap4d/io.c: Likewise.
      * imap4d/list.c: Likewise.
      * imap4d/namespace.c: Likewise.
      * imap4d/parsebuf.c: Likewise.
      * imap4d/preauth.c: Likewise.
      * imap4d/rename.c: Likewise.
      * imap4d/search.c: Likewise.
      * imap4d/util.c: Likewise.
      * libmu_argp/muinit.c: Likewise.
      * mail/alias.c: Likewise.
      * mail/alt.c: Likewise.
      * mail/copy.c: Likewise.
      * mail/decode.c: Likewise.
      * mail/escape.c: Likewise.
      * mail/file.c: Likewise.
      * mail/from.c: Likewise.
      * mail/mail.c: Likewise.
      * mail/mailline.c: Likewise
      * mail/mailvar.c: Likewise
      * mail/msgset.y: Likewise
      * mail/page.c: Likewise
      * mail/send.c: Likewise
      * mail/shell.c: Likewise
      * mail/unset.c: Likewise
      * mail/util.c: Likewise
      * mh/folder.c: Likewise
      * mh/mh_alias.l: Likewise
      * mh/mh_alias.y: Likewise
      * mh/mh_fmtgram.y: Likewise
      * mh/mh_format.c: Likewise
      * mh/mh_global.c: Likewise
      * mh/mh_init.c: Likewise
      * mh/mh_list.c: Likewise
      * mh/mh_whatnow.c: Likewise
      * mh/mh_whom.c: Likewise
      * mh/mhn.c: Likewise
      * mh/pick.y: Likewise
      * mh/prompter-rl.c: Likewise
      * mh/refile.c: Likewise
      * mh/repl.c: Likewise
      * mh/send.c: Likewise
      * mh/sortm.c: Likewise
      * mimeview/mimetypes.y: Likewise
      * mu/dbm.c: Likewise
      * mu/dispatch.c: Likewise
      * mu/imap.c: Likewise
      * mu/pop.c: Likewise
      * mu/shell.c: Likewise
      * pop3d/apop.c: Likewise
      * pop3d/bulletin.c: Likewise
      * pop3d/popauth.c: Likewise
      * pop3d/user.c: Likewise
      Sergey Poznyakoff authored
  5. 24 Mar, 2012 1 commit
  6. 23 Mar, 2012 2 commits
    • This also fixes e75e9123, which broke TLS support in daemons.
      
      * include/mailutils/stream.h (MU_IOCTL_TOPSTREAM): New ioctl.
      * imap4d/imap4d.c (set_strerr_flt)
      (clr_strerr_flt): Use MU_IOCTL_TOPSTREAM.
      * pop3d/pop3d.c: Likewise.
      * libmailutils/stream/fltstream.c (filter_ctl): Handle both
      MU_IOCTL_SUBSTREAM and MU_IOCTL_TOPSTREAM.
      * libmailutils/stream/iostream.c (_iostream_ctl): Likewise.
      * libmailutils/stream/logstream.c (_log_ctl): Likewise.
      * libmailutils/stream/xscript-stream.c (_xscript_ctl): Likewise.
      Sergey Poznyakoff authored
    • * libmailutils/mime/mimehdr.c (free_param_continuation): Change
      return type to void.
      * mu/shell.c: Include muaux.h
      * libproto/imap/logout.c (mu_imap_logout): Logout is valid in any
      state, except MU_IMAP_SESSION_INIT.
      Sergey Poznyakoff authored
  7. 20 Mar, 2012 1 commit
    • * include/mailutils/util.h (mu_file_safety_code_to_name): New proto.
      * libmailutils/base/filesafety.c: Remove static functions which
      checked file mode bits.  Use safety_checker.mode for that directly.
      (mu_file_safety_code_to_name): New function.
      (mu_file_mode_to_safety_criteria): Bugfix.
      (mu_safety_criteria_to_file_mode): Change algorithm.
      * libmailutils/tests/.gitignore: Update
      * libmailutils/tests/fsaftomod.at: New file.
      * libmailutils/tests/fsaftomod.c: New file.
      * libmailutils/tests/modtofsaf.at: New file.
      * libmailutils/tests/modtofsaf.c: New file.
      * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add
      fsaftomod and modtofsaf.
      (TESTSUITE_AT): Add fsaftomod.at and modtofsaf.at
      * libmailutils/tests/testsuite.at: Include fsaftomod.at and
      modtofsaf.at
      Sergey Poznyakoff authored
  8. 17 Mar, 2012 4 commits
    • Bugfix. · b84a8723
      * libmu_dbm/berkeley.c (do_bdb_open): Fix typo.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * mh/etc/replcomps: Format Fcc only if coming from myself.
      * mh/etc/replgroupcomps: Likewise.
      Sergey Poznyakoff authored
    • * imap4d/imap4d.c (set_strerr_flt,clr_strerr_flt): New functions.
      (imap4d_connection): Setup session prefix in strerr if
      mu_log_session_id is set.
      * imap4d/io.c (io_setio): Bugfix: unref debug stream.
      * pop3d/extra.c (pop3d_setio): Likewise.
      * pop3d/pop3d.c (set_strerr_flt,clr_strerr_flt): New functions.
      (pop3d_connection): Setup session prefix in strerr if
      mu_log_session_id is set.
      
      * include/mailutils/acl.h (mu_acl_setenv)
      (mu_acl_getenv,mu_acl_set_session_id): New functions.
      * include/mailutils/server.h (mu_session_id): New extern.
      (mu_m_server_configured_count): Fix signature.
      * include/mailutils/syslog.h (mu_log_session_id): New extern.
      * libmailutils/diag/syslog.c (mu_log_session_id): New global.
      
      * libmailutils/server/acl.c (_mu_acl) <envv,envc,envn>: New
      members.
      (run_closure) <env>: New member.
      (mu_acl_destroy): Free environment.
      (_acl_match): Handle "family" variable.
      (expand_arg): Propagate ACL environment to wordsplit.
      (mu_acl_check_sockaddr): Propagate ACL environment.
      (mu_acl_setenv)
      (mu_acl_getenv,mu_acl_set_session_id): New functions.
      
      * libmailutils/server/ipsrv.c (mu_ip_tcp_accept): Store session ID
      in the ACL.
      (mu_ip_udp_accept): Likewise.
      * libmailutils/server/msrv.c (mu_m_server_configured_count): Fix
      signature.
      (mu_m_server_check_acl): Store session ID in the ACL.
      * libmailutils/server/server.c (mu_session_id): New global variable.
      (connection_loop): Increment session ID
      (mu_acl_set_session_id): New function.
      * libmailutils/stream/fltstream.c (filter_ctl): Handle
      MU_IOCTL_SUBSTREAM.
      * libmailutils/stream/logstream.c (_log_ctl): Likewise.
      * libmu_cfg/common.c (mu_logging_param) <session-id>: New statement.
      Sergey Poznyakoff authored
  9. 14 Mar, 2012 2 commits
  10. 13 Mar, 2012 1 commit
  11. 11 Mar, 2012 1 commit
  12. 09 Mar, 2012 1 commit
    • * maidag/Makefile.am: Load libmu_dbm.la if MU_COND_DBM is true.
      * pop3d/apop.c (pop3d_apopuser): Set owner, if specified in the
      config.
      * pop3d/pop3d.c (apop_database_owner)
      (apop_database_owner_set): New globals.
      (pop3d_cfg_param) <apop-database-owner>: New keyword.
      * pop3d/pop3d.h (apop_database_owner)
      (apop_database_owner_set): New declarations.
      Sergey Poznyakoff authored
  13. 08 Mar, 2012 1 commit
  14. 26 Feb, 2012 2 commits
    • * include/mailutils/locker.h (mu_locker_lock_mode): New proto.
      * libmailutils/base/locker.c (_mu_locker_lock): Rename to
      mu_locker_lock_mode.  All callers updated.
      * libmu_dbm/berkeley.c (bdb_file) <locker>: New member.
      (do_bdb_open): New function.  Lock the database file before opening it.
      Drop support for version 2.
      (_bdb_open): Rewrite as a wrapper over do_bdb_open.
      * mu/dbm.c (dbm_doc): Document the "dump" subcommand.
      
      * NEWS: Version 2.99.96
      * configure.ac: Likewise.
      Sergey Poznyakoff authored
    • * include/mailutils/url.h (MU_URL_PARSE_LOCAL): New flag.
      * libmailutils/tests/url-parse.c (parse_kwtab): New flag
      "local".
      * libmailutils/tests/url.at: Add new tests
      * libmailutils/url/create.c (_mu_url_ctx_parse_host): Skip
      parsing host part if MU_URL_PARSE_LOCAL is set.
      (_mu_url_create_internal): Initialize rc. If MU_URL_PARSE_SLASH
      is set and URL begins with "./" assume it is file.
      If either MU_URL_PARSE_SLASH or MU_URL_PARSE_PIPE are given
      and the URL is diagnosed as file or pipe, prever the scheme
      from hints.
      Sergey Poznyakoff authored
  15. 21 Feb, 2012 1 commit
    • Bugfixes. · 8c0c0bfc
      * include/mailutils/Makefile.am: Add types to pkginclude_HEADERS.
      * libmailutils/tests/url-comp.at: Add missing dnl.
      Sergey Poznyakoff authored
  16. 20 Feb, 2012 1 commit
  17. 21 Jan, 2012 1 commit
  18. 13 Jan, 2012 1 commit
  19. 11 Jan, 2012 1 commit
    • * libmailutils/mailer/mailer.c (mu_mailer_send_fragments): Fix
      3rd argument to _set_to.
      * libproto/mailer/smtp.c (smtp_send_message): SIZE capability
      can appear alone, without specifying maximum size.
      * mh/mh_whom.c (mh_alias_expand): Recreate domain part for addresses
      missing it.
      Sergey Poznyakoff authored
  20. 07 Jan, 2012 1 commit
  21. 05 Jan, 2012 2 commits
  22. 31 Dec, 2011 1 commit
    • * NEWS: Update.
      * include/mailutils/registrar.h (mu_smtps_record): New extern.
      (mu_register_all_mailer_formats): Register mu_smtps_record.
      * include/mailutils/sys/registrar.h (MU_SMTPS_SCHEME)
      (MU_SMTPS_SCHEME_LEN,MU_SMTPS_PORT): New defines.
      * libmailutils/address/address.c (mu_address_get_count): Don't
      count parts with NULL emails.
      (mu_address_contains_email): Validate email before comparison.
      (mu_list_copy): New static.
      (mu_address_union): Reuse last subaddress if its email is NULL.
      * libmailutils/base/nullrec.c (mu_smtps_record): New placeholder.
      * libproto/mailer/smtp.c (mu_smtps_record): New global.
      (smtp_open): Implement SMTPS
      
      * mu/send.c: New file.
      * mu/Makefile.am (MODULES): Add send.c
      Sergey Poznyakoff authored
  23. 30 Dec, 2011 3 commits
    • * examples/mta.c: Handle -bD option. Detach from the controlling
      terminal if -bd is given. Print pid and port number in this case.
      * testsuite/smtpsend.c: Fix handling of the trace= option.
      * testsuite/Makefile.am: Add new tests.
      * testsuite/smtp-msg.at: New test case.
      * testsuite/smtp-str.at: New test case.
      * testsuite/testsuite.at: Include new test cases.
      Sergey Poznyakoff authored
    • Sergey Poznyakoff authored
    • * libmailutils/msgset/Makefile.am (libmsgset_la_SOURCES): Add new files.
      * libmailutils/msgset/addset.c: New file.
      * libmailutils/msgset/count.c: New file.
      * libmailutils/msgset/foreachmsgno.c: New file.
      * libmailutils/msgset/foreachuid.c: New file.
      * libmailutils/msgset/isempty.c: New file.
      * libmailutils/msgset/subset.c: New file.
      * libmailutils/msgset/trans.c: New file.
      * libmailutils/msgset/add.c (mu_msgset_add_range): Take fourth argument
      specifying the conversion mode. Translate numbers as necessary.
      * libmailutils/msgset/foreachmsg.c: Translate numbers as necessary.
      * libmailutils/msgset/foreachnum.c: Rewrite.
      * libmailutils/msgset/negate.c (_invert_range)
      (mu_msgset_add_range): Update calls to mu_msgset_add_range.
      * libmailutils/msgset/parse.c (parse_msgnum_env)<mode>: New member.
      (parse_msgrange): Update calls to mu_msgset_add_range.
      (mu_msgset_parse_imap): Change signature. All callers updated.
      * libmailutils/msgset/sub.c (mu_msgset_sub_range): Take fourth argument
      specifying the conversion mode. Translate numbers as necessary.
      
      * imap4d/copy.c (imap4d_copy0): Update calls to mu_msgset_create
      and mu_msgset_parse_imap.
      * imap4d/fetch.c (fetch_thunk): Likewise.
      * imap4d/search.c (parse_simple_key): Likewise.
      * imap4d/store.c (store_thunk): Likewise.
      * include/mailutils/msgset.h (MU_MSGSET_NUM,MU_MSGSET_UID): New defines.
      (mu_msgset_add,mu_msgset_sub): New protos.
      (mu_msgset_add_range,mu_msgset_sub_range): Take 4 arguments. All callers
      changed.
      * include/mailutils/sys/msgset.h (_mu_msgset_translate_pair)
      (_mu_msgset_translate_range): New protos.
      
      * libmailutils/tests/msgset.c: Reflect the above changes.
      * testsuite/msgset.c: Likewise.
      * libproto/imap/mbox.c: Update calls to mu_msgset functions.
      
      * mh/mh.h (mh_msgset_t): Remove.
      (mh_iterator_fp): Remove typedef.
      (mh_msgset_parse): Change signature.
      (mh_msgset_member,mh_msgset_reverse,mh_msgset_negate)
      (mh_msgset_current,mh_msgset_free,mh_msgset_uids): Remove protos.
      (mh_msgset_parse_string): New proto.
      (mh_msgset_first_current,mh_msgset_first): New proto.
      (mh_iterate: Remove proto. Use mu_msgset_foreach* functions instead.
      (mh_seq_add,mh_seq_delete): Change signatures.
      * mh/mh_init.c (mh_iterate): Remove.
      * mh/mh_msgset.c: Rewrite using mu_msgset_t.
      * mh/mh_sequence.c: Likewise.
      
      * mh/anno.c: Use new msgset functions.
      * mh/burst.c: Likewise.
      * mh/comp.c: Likewise.
      * mh/folder.c: Likewise.
      * mh/forw.c: Likewise.
      * mh/mark.c: Likewise.
      * mh/mhn.c: Likewise.
      * mh/mhpath.c: Likewise.
      * mh/mhseq.c: Likewise.
      * mh/pick.c: Likewise.
      * mh/refile.c: Likewise.
      * mh/repl.c: Likewise.
      * mh/rmm.c: Likewise.
      * mh/scan.c: Likewise.
      * mh/send.c: Likewise.
      * mh/sortm.c: Likewise.
      * mh/whatnowenv.c: Likewise.
      * mh/tests/mark.at: Reflect changes in the format of the saved
      sequences, which may contain ranges now.
      
      * mu/imap.c: Update calls to mu_msgset functions.
      Sergey Poznyakoff authored
  24. 28 Dec, 2011 1 commit
    • * imap4d/copy.c (copy_env) <src>: Remove. Not needed now.
      (size_sum,do_copy): Change to a mu_msgset_message_action_t.
      (try_copy,safe_copy): Change signature; use mu_msgset_foreach_message.
      * imap4d/fetch.c (_fetch_from_message): Change to a
      mu_msgset_message_action_t.
      (imap4d_fetch0): Use mu_msgset_foreach_message.
      * imap4d/imap4d.h (imap4d_message_action_t): Remove typedef.
      (util_foreach_message): Remove. Use mu_msgset_foreach_message.
      * imap4d/store.c (_do_store): Change to a mu_msgset_message_action_t.
      (imap4d_store0): Use mu_msgset_foreach_message.
      * imap4d/util.c (util_foreach_message): Remove.
      * include/mailutils/list.h (mu_list_foreach_dir): New proto.
      * include/mailutils/msgset.h (mu_msgset_msgno_action_t)
      (mu_msgset_message_action_t): New typedefs.
      (mu_msgset_negate,mu_msgset_foreach_dir_msgno)
      (mu_msgset_foreach_msgno,mu_msgset_foreach_dir_message)
      (mu_msgset_foreach_message): New protos.
      * libmailutils/list/foreachdir.c: New file.
      * libmailutils/list/Makefile.am (liblist_la_SOURCES): Add foreachdir.c.
      * libmailutils/list/head.c (mu_list_head): Fix conditional.
      * libmailutils/list/tail.c (mu_list_tail): Likewise.
      * libmailutils/msgset/foreachmsg.c: New file.
      * libmailutils/msgset/foreachnum.c: New file.
      * libmailutils/msgset/negate.c: New file.
      * libmailutils/msgset/Makefile.am (libmsgset_la_SOURCES): Add
      new files.
      * libmailutils/msgset/getitr.c (mu_msgset_get_iterator): Call
      mu_msgset_aggregate before doing anything.
      * libmailutils/msgset/getlist.c (mu_msgset_get_list): Likewise.
      * libmailutils/msgset/locate.c (mu_msgset_locate): Likewise.
      * libmailutils/msgset/parse.c (parse_msgrange): Remove duplicated
      code.
      * testsuite/msgset.c: Implement -neg option.
      Sergey Poznyakoff authored
  25. 27 Dec, 2011 1 commit
  26. 26 Dec, 2011 4 commits
    • * imap4d/util.c (util_parse_msgset): Remove. Use mu_msgset_parse_imap.
      All uses changed.
      (util_foreach_message): Change first argument to mu_msgset_t.
      All uses changed.
      * imap4d/imap4d.h: Likewise.
      
      * imap4d/copy.c: Use mu_msgset_t
      * imap4d/fetch.c: Likewise.
      * imap4d/search.c: Likewise.
      * imap4d/store.c: Likewise.
      Sergey Poznyakoff authored
    • * include/mailutils/imap.h (mu_imap_fetch,mu_imap_store)
      (mu_imap_store_flags,mu_imap_copy): Take mu_msgset_t as the
      message set parameter.
      * include/mailutils/imapio.h (mu_imapio_send_msgset): New proto.
      (mu_imapio_send_command_v,mu_imapio_send_command)
      (mu_imapio_send_command_e): Take additional mu_msgset_t parameter.
      All uses changed.
      * include/mailutils/msgset.h (mu_msgset_parse_imap): Input string
      is const.
      * include/mailutils/sys/imap.h (imap_command) <msgset>: New member.
      * libmailutils/imapio/sendmsgset.c: New file.
      * libmailutils/imapio/Makefile.am (libimapio_la_SOURCES): Add sendmsgset.c.
      * libmailutils/imapio/sendcmd.c (mu_imapio_send_command): Take additional
      mu_msgset_t parameter.
      * libmailutils/imapio/sendcmde.c (mu_imapio_send_command_e): Likewise.
      * libmailutils/imapio/sendcmdv.c (mu_imapio_send_command_v): Likewise.
      * libmailutils/msgset/parse.c (mu_msgset_parse_imap): Input string
      is const.
      * libproto/imap/copy.c (mu_imap_copy): Take mu_msgset_t as the
      message set parameter.
      * libproto/imap/fetch.c (mu_imap_fetch): Likewise.
      * libproto/imap/store.c (mu_imap_store): Likewise.
      * libproto/imap/storeflg.c (mu_imap_store_flags): Likewise.
      * libproto/imap/gencom.c (mu_imap_gencom): Send cmd->msgset.
      Sergey Poznyakoff authored
    • * libmailutils/mailbox/mailbox.c (_MBOX_CHECK_FLAGS): Fix return code.
      Sergey Poznyakoff authored
    • * configure.ac: Build libmailutils/msgset/Makefile
      * include/mailutils/msgset.h: New file.
      * include/mailutils/Makefile.am (pkginclude_HEADERS): Add msgset.h
      * include/mailutils/mailutils.h: Include mailutils/msgset.h
      * include/mailutils/sys/msgset.h: New file.
      * include/mailutils/sys/Makefile.am (sysinclude_HEADERS): Add msgset.h
      * include/mailutils/types.hin (mu_msgset_t): New type.
      * libmailutils/Makefile.am (SUBDIRS): Add msgset.
      (libmailutils_la_LIBADD): Add libmsgset.la
      * libmailutils/msgset/Makefile.am: New file.
      * libmailutils/msgset/add.c: New file.
      * libmailutils/msgset/aggr.c: New file.
      * libmailutils/msgset/clear.c: New file.
      * libmailutils/msgset/create.c: New file.
      * libmailutils/msgset/free.c: New file.
      * libmailutils/msgset/getitr.c: New file.
      * libmailutils/msgset/getlist.c: New file.
      * libmailutils/msgset/locate.c: New file.
      * libmailutils/msgset/parse.c: New file.
      * libmailutils/msgset/print.c: New file.
      * libmailutils/msgset/sub.c: New file.
      * libmailutils/tests/msgset.at: New file.
      * libmailutils/tests/msgset.c: New file.
      * libmailutils/tests/Makefile.am (noinst_PROGRAMS): Add msgset.
      (TESTSUITE_AT): Add msgset.at.
      * libmailutils/tests/testsuite.at: Include msgset.at.
      * testsuite/msgset.c: New file.
      * testsuite/Makefile.am (noinst_PROGRAMS): Add msgset.
      Sergey Poznyakoff authored
  27. 25 Dec, 2011 1 commit
    • * libproto/imap/mbox.c: Add some debugging messages.
      (_imap_mbx_gensync): New function shared among _imap_mbx_sync and
      _imap_mbx_expunge. It aggregates message numbers with same flags
      to separate message sets, thereby reducing the number of STORE
      commands sent to the server.
      Sergey Poznyakoff authored