Gromox - Groupware server backend with MAPI/HTTP, RPC/HTTP, IMAP, POP3 and PHP-MAPI support for grommunio

Overview

Gromox is the central groupware server component of grommunio. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Connectivity options include RPC/HTTP (Outlook Anywhere), IMAP, POP3, an SMTP-speaking LDA, and a PHP module with a Z-MAPI function subset.

Gromox relies on other components to provide a sensibly complete mail system, such as Postfix as a mail transfer agent, and grommunio-admin for user management. A web interface is available with grommunio-web. The grommunio Appliance ships these essentials and has a ready-to-run installation of Gromox.

Support is available through grommunio GmbH and its partners. See https://grommunio.com/ for details.

The source code repository and technical issue tracker can be found at https://github.com/grommunio/gromox .

Instructions for compilation are in doc/install.rst.

Comments
  • Makefile.am ordering issue

    Makefile.am ordering issue

    Looks like there is an issue with the ordering of files in Makefile.am because a dependency is not expressed. Installing/relinking of libgxm_exmdb_local.la fails because at that point in time libgromox_mapi.so is not yet built or something.

    libtool: warning: '/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/libgromox_common.la' has not been installed in '/usr/lib'
    libtool: install: /usr/bin/install -c .libs/rebuild /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/libexec/gromox/rebuild
    libtool: install: /usr/bin/install -c .libs/libgromox_epoll.so.0.0.0T /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_epoll.so.0.0.0
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_epoll.so.0.0.0 libgromox_epoll.so.0 || { rm -f libgromox_epoll.so.0 && ln -s libgromox_epoll.so.0.0.0 libgromox_epoll.so.0; }; })
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_epoll.so.0.0.0 libgromox_epoll.so || { rm -f libgromox_epoll.so && ln -s libgromox_epoll.so.0.0.0 libgromox_epoll.so; }; })
    libtool: install: /usr/bin/install -c .libs/libgromox_epoll.lai /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_epoll.la
    libtool: warning: relinking 'libgromox_mapi.la'
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1; /bin/sh "/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/libtool"  --silent --tag CXX --mode=relink g++ -Wall -Wmissing-declarations -std=c++17 -fvisibility=hidden -fv
    isibility-inlines-hidden -fvisibility=default -Os -fomit-frame-pointer -g -fpermissive -Wl,--as-needed -o libgromox_mapi.la -rpath /usr/lib lib/mapi/libgromox_mapi_la-apple_util.lo lib/mapi/libgromox_mapi_la-applefile.lo lib/mapi/libgromox_mapi_la-binhex.lo lib/mapi/libgromox_mapi_
    la-eid_array.lo lib/mapi/libgromox_mapi_la-element_data.lo lib/mapi/libgromox_mapi_la-html.lo lib/mapi/libgromox_mapi_la-idset.lo lib/mapi/libgromox_mapi_la-macbinary.lo lib/mapi/libgromox_mapi_la-oxcical.lo lib/mapi/libgromox_mapi_la-oxcmail.lo lib/mapi/libgromox_mapi_la-oxvcard.l
    o lib/mapi/libgromox_mapi_la-pcl.lo lib/mapi/libgromox_mapi_la-proptag_array.lo lib/mapi/libgromox_mapi_la-propval.lo lib/mapi/libgromox_mapi_la-restriction.lo lib/mapi/libgromox_mapi_la-rop_util.lo lib/mapi/libgromox_mapi_la-rtf.lo lib/mapi/libgromox_mapi_la-rtfcp.lo lib/mapi/libg
    romox_mapi_la-rule_actions.lo lib/mapi/libgromox_mapi_la-sortorder_set.lo lib/mapi/libgromox_mapi_la-tarray_set.lo lib/mapi/libgromox_mapi_la-tnef.lo lib/mapi/libgromox_mapi_la-tpropval_array.lo -lgumbo -lHX libgromox_common.la libgromox_email.la -inst-prefix-dir /home/buildozer/ap
    orts/testing/grommunio-gromox/pkg/grommunio-gromox)
    libtool: install: /usr/bin/install -c .libs/libgxm_alias_translator.soT /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/gromox/libgxm_alias_translator.so
    libtool: install: /usr/bin/install -c .libs/libgxm_alias_translator.lai /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/gromox/libgxm_alias_translator.la
    libtool: warning: relinking 'libgxm_exmdb_local.la'
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1; /bin/sh "/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/libtool"  --silent --tag CXX --mode=relink g++ -Wall -Wmissing-declarations -std=c++17 -fvisibility=hidden -fv
    isibility-inlines-hidden -Os -fomit-frame-pointer -g -fpermissive -avoid-version -module -Wl,--version-script=./default.sym -Wl,--as-needed -o libgxm_exmdb_local.la -rpath /usr/lib/gromox mda/exmdb_local/auto_response.lo mda/exmdb_local/bounce_audit.lo mda/exmdb_local/bounce_produc
    er.lo mda/exmdb_local/cache_queue.lo mda/exmdb_local/exmdb_client.lo mda/exmdb_local/exmdb_local.lo mda/exmdb_local/main.lo mda/exmdb_local/net_failure.lo -lpthread -lHX libgromox_common.la libgromox_email.la libgromox_exrpc.la libgromox_mapi.la -inst-prefix-dir /home/buildozer/apo
    rts/testing/grommunio-gromox/pkg/grommunio-gromox)
    /home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/.libs/libgromox_mapi.so: file not recognized: file format not recognized
    collect2: error: ld returned 1 exit status
    libtool:   error: error: relink 'libgxm_exmdb_local.la' with the above command before installing it
    make[2]: *** [Makefile:1986: install-pkglibLTLIBRARIES] Error 1
    make[2]: *** Waiting for unfinished jobs....
    libtool: install: /usr/bin/install -c .libs/libgromox_mapi.so.0.0.0T /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_mapi.so.0.0.0
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_mapi.so.0.0.0 libgromox_mapi.so.0 || { rm -f libgromox_mapi.so.0 && ln -s libgromox_mapi.so.0.0.0 libgromox_mapi.so.0; }; })
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_mapi.so.0.0.0 libgromox_mapi.so || { rm -f libgromox_mapi.so && ln -s libgromox_mapi.so.0.0.0 libgromox_mapi.so; }; })
    libtool: install: /usr/bin/install -c .libs/libgromox_mapi.lai /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_mapi.la
    libtool: warning: relinking 'libgromox_exrpc.la'
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1; /bin/sh "/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/libtool"  --silent --tag CXX --mode=relink g++ -Wall -Wmissing-declarations -std=c++17 -fvisibility=hidden -fv
    isibility-inlines-hidden -Os -fomit-frame-pointer -g -fpermissive -Wl,--as-needed -o libgromox_exrpc.la -rpath /usr/lib lib/exmdb_ext.lo lib/exmdb_rpc.lo libgromox_mapi.la -inst-prefix-dir /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox)
    libtool: install: /usr/bin/install -c .libs/libgromox_exrpc.so.0.0.0T /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_exrpc.so.0.0.0
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_exrpc.so.0.0.0 libgromox_exrpc.so.0 || { rm -f libgromox_exrpc.so.0 && ln -s libgromox_exrpc.so.0.0.0 libgromox_exrpc.so.0; }; })
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_exrpc.so.0.0.0 libgromox_exrpc.so || { rm -f libgromox_exrpc.so && ln -s libgromox_exrpc.so.0.0.0 libgromox_exrpc.so; }; })
    libtool: install: /usr/bin/install -c .libs/libgromox_exrpc.lai /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_exrpc.la
    libtool: warning: relinking 'libgromox_rpc.la'
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1; /bin/sh "/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1/libtool"  --silent --tag CXX --mode=relink g++ -Wall -Wmissing-declarations -std=c++17 -fvisibility=hidden -fv
    isibility-inlines-hidden -fvisibility=default -Os -fomit-frame-pointer -g -fpermissive -Wl,--as-needed -o libgromox_rpc.la -rpath /usr/lib lib/rpc/libgromox_rpc_la-arcfour.lo lib/rpc/libgromox_rpc_la-crc32.lo lib/rpc/libgromox_rpc_la-hmacmd5.lo lib/rpc/libgromox_rpc_la-ndr.lo lib/r
    pc/libgromox_rpc_la-ntlmdes.lo lib/rpc/libgromox_rpc_la-ntlmssp.lo -lcrypto -lHX libgromox_common.la -inst-prefix-dir /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox)
    libtool: install: /usr/bin/install -c .libs/libgromox_rpc.so.0.0.0T /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_rpc.so.0.0.0
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_rpc.so.0.0.0 libgromox_rpc.so.0 || { rm -f libgromox_rpc.so.0 && ln -s libgromox_rpc.so.0.0.0 libgromox_rpc.so.0; }; })
    libtool: install: (cd /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib && { ln -s -f libgromox_rpc.so.0.0.0 libgromox_rpc.so || { rm -f libgromox_rpc.so && ln -s libgromox_rpc.so.0.0.0 libgromox_rpc.so; }; })
    libtool: install: /usr/bin/install -c .libs/libgromox_rpc.lai /home/buildozer/aports/testing/grommunio-gromox/pkg/grommunio-gromox/usr/lib/libgromox_rpc.la
    libtool: warning: remember to run 'libtool --finish /usr/lib'
    make[2]: Leaving directory '/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1'
    make[1]: *** [Makefile:4498: install-am] Error 2
    make[1]: Leaving directory '/home/buildozer/aports/testing/grommunio-gromox/src/gromox-gromox-1.1'
    make: *** [Makefile:4491: install] Error 2
    
    opened by Thermi 5
  •  error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

    error: invalid conversion from 'const char*' to 'char*' [-fpermissive]

    exch/exmdb_provider/message.cpp: In function 'long int message_rectify_message(const char*, const MESSAGE_CONTENT*, MESSAGE_CONTENT*)':
    exch/exmdb_provider/message.cpp:1926:9: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
     1926 |    pc = account;
          |         ^~~~~~~
          |         |
          |         const char*
    exch/exmdb_provider/message.cpp: In function 'long int message_rule_new_message(long int, const char*, const char*, uint32_t, sqlite3*, uint64_t, uint64_t, const char*, DOUBLE_LIST*, DOUBLE_LIST*)':
    exch/exmdb_provider/message.cpp:4254:12: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
     4254 |       pc = account;
          |            ^~~~~~~
          |            |
          |            const char*
    make[1]: *** [Makefile:3433: exch/exmdb_provider/message.lo] Error 1
    

    Needs a fix.

    opened by Thermi 5
  • Accessing admin interface

    Accessing admin interface

    Hi all,

    after installing the appliance as virtual machine on my home lab VMware ESXi host and installing nano and open-vm-tools, I now want to start with configuring Grammm. But I can't access the URL https:///grammm/admin/interface as it is shown on the console of the appliance.

    I get this error:

    Die Antwort von hat zu lange gedauert ERR_CONNECTION_TIMED_OUT

    I can access the appliance console via SSH. Because of the incomplete documentation I don't know what to do next.

    Kind Regards.

    opened by TineUser 3
  • Documentation?

    Documentation?

    Hi all,

    I'm interested in testing Grammm in my home lab. But I don't find any documention about the requirements of Grammm and how to install it.

    Can you provide the documentation, please?

    Thank You.

    opened by TineUser 3
  • gromox/lib/dbop_mysql.cpp:53 - Admin Role name allowing for only 32 characters

    gromox/lib/dbop_mysql.cpp:53 - Admin Role name allowing for only 32 characters

    When creating domains through the admin web interface and checking "Create domain admin role", a database error occurs if the domain name is longer than 17 characters since the generated role name results in "Domain Admin ({DomainName})".

    We tracked the issue down to line 53 in gromox/lib/dbop_mysql.cpp where the admin roles table gets initially created. There the name field is set to be 32 characters long. There were no "patches" found in the table upgrades at the bottom of the file.

    We would advise in allowing for longer names, 64 characters should suffice.

    (Some other varchar-fields from other tables may need some overthinking too, but nothing struck us so far except maybe telephone numbers being only 20 characters while titles allowing for up to 128 characters)

    opened by MrPikPik 2
  • grommunio mapi.so side by side with kopano mapi.so

    grommunio mapi.so side by side with kopano mapi.so

    Is that somehow easily possible? Right now both projects provide the php .so and .ini for mapi. Is it possible to easily move or patch the projects to use their corresponding mapi implementations?

    opened by Thermi 2
  • Imap Status command failing for folder name with spaces

    Imap Status command failing for folder name with spaces

    Hello together, while trying the Grammm appliance, I encountered a severe bug in the Gromox Imap implementation with respect to the IMAP specification. By default, the Grammm web interface automatically creates a default folder called "Deleted Items" for trash purpose (which indeed is common default behaviour of mail servers). When connecting with IMAP, every tested client at first successfully connects, but fails when fetching folder status information.

    Here is a raw IMAP log from a connecting client indicating that such a folder with space in its name should be escaped/enclosed in brackets: 17:25:12.377 Imap::Mailbox::NumberOfMessagesTask attached to INBOX Completed 17:25:12.389 <<< * STATUS Deleted Items (MESSAGES 0 UNSEEN 0 RECENT 0) 17:25:12.389 <<< * STATUS Deleted Items (MESSAGES 0 UNSEEN 0 RECENT 0) 8 OK STATUS completed 17:25:12.389 UnexpectedHere Could not parse list: expected a list enclosed in (), but got something else instead 17:25:12.389 Imap::Mailbox::NumberOfMessagesTask attached to Deleted Items Failed: Going offline

    I like very much the idea of Grammm as an promising alternative for Exchange, but IMAP is a major requirement and established mail protocol. I'm looking forward for an answer and progress in the entire development of Grammm!


    I'm aware, this is not related to Gromox development. But another aspect I encountered while testing the appliance is, that the Gromox-Imap configuration, which is prepared by the Appliance configuration, is wrong. In the configuration file the config directive "imap_support_stls" is prepared, but from looking in the source code of the Gromox-Imap module, this very directive should be called "imap_support_starttls". It seems, that these two possibilities doesn't fit to each other.

    Where can I post/send to such appliance issues I encountered??

    Thank you very much for your support and your great work with Grammm!

    opened by mcrainydrop 2
  • Update main.cpp

    Update main.cpp

    Fix for (https://github.com/grommunio/gromox/issues/11) to correct config parsing from mysql_passwd to mysql_password per documentation for gromox-adapter and adapter.cfg.

    fixes #11

    opened by obsidiangroup 1
  • gromox-adapter config parsing wrong value

    gromox-adapter config parsing wrong value

    Both /var/log/gromox/sa.log AND /var/log/mysql/mysqld.log are showing the errors:

    /var/log/gromox/sa.log: 2021/09/26 13:59:58 [data_source]: Failed to connect to mysql server, reason: Access denied for user 'grommunio'@'localhost' (using password: NO) 2021/09/26 14:00:29 [data_source]: Failed to connect to mysql server, reason: Access denied for user 'grommunio'@'localhost' (using password: NO) 2021/09/26 14:00:30 [data_source]: Failed to connect to mysql server, reason: Access denied for user 'grommunio'@'localhost' (using password: NO) 2021/09/26 14:00:31 [data_source]: Failed to connect to mysql server, reason: Access denied for user 'grommunio'@'localhost' (using password: NO)

    /var/log/mysql/mysqld.log: 2021-09-26 17:54:49 61 [Warning] Access denied for user 'grommunio'@'localhost' (using password: NO) 2021-09-26 17:54:50 62 [Warning] Access denied for user 'grommunio'@'localhost' (using password: NO) 2021-09-26 17:54:51 65 [Warning] Access denied for user 'grommunio'@'localhost' (using password: NO)

    These errors are constant, and seem the prevent mail delivery.

    After investigating and experimenting, it appears that mysql_password value in /etc/gromox/adapter.cfg is not being parsed correctly.

    (https://docs.grommunio.com/man/adaptor.8gx.html) states the config value to be set as: mysql_password Default: (unset)

    However, when looking at (https://github.com/grommunio/gromox/blob/master/tools/adaptor/main.cpp), the way the config file is parsed states (line 78):

    	data_source_init(pconfig->get_value("mysql_host"),
    		strtol(pconfig->get_value("mysql_port"), nullptr, 0),
    		pconfig->get_value("mysql_username"), pconfig->get_value("mysql_passwd"),
    		pconfig->get_value("mysql_dbname"));
    

    Thus when reading the config file, the token it is looking for is mysql_passwd and not mysql_password as the documentation states.

    The fix for this is either to update the documentation to state the values are mysql_passwd and update the installation to write these values, or to change pconfig->get_value("mysql_passwd"), to pconfig->get_value("mysql_password"),

    I will, if allowed, submit a PR with the change to pconfig->get_value();

    opened by obsidiangroup 1
  • IMAP compliance of gromox-imap

    IMAP compliance of gromox-imap

    I would like to suggest to run ImapTest against gromox-imap as part of internal tests to address failures such as 'server internal error, midb internal error' (in response to common cases, see e.g. example below) to ensure at basic IMAP standards compliance.

    $ telnet grammm.net 143
    Trying 2a01:4f8:212:3154::2...
    Connected to grammm.net.
    Escape character is '^]'.
    * OK grammm.net service ready
    0 LOGIN <snip> <snap>
    0 OK logged in
    0 CREATE "Abc"
    0 OK CREATED completed
    0 SELECT "Abc"
    0 NO server internal error, midb internal error
    0 LIST "" *
    * LIST (\HasNoChildren) "/" "INBOX"
    * LIST (\HasNoChildren) "/" "Drafts"
    * LIST (\HasNoChildren) "/" "Sent Items"
    * LIST (\HasNoChildren) "/" "Deleted Items"
    * LIST (\HasNoChildren) "/" "Junk E-mail"
    0 OK LIST completed
    0 DELETE "Abc"
    0 OK DELETE completed
    0 CREATE "Abc"
    0 NO server internal error, midb internal error
    

    Interestingly, at this point the folder "Abc" still exists for this user according to grammm web; and if I delete it there, I can re-create it using IMAP. Btw, the IMAP server response should IMHO be "OK CREATE completed" rather "OK CREATED completed".

    opened by robert-scheck 1
  • gromox-imap doesn't advertise STARTTLS capability, but provides it?!

    gromox-imap doesn't advertise STARTTLS capability, but provides it?!

    As of writing, gromox-imap doesn't advertise the STARTTLS capability, but it still provides it?!

    $ telnet grammm.net 143
    Trying 2a01:4f8:212:3154::2...
    Connected to grammm.net.
    Escape character is '^]'.
    * OK grammm.net service ready
    0 CAPABILITY
    * CAPABILITY IMAP4rev1 XLIST SPECIAL-USE ID UNSELECT UIDPLUS IDLE AUTH=LOGIN
    0 OK CAPABILITY completed
    1 STARTTLS
    1 OK begin TLS negotiation now
    

    If gromox-imap provides STARTTLS support, it should advertise it when requesting the CAPABILITY, otherwise it would make sense to not accept the STARTTLS command either. Note that gromox-pop3 behaves correctly and advertises STLS capability.

    opened by robert-scheck 1
  • use shm_mkstemp(3) on OpenBSD where O_TMPFILE is not available

    use shm_mkstemp(3) on OpenBSD where O_TMPFILE is not available

    O_TMPFILE is not available on OpenBSD however we can use shm_mkstemp(3) to generate a temporary shared memory object that we can unlink right after creating it so that when all the file descriptors referencing it are closed, the object will be gone.

    opened by rnagy 1
  • lib/email/mjson.cpp:1133:5: warning: 'b_digit' may be used uninitialized in this function [-Wmaybe-uninitialized]

    lib/email/mjson.cpp:1133:5: warning: 'b_digit' may be used uninitialized in this function [-Wmaybe-uninitialized]

    lib/email/mjson.cpp: In function 'long int mjson_record_node(MJSON*, char*, int, int)':
    lib/email/mjson.cpp:1133:5: warning: 'b_digit' may be used uninitialized in this function [-Wmaybe-uninitialized]
     1133 |     if (TRUE == b_digit && ',' == value[i]) {
          |     ^~
    
    opened by Thermi 1
Releases(gromox-1.31)
  • gromox-1.31(Aug 30, 2022)

    Enhancements:

    • kdb2mt: add a size column to the disambiguation table
    • exmdb_provider: added the exmdb_search_yield and exmdb_search_nice config directives
    • exmdb_provider: add a vacuum RPC (and expose via gromox-mbop(8gx))
    • emsmdb: implement cached mode cross-store move support

    Fixes:

    • kdb2mt: filter unwanted properties on writeout rather than readout (rerecognize special folders)
    • oxcical: recurring appointments now have their summary (effective ... from 02:00 to 02:15) displayed without uncanny time shift
    • oxcical: oxcical_export_timezone had missed emitting BYMONTHDAY subvalues
    • oxcical: avoid month wraparound with recurring events in December
    • dscli: fix nullptr deref when -x option is used
    • nsp: show DT_DISTLIST icon for mlists
    • oxcical: set PidLidRecurring and PidLidRecurrenceType tags when importing recurring events
    • Check for iconv capabilities on startup so that we do not start on containers with too few libc components installed
    • zcore: avoid UAF when unpacking SMIME messages
    • imap: do not emit body-QP in () groups when encoded-word-QP is expected
    • imap, pop3: avoid hanging clients if response buffer is full

    Changes:

    • The default value for exmdb_search_pacing was changed to 250 to improve interactivity with OL during online search.
    • oxvcard: disable pedantic behavior on import
    Source code(tar.gz)
    Source code(zip)
    gromox-1.31.tar.asc(228 bytes)
    gromox-1.31.tar.zst(1.89 MB)
  • gromox-1.28(Jul 25, 2022)

    Enhancements:

    • oxcmail: add support for multi-iCal and multi-vCard support
    • php_mapi: add mapi_icaltomapi2 and mapi_vcftomapi2 APIs
    • emsmdb, zcore: Send-As support
    • midb_agent: make midb command buffer size for SRHL/SRHU configurable

    Fixes:

    • freebusy: do not publicize private recurrence exceptions
    • Delayed Sending had left messages in Outbox
    • midb: P-DTLU command incorrectly sorted by received date
    • emsmdb: the contact folder list erroneously rejected sort requests that grouped and sorted by the same column
    • oxcical: add missing PR_ATTACH_METHOD to iCal appointment collection members
    • oxvcard: do not map unrecognized types of telephone numbers to PR_RADIO_TELEPHONE_NUMBER on import
    • oxvcard: avoid filing PR_NORMALIZED_SUBJECT with garbage
    • exch: PR_SENDER_ENTRYID was filled with the wrong value in delegate mail sending
    • exmdb_provider: avoid sending PR_DISPLAY_NAME to clients twice

    Changes:

    • The config directives "service_plugin_list", "service_plugin_path", "hpm_plugin_list", "hpm_plugin_path", "proc_plugin_list", "proc_plugin_path", "mpc_plugin_list", "mpc_plugin_path" have been removed.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.28.tar.asc(228 bytes)
    gromox-1.28.tar.zst(1.86 MB)
  • gromox-1.27(Jul 10, 2022)

    Fixes:

    • nsp: repaired a nullptr deref with the resolvenamesw RPC
    • nsp: fix erroneous writeout to path /delegates.txt (would always fail due to absence of filesystem permission)
    • nsp: disable OneOff synthesis for non-existing GAL objects
    • mh_nsp: fix seekentries RPC performing garbage ANR matching
    • oxcmail: avoid running the encoded-word decoder in sender/recipient names twice (umlaut breakage)
    • oxcical: avoid crash when RRULE:BYMONTH=12 is used
    • exmdb_local: reword duplicate error strings for delivery failures

    Enhancements:

    • kdb2mt: support recovering broken attachments lacking PR_ATTACH_METHOD
    • kdb2mt: remove PK-1005 warning since now implemented
    • delmsg: support mailbox lookup using just the mailbox directory name
    • http: added the msrpc_debug config directive
    • nsp: added the nsp_trace config directive
    • mh_nsp: make the addition of delegates functional
    Source code(tar.gz)
    Source code(zip)
    gromox-1.27.tar.asc(228 bytes)
    gromox-1.27.tar.zst(1.86 MB)
  • gromox-1.26(Jun 28, 2022)

    1.26 (2022-06-28)

    Fixes:

    • imap: sender/recipient umlauts were not represented correctly, which has been fixed
    • zcore: repair retrieval of PR_EMS_AB_THUMBNAIL_PHOTO
    • eml2mt: avoid putting non-vcard messages into Contacts by default
    • oxcmail: better handle To/Cc/Bcc/Reply-To fields when the target mailbox display name contains a U+002C character.
    • zcore: allow settings freebusy permission bits for calendars

    Enhancements:

    • http, imap, pop3, delivery-queue: new config directives http_listen_addr, imap_listen_addr, pop3_listen_addr and lda_listen_addr
    • php_mapi: support imtomapi parse_smime_signed option
    • midb: treat folders with absent PR_CONTAINER_CLASS like IPF.Note
    • mt2exm: added a -D option that will do a delivery rather than import
    • imap: raised the default value for context_average_mitem to 64K

    Changes:

    • autodiscover: enable default advertisement of RPCH & MH irrespective of User-Agent
    • midb, zcore, exmdb_local: remove config directive default_timezone
    Source code(tar.gz)
    Source code(zip)
    gromox-1.26.tar.asc(228 bytes)
    gromox-1.26.tar.zst(1.86 MB)
  • gromox-1.25(Jun 12, 2022)

    Fixes:

    • exmdb_provider: repair PR_MEMBER_NAME transition (ACL table contents)
    • zcore: fix randomly occurring set_permission failures
    • autodiscover: resolve & in displaynames being misrepresented
    • autodiscover: force-remove single quotes from ini values
    • imap: improved the tokenization for unusual values found in the From/To/Reply-To etc. headers
    • imap: stop emitting excess parenthesis pairs for RFC822 field values during FETCH
    • imap: stop offering the STARTTLS capability keyword when the STARTTLS command can, at the same time, not be issued anyway
    • imap: IMAP commands emitted to the log (under imap_cmd_debug) were truncated sometimes
    • midb: resolve potential crash when the IMAP SEARCH command is used

    Enhancements:

    • imap: emit gratuitous CAPABILITY lines upon connect and login
    • imap, pop3: support recognizing LF as a line terminator as well (other than CRLF)

    Changes:

    • oxcmail: stop emitting zero-length display-names
    • oxcmail: always generate angle brackets for exported addresses
    Source code(tar.gz)
    Source code(zip)
    gromox-1.25.tar.asc(228 bytes)
    gromox-1.25.tar.zst(1.86 MB)
  • gromox-1.24(Jun 1, 2022)

    Enhancements:

    • Added a config directive tls_min_proto so one can set a minimum TLS standard when your distro doesn't have crypto-policies
    • autodiscover.ini: new directives advertise_mh and advertise_rpch for finer grained control over individual protocol advertisements; replaces mapihttp.
    • exmdb_provider: lifted the folder limit from 10k to 28 billion
    • oxcmail: cease excessive base64 encoding.
    • Messages are now preferably encoded as quoted-printable during conversion to Internet Mail format. This might help with spam classification.
    • delivery-queue: the maximum mail size is now strictly enforced rather than rounded up to the next 2 megabytes
    • gromox-dscli: the -h option is no longer strictly needed, it will be derived from the -e argument if absent

    Fixes:

    • http: resolve a crash on shutdown due to wrong order of teardown
    • exmdb_provider: fix buffer overread (crash) when a truncated /cid/N file is read.
    • emsmdb: fix buffer overread (crash) when common_util_check_message_class is called with an empty string.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.24.tar.asc(228 bytes)
    gromox-1.24.tar.zst(1.86 MB)
  • gromox-1.23(May 14, 2022)

    Fixes:

    • exmdb_provider: fix search opening the exmdb store with wrong flags and skipping 200 messages during the search operation
    • exmdb_provider: speed up Online Mode searches by 14 to 18-fold
    • mt2exm: avoid crash when an import message has no properties at all

    Enhancements:

    • exmdb_provider: add a config directive exmdb_search_pacing

    Changes:

    • kdb2mt: skip IPM.Microsoft.FolderDesign.NamedView rather than IPM.MessageManager messages
    Source code(tar.gz)
    Source code(zip)
    gromox-1.23.tar.asc(228 bytes)
    gromox-1.23.tar.zst(1.85 MB)
  • gromox-1.22(May 12, 2022)

    Fixes:

    • imap: add a default for the imap_cmd_debug directive
    • service_loader: resolve crash when first module is unloadable
    • eml2mt, exm2eml: rectify wrong serivce plugin search path

    Enhancements:

    • eml2mt: add iCalendar and vCard file import
    • doc: added configuration file overview lists to gromox(7)
    • kdb2mt: skip IPM.MessageManager FAI messages (cause Outlook to sometimes refuse opening a folder)

    Changes:

    • The /usr/libexec/gromox/autodiscover command has been renamed to just gromox-dscli.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.22.tar.asc(228 bytes)
    gromox-1.22.tar.zst(1.85 MB)
  • gromox-1.21(May 8, 2022)

    Fixes:

    • lib: repair wrong propid for PR_IPM_PUBLIC_FOLDERS_ENTRYID
    • exmdb_provider: avoid use-after-free crash related to Public Store read state username handling
    • oxcmail: rework classification of S/MIME mails
    • email_lib: make ICAL_TIME::twcompare behave symmetrically
    • oxcical: appointments were prone to being in the wrong timezone due to DTSTART values being emitted with dayofmonth 32..35 in certain years
    • exmdb_provider: output autosynthesized HTML in the proper character set

    Enhancements:

    • doc: mention issues related to senders/recipients with ZARAFA address type
    • autodiscover: test URLs inside Autodiscover responses for validity
    • exmdb_provider: add exmdb_pf_read_states config directive
    • exmdb_provider: add exmdb_pf_read_per_user config directive
    • imap: add directive imap_cmd_debug

    Changes:

    • zcore: return ecNotFound from mapi_getstoreentryid when unable to resolve user
    Source code(tar.gz)
    Source code(zip)
    gromox-1.21.tar.asc(228 bytes)
    gromox-1.21.tar.zst(1.95 MB)
  • gromox-1.20(Apr 30, 2022)

    Fixes:

    • Resolve a use-after-free in gromox-eml2mt
    • oxcmail: conversion of Reply-To MAPI field to Internet Mail had only used the last ONEOFF-type recipient, now it uses all ONEOFF recipients.
    • oxcmail: set IPM.Note.SMIME.MultipartSigned only for incoming S/MIME mails, not for OpenPGP mails.
    • autodiscover: Change the way autodiscover.ini is parsed. This allows a few more non-alphanumeric characters in the MariaDB password. ; is still unusable.
    • exmdb_provider: Evaluate restrictions against absent values differently; this makes messages without a sensitivity tag and which are located in a non-default store visible in Outlook again.
    • pop3: SIGHUP now really reloads pop3_cmd_debug from the .cfg file

    Changes:

    • zcore: entryids for PAB entries now follow the ZCSAB entryid scheme

    Known issues:

    • oxcmail: Reply-To still skips EX-type recipients (W-1964)
    Source code(tar.gz)
    Source code(zip)
    gromox-1.20.tar.asc(228 bytes)
    gromox-1.20.tar.zst(1.85 MB)
  • gromox-1.19(Apr 14, 2022)

    Enhancements:

    • kdb2mt: added the --with-acl option for partial conversion of ACLs
    • pff2mt: added the --only-obj option to extract a specific object
    • mt2exm: added the -B option for the placement of unanchored messages
    • eml2mt: new utility to import mails from files
    • exmdb_provider: new config directive exmdb_schema_upgrades
    • midb: new config directive midb_schema_upgrades
    • mkprivate, mkpublic and mkmidb now recognize the -U option to upgrade SQLite database schemas manually
    • mbop: new utility
    • rebuild: added progress indicator
    • zcore: new config directive zcore_max_obh_per_session
    • emsmdb: new config directives emsmdb_max_obh_per_session, emsmdb_max_cxh_per_user to allow higher resource use when a lot of stores are used by an Outlook profile (warning W-1580).

    Fixes:

    • emsmdb: no longer send folder named properties in ICS streams
    • mapi_lib: resolve use-after-free in idset::remove
    • http: cure a crash in pdu_processor_auth_bind_ack when NTLMSSP authentication is attempted
    • exmdb_client: when the exmdb server is not reachable, fail immediately rather than timeout
    • Change SQLite db schema to use BLOB column type/affinity instead of NONE, resolving an unwanted auto-conversion from certain strings that look like numbers, e.g. E.164 telephone numbers without spaces.
    • lib: add missing RFC 2047 Base64 recognition to some mail functions
    • lib: autodetect iso-2022-jp-ms (un)availability in iconv to resolve conversion problems with RFC 2047 encoded-words using iso-2022-jp

    Behavioral changes:

    • rebuild: no longer performs implicit schema updates; see gromox-mkprivate/mkpublic/mkmidb -U, or the exmdb_schema_upgrades directive for replacement.
    • rebuild: no longer performs db unload/reload; this operation moved to gromox-mbop.
    • zcore: move socket creation after privilege drop
    Source code(tar.gz)
    Source code(zip)
    gromox-1.19.tar.asc(228 bytes)
    gromox-1.19.tar.zst(1.84 MB)
  • gromox-1.18(Mar 19, 2022)

    Enhancements:

    • The mkprivate, mkpublic, mkmidb utilities gained an -f option.
    • autodiscover: New diagnostic utility to analyze Autodiscover message from the command-line.
    • gromox-exm2eml: New diagnostic utility to export one message as Internet Mail.
    • delmsg: New diagnostic utility to delete messages in an ICS-conforming way.
    • exmdb_provider: New config directive "sqlite_debug" for enabling analysis of all SQLite queries made.
    • nsp: New config directive "nsp_trace" for enabling analysis of (some) NSPI RPC calls and their parameters.

    Fixes:

    • exmdb_provider: Abort asynchronous search folder population when the very search folder has been closed.
    • exmdb_providier: do not close idle databases that still have active notification listeners
    • nsp: Fix janky row seeking and crashing when using the name search feature in Outlook's Address Book dialog.
    • mysql_adaptor: Lookup of rooms and equipments by maildir has been restored.
    • midb had erroneously processed only the first command for every network read
    • exmdb_client again groups notify connections per PID

    Changes:

    • nsp: When performing a name search in Outlook's Address Book dialog, scan the entire table rather than just the entries from the currently highlighted line forwards.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.18.tar.asc(228 bytes)
    gromox-1.18.tar.zst(1.80 MB)
  • gromox-1.17(Mar 9, 2022)

    Enhancements:

    • emsmdb: Faststream temporary state files are now written to /var/tmp/gromox instead and with O_TMPFILE, because they need not be persisted at all, and if /var/lib/gromox is a network filesystem, the network roundtrip can be eliminated.
    • exmdb_provider: emit a log message when host not in exmdb_acl
    • ldap_adaptor: add a ldap_edirectory_workarounds config directive
    • zcore: user settings are saved to disk much more rapidly now (Settings could get lost when zcore terminated unexpectedly because of very long caching periods.)
    • zcore: allow reducing zarafa_threads_num directive to a minimum of 1

    Fixes:

    • oxcmail: conversion of recurring meeting requests from MAPI to IM/RFC5322 misconstructed the exmdb RPC for querying PidLidTimeZoneStruct, likely failing the export as a whole.
    • exmdb_provider: avoid a SQL query error when placing a new message into public folder
    • exmdb_provider: delete W-1595/W-1596 false positive warning
    • exmdb_provider: avoid giving a negative/wrapped unread message count for folders (PR_CONTENT_UNREAD)
    • exmdb_provider: the presence of PR_PARENT_DISPLAY (normally a computed property) in the sqlite db (hence not computed) had caused the read_message RPC to fail
    • kdb2mt: skip importing PR_PARENT_DISPLAY
    • kdb2mt: skip importing PR_ACL_DATA, PR_RULES_DATA, PR_EC_WEBACCESS_SETTINGS_JSON (has KC-specific entryids that have no meaning when in Gromox)
    • zcore: cure an out-of-bounds access in container_object_get_user_table_all_proptags
    • zcore: fix mis-setting of the internal/external OOF message
    • mkmidb: fix a startup crash (add missing CFG_TABLE_END marker)
    • authmgr: zero-terminate reason string
    Source code(tar.gz)
    Source code(zip)
    gromox-1.17.tar.asc(228 bytes)
    gromox-1.17.tar.zst(1.80 MB)
  • gromox-1.16(Feb 11, 2022)

    Enhancements:

    • exchange2grommunio: add robust file lock detection for exported PST
    • exch: avoid re-use of Message-Id when message is submitted twice
    • pff2mt: do not choke on NO_ATTACHMENT objects (resolves PF-1012 warning)

    Fixes:

    • emsmdb: oxcfold_deletemessages had incorrectly tested for PR_READ
    • emsmdb: fix OL entering infinite loop deleting messages with read receipt requests
    • zcore: PR_SENT_REPRESENTING_SEARCH_KEY was not set on submit
    • exmdb_provider: restore fxstream ability to read PT_OBJECT attachments
    • emsmdb: resolve a case of synchro repetition occurring in clients
    • rpc_lib: clear NTLMSSP_CTX and resolve a crash due to garbage pointers
    Source code(tar.gz)
    Source code(zip)
    gromox-1.16.tar.asc(228 bytes)
    gromox-1.16.tar.zst(1.82 MB)
  • gromox-1.15(Feb 4, 2022)

    Fixes:

    • oxcical: repair import of ICAL recurrences being 60x longer than projected
    • oxcical: rerecognize busy status type "OOF"
    • mapi_lib: cease emission of InTransitMessageCorrelator property to RFC5322 header as garbage / stop emitting non-string PS_INTERNET_HEADERS properties completely.
    • imap/pop3: resolve dlname type mismatch warnings
    • email_lib: fix infinite loop in ical_check_empty_line
    • midb: fix nullptr deref when startup has aborted
    • http: fix double free when startup has aborted

    Enhancements:

    • emsmdb: add log messages for failed delegate lookup
    • exchange2grommunio: replace PIPESTATUS test by something workable
    • zcore: allow setting Out Of Office status of other mailboxes
    Source code(tar.gz)
    Source code(zip)
    gromox-1.15.tar.asc(228 bytes)
    gromox-1.15.tar.zst(1.83 MB)
  • gromox-1.14(Jan 29, 2022)

    Enhancements:

    • Add powershell script for Exchange to grommunio/Gromox migration (source tree only)
    • zcore: enhance mapi_getmsgstoretable to show all stores with access permissions
    • pff2mt: add --with-hidden/--without-hidden
    • kdb2mt: add --with-hidden/--without-hidden

    Fixes:

    • pff2mt: scan attachments for named property info too
    • midb/imap: add back recognition for condition keywords
    • emsmdb: MAPI bodies between 4K and 8K were not displayed correctly due to propval_utf16_len giving the wrong codepoint count
    • emsmdb/rpclib: fix crash during NTLM negotiation
    • exmdb_provider: cure "INSERT INTO search_result" SQL collision warnings
    • mapi_lib: make conversion of S/MIME MAPI objects to RFC5322 independent of the number of header lines

    Changes:

    • delivery: replace domain_list text file plugin by an implementation searching SQL directly
    Source code(tar.gz)
    Source code(zip)
    gromox-1.14.tar.asc(228 bytes)
    gromox-1.14.tar.zst(1.83 MB)
  • gromox-1.13(Jan 17, 2022)

    Enhancements:

    • pff2mt: support reading multi-value variable-length property types, and obscure single-value types.
    • pff2mt: support reading receivefolders for Inbox mapping (only OST files have the desired info)

    Fixes:

    • midb: Avoid storing the primary email address in midb.sqlite3, and instead derive it from SQL. (pop3 used to reject DELE commands after the email address of a user was changed.)

    Changes:

    • The adaptor(8gx) daemon has been removed following its earlier obsoletion.
    • telnet console support has been removed.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.13.tar.asc(228 bytes)
    gromox-1.13.tar.zst(1.82 MB)
  • gromox-1.12(Jan 9, 2022)

    Enhancements:

    • midb: SIGHUP will now reload the midb_cmd_debug directive
    • lib: add error reporting to sqlite3_exec calls
    • pam_gromox: Additional service mode checks. One can now use e.g. auth required pam_gromox.so service=chat in /etc/pam.d/xyz to test for the CHAT privilege bit.
    • doc: document more MRO field caveats for gromox-kdb2mt
    • kdb2mt: analyze Receive Folder Table and map inbox to inbox when -s is used
    • kdb2mt: recognize PT_MV_SHORT and PT_MV_CLSID typed properties
    • zcore: support emission of PR_ACCESS in content tables
    • mkprivate, mkpublic: generate mailbox directory structure if it does not exist yet

    Fixes:

    • imap: resolve the Thunderbird folder view showing all rows without subject and sender
    • Recognize config directives with intervals of value "0" without unit
    • pff2mt: recipient objects were erroneously skipped
    • pff2mt: scan all available record sets for named properties
    • mkprivate: a base translation for Conversation Action Settings was restored; the folder is no longer named "FLG-ERR-2".

    Changes:

    • mod_fastcgi: switch URL processing to case-sensitive
    • mda: alias resolution is now done by the delivery(8gx) daemon itself throught the new alias_resolve(4gx) module, and the adaptor(8gx) daemon's textfile outputs are no longer used.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.12.tar.asc(228 bytes)
    gromox-1.12.tar.zst(1.86 MB)
  • gromox-1.11(Dec 16, 2021)

    Enhancements:

    • mt2exm: perform named property translation on folder properties, message recipient properties and attachment properties

    Fixes:

    • mapi_lib: Resolved a crash when ingesting an iCal attachment with SUMMARY lines and time-based as well as timeless exceptions.
    • mapi_lib: Resolved a crash when emitting messages that have some properties from the PS_INTERNET_HEADERS group set.
    • delivery-queue: The message_enqueue plugin had written an improperly-sized integer to mail data files, and message_dequeue could not read them. (32-bit platforms only)
    • daemons: resolve a slow startup under strace

    Changes:

    • http, imap, pop3: Addresses in log messages are now (more consistently) in square brackets.
    • kdb2mt: skip over IMAP properties when reading databases
    Source code(tar.gz)
    Source code(zip)
    gromox-1.11.tar.asc(833 bytes)
    gromox-1.11.tar.zst(1.85 MB)
  • gromox-1.10(Dec 7, 2021)

    Fixes:

    • exmdb_provider: cease adding a broken recipient when deleting last recipient
    • exmdb_provider: synthesize mandatory recipient properties essential for MSMAPI (the source of incomplete recipients is from imported KGWC databases)
    • emsmdb: work around Outlook not displaying any body in Cached Mode when there is no HTML body
    • mapi_lib: avoid making underscores in subjects when there are umlauts

    Enhancements:

    • exmdb_provider: add config directives mbox_contention_warning and mbox_contention_reject
    Source code(tar.gz)
    Source code(zip)
    gromox-1.10.tar.asc(833 bytes)
    gromox-1.10.tar.zst(1.85 MB)
  • gromox-1.9(Nov 27, 2021)

    Fixes:

    • emsmdb: fix dangling data pointer when setting PR_LAST_MODIFIER_NAME
    • emsmdb: propagate "modified" flag upwards when saving embedded messages
    • exmdb_provider: raise limit for local replica IDs

    Enhancements:

    • kdb2mt: support -s for public stores
    • exmdb_provider: add config directive dbg_synthesize_content
    • Recognize MH/ABK PropertyRestriction format for the nspiResolveNames RPC

    Changes:

    • On mail ingestion, the Content-Disposition header value is now used instead of the Content-ID header presence to determine whether an attachment is inline (and possibly "hidden").
    Source code(tar.gz)
    Source code(zip)
    gromox-1.9.tar.asc(833 bytes)
    gromox-1.9.tar.zst(1.85 MB)
  • gromox-1.8(Nov 13, 2021)

    Fixes:

    • mysql_adaptor: fix nullptr deref in get_user_info
    • exchange_nsp: fix crash when an addressbook datum was to be copied
    • exchange_emsmdb: do not send unresolvable namedprops into faststream; reduce "Synchronization Issues" messages popping up in Outlook
    • zcore: integer values of freeform user properties were truncated
    • zcore: fix unbounded buffer writes when returning certain propvals
    • exmdb_provider: fix SQL logic error appearing during folder emptying
    • mapi_lib: when vCards cannot be ingested as a MAPI object, ingest them as files - set missing PR_ATTACH_METHOD for this.
    • email_lib: fix infinite loop in vcard_check_empty_line

    Enhancements:

    • php: do print reason when autodiscover.ini cannot be read
    • mapi_lib: set PR_SUPPLEMENTARY_INFO when ingesting mail
    • kdb2mt: support -s for public stores
    • kdb2mt: support --src-mbox "" to get a listing of all stores
    Source code(tar.gz)
    Source code(zip)
    gromox-1.8.tar.asc(833 bytes)
    gromox-1.8.tar.zst(1.85 MB)
  • gromox-1.7(Nov 7, 2021)

    Fixes:

    • mapi_lib: fix misparsing of X-Priority/Priority header on mail ingestion
    • kdb2mt, pff2mt: do not splice-import IPM_COMMON_VIEWS (may contain entryids no longer applicable)

    Enhancements:

    • delivery & queue: recognize shared mailboxes
    • doc: add Grommunio Admin API directives to ldap_adaptor manpage
    • exch: add handling for PT_MV_SYSTIME, PT_MV_CURRENCY property types
    • kdb2mt: support extraction of PT_CURRENCY, PT_MV_{I8,SYSTIME,CURRENCY} properties from KDBs
    Source code(tar.gz)
    Source code(zip)
    gromox-1.7.tar.asc(833 bytes)
    gromox-1.7.tar.zst(1.84 MB)
  • gromox-1.6(Oct 30, 2021)

    Fixes:

    • delivery-queue: fix three crashes involving stream processing
    • exmdb_local: stop emitting bogus message length into temporary message files
    • exmdb_local: fix crash on read-back of temporary message files
    • mda: add a delivery mechanism for Out Of Office autoreplies
    • mt2exm: fix an inverted condition that would erroneously raise error code PG-1122

    Enhancements:

    • mt2exm: add an -x option for ignoring duplicated folder creations
    • kdb2mt: the special folder for junk e-mail is now recognized (relevant for when the -s command-line option is used).

    Changes:

    • delivery-queue: the flusher plugin mechanism has been dropped; the only plugin there was, libgxf_message_enqueue, is now directly in the program.
    • Scope-based resource management for a number of internal library classes.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.6.tar.asc(833 bytes)
    gromox-1.6.tar.zst(1.83 MB)
  • gromox-1.5(Oct 21, 2021)

  • gromox-1.4(Oct 8, 2021)

    Fixes:

    • exmdb_provider: repair an erroneously inverted condition for OP_MOVE Deferred Action Message generation.
    • exmdb_provider: Deletion of folders within a public mailbox used to be ineffective, which was fixed.

    Enhancements:

    • Daemons support now socket activation.
    • The event(8gx) and timer(8gx) daemons now run unprivileged.
    • gromox-pff2mt now skips over unrecognizable MAPI properties rather than exiting.
    • gromox-mt2exm now supports storing to public mailboxes.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.4.tar.asc(833 bytes)
    gromox-1.4.tar.zst(1.83 MB)
  • gromox-1.3(Sep 29, 2021)

    Fixes:

    • kdb2mt: put FAI messages in the right place & transfer read flag
    • zcore: stop accidental truncation of autoreply.cfg
    • mda_local: fix an uninitialized buffer read that caused OOF replies not to be generated
    • exmdb_provider: cure bug that prevented deletion of mails in Public Folders

    Changes:

    • delivery & imap: the log priority of some messages has been raised to more sensible levels.
    • mkprivate, mkpublic, mkmidb: install tools to sbindir
    • autodiscover: support users without a PR_DISPLAY_NAME

    Enhancements:

    • http: add config directive "http_debug"
    • exmdb_provider: add a config directive "enable_dam"
    Source code(tar.gz)
    Source code(zip)
    gromox-1.3.tar.asc(833 bytes)
    gromox-1.3.tar.zst(1.82 MB)
  • gromox-1.2(Sep 1, 2021)

    Fixes:

    • zcore: repair wrong (parent_)entryid being passed to syncers
    • lib: unbreak save/restore of inbox rules from zcore
    • http: fix a hang during Outlook's autodiscovery due to incorrect HTTP request-body processing
    • kdb2mt: implement documented SRCPASS environment variable
    • kdb2mt: reduce a false condition in checking for attachment existence (reduces PK-1012)
    • kdb2mt: recognize fixated namedprops in the range 0x8000..0x84FF (appointment data, contact data)

    Enhancements:

    • kdb2mt: new -v option to show progress for large folders
    • kdb2mt: implement support for embedded messages (reducing PK-1012)
    • kdb2mt: support reading gzip attachments
    • kdb2mt: make --src-mbox option more useful by ignoring orphan stores when resolving. (Orphan stores can still be extracted with --src-guid.)
    • kdb2mt: make -s (splice) actually effective, by looking for the needed PR_IPM_SUBTREE property in the proper MAPI object.
    • kdb2mt: added more folder mappings for splice mode (appointments, contacts, journal, notes, tasks, drafts) so that e.g. Drafts does get copied to Drafts, rather than making a new "Drafts" folder.
    • kdb2mt: skip search folders on extraction (these are empty anyway)
    Source code(tar.gz)
    Source code(zip)
    gromox-1.2.tar.asc(833 bytes)
    gromox-1.2.tar.zst(1.81 MB)
  • gromox-1.0(Aug 7, 2021)

    Enhancements:

    • Added an importer for Kopano databases, gromox-kdb2mt. This is meant to be used with gromox-mt2exm.

    Changes:

    • gromox-pffimport was split into two programs that now need to be used as a piped combination, gromox-pff2mt and gromox-mt2exm.
    • gromox-smtp has been renamed to gromox-delivery-queue.

    Fixes:

    • pffimport/pff2mt no longer aborts with assertion PF-1034/1038.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.0.tar.asc(833 bytes)
    gromox-1.0.tar.zst(1.81 MB)
  • gromox-0.27(Jul 13, 2021)

    Fixes:

    • oxcical: recognize calendar scale "LunarRokuyou"
    • oxcical: fix PidLidIntendedStatus always being olTentative
    • pam_gromox: fix NULL deref when the plugin is used
    • Avoid double UTF-8 transformation by html_to_plain
    • zcore: do not switch to Chinese when desired store language is unavailable

    Changes:

    • SIGHUP now reloads the exrpc_debug, rop_debug and/or zrpc_debug config directives.
    • smtp: bump logmsg severity for rejected deliveries so that they become default-visible in journalctl.

    Enhancements:

    • exchange_emsmdb, zcore: store ownership bit (tentatively configured by setting owner on Top Of Information Store)
    • oxcical: support for the olWorkingElsewhere busy status
    • authmgr: implement "allow_all" auth mode
    • authmgr: switch default mode to "externid"
    • dbop: new db schema n77 to support sync policy of mobile devices
    Source code(tar.gz)
    Source code(zip)
    gromox-0.27.tar.asc(833 bytes)
    gromox-0.27.tar.zst(1.77 MB)
Owner
grommunio
Comprehensive communication and collaboration solution
grommunio
RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system

RPC++ RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system Installing requirements Arch based systems pacm

grialion 4 Jul 6, 2022
H2O - the optimized HTTP/1, HTTP/2, HTTP/3 server

H2O - an optimized HTTP server with support for HTTP/1.x, HTTP/2 and HTTP/3 (experimental) Copyright (c) 2014-2019 DeNA Co., Ltd., Kazuho Oku, Tatsuhi

H2O 10.1k Sep 20, 2022
BingBing 58 Sep 17, 2022
Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and 10K connections problem solution

CppServer Ultra fast and low latency asynchronous socket server & client C++ library with support TCP, SSL, UDP, HTTP, HTTPS, WebSocket protocols and

Ivan Shynkarenka 885 Sep 17, 2022
A project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server.

PS4 Server 9.00 This is a project designed for the esp8266 D1 Mini or the esp8266 D1 Mini PRO to provide a wifi http server and dns server. this is fo

null 13 Sep 7, 2022
Pushpin is a reverse proxy server written in C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services.

Pushpin is a reverse proxy server written in C++ that makes it easy to implement WebSocket, HTTP streaming, and HTTP long-polling services. The project is unique among realtime push solutions in that it is designed to address the needs of API creators. Pushpin is transparent to clients and integrates easily into an API stack.

Fanout 3.1k Sep 14, 2022
9front http server with basic CGI support

tcp80x tcp80x is an HTTP server with some pseudo-CGI support. This is a merger of execfs and tcp80, both written by cinap_lenrek. Installation: Instal

phil9 4 Nov 27, 2021
A collection of C++ HTTP libraries including an easy to use HTTP server.

Proxygen: Facebook's C++ HTTP Libraries This project comprises the core C++ HTTP abstractions used at Facebook. Internally, it is used as the basis fo

Facebook 7.6k Sep 22, 2022
🚀 Coroutine-based concurrency library for PHP

English | 中文 Swoole is an event-driven asynchronous & coroutine-based concurrency networking communication engine with high performance written in C++

Swoole Project 17.6k Sep 22, 2022
We use Clash as the backend proxy, which supports Shadowsocks(R), V2Ray, and Trojan protocols.

We use Clash as the backend proxy, which supports Shadowsocks(R), V2Ray, and Trojan protocols.

Dr. Incognito 1.3k Sep 16, 2022
gRPC - An RPC library and framework Baind Unity 3D Project

Unity 3D Compose for Desktop and Android, a modern UI framework for C ++ , C# that makes building performant and beautiful user interfaces easy and enjoyable.

Md Raihan 4 May 19, 2022
🚀 Discord RPC Blocker for Lunar Client

?? Soyuz Soyuz has one simple purpose; listen for incoming Discord RPC requests from Lunar Client and block them! Limitations Windows only Soon to com

Fuwn 7 Aug 3, 2022
C++ framework for json-rpc (json remote procedure call)

I am currently working on a new C++17 implementation -> json-rpc-cxx. Master Develop | libjson-rpc-cpp This framework provides cross platform JSON-RPC

Peter Spiess-Knafl 813 Sep 14, 2022
modern C++(C++11), simple, easy to use rpc framework

modern C++(C++11), simple, easy to use rpc framework

qicosmos 1.1k Sep 20, 2022
RPC based on C++ Workflow. Supports Baidu bRPC, Tencent tRPC, thrift protocols.

中文版入口 SRPC Introduction SRPC is an RPC system developed by Sogou. Its main features include: Base on Sogou C++ Workflow, with the following features:

C++ Workflow Project and Ecosystem 1.4k Sep 23, 2022
Fastest RPC in the west

smf - the fastest RPC in the West We're looking for a new maintainer for the SMF project. As I have little time to keep up with issues. Please let me

null 628 Sep 2, 2022
Apache Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation

Apache Thrift Introduction Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation. Thrift provides clean a

The Apache Software Foundation 9.3k Sep 16, 2022
A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio.

A very simple, fast, multithreaded, platform independent HTTP and HTTPS server and client library implemented using C++11 and Boost.Asio. Created to be an easy way to make REST resources available from C++ applications.

Ole Christian Eidheim 2.4k Sep 17, 2022
Small and fast cross-platform networking library, with support for messaging, IPv6, HTTP, SSL and WebSocket.

frnetlib Frnetlib, is a cross-platform, small and fast networking library written in C++. There are no library dependencies (unless you want to use SS

Fred Nicolson 22 May 16, 2022