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

Overview

Gromox is the central groupware server component of grammm. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Connectivity options include RPC/HTTP (Outlook Anywhere), MAPI/HTTP, 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 grammm-admin for user management. A web interface is available with grammm-web. The grammm distribution ships these essentials and has a ready-to-run installation of Gromox.

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

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

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
  • 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 2
  • 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
  • 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 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
  • imap idle not implemented right

    imap idle not implemented right

    idle is responding with + idling, but is not supposed to show tag. this prevents idle from working on strict clients.

    fix can be something like:

    int imap_cmd_parser_idle(int argc, char **argv, IMAP_CONTEXT *pcontext)
    {
            size_t string_length = 0;
    
            if (!pcontext->is_authed())
                    return 1804;
            if (argc != 2)
                    return 1800;
            gx_strlcpy(pcontext->tag_string, argv[0], arsizeof(pcontext->tag_string));
            pcontext->sched_stat = SCHED_STAT_IDLING;
            auto imap_reply_str = resource_get_imap_code(1602, 1, &string_length);
            pcontext->connection.write(imap_reply_str, string_length);
            return 0;
    }
    
    opened by Bheam 1
  • gromox-midb Coredump - Alpine 3.16/musl 1.2.3

    gromox-midb Coredump - Alpine 3.16/musl 1.2.3

    Default Configuration

    Reading symbols from /usr/libexec/gromox/midb...
    (gdb) run
    Starting program: /usr/libexec/gromox/midb 
    
    gromox-midb 1.32 (pid 7351 uid 0)
    
    [system]: exmdb proxy connection number is 10
    [system]: exmdb notify stub threads number is 10
    [system]: listen address is [::1]:5555
    [system]: connection threads number is 100
    [system]: hash table size is 5000
    [system]: cache interval is 30min
    [system]: mime number is 4096
    [system]: sqlite mmap_size is disabled
    [system]: defaulting to implicit access ACL containing ::1.
    Reexecing /usr/libexec/gromox/midb
    process 7351 is executing new program: /usr/libexec/gromox/midb
    
    gromox-midb 1.32 (pid 7351 uid 998)
    
    [system]: exmdb proxy connection number is 10
    [system]: exmdb notify stub threads number is 10
    [system]: listen address is [::1]:5555
    [system]: connection threads number is 100
    [system]: hash table size is 5000
    [system]: cache interval is 30min
    [system]: mime number is 4096
    [system]: sqlite mmap_size is disabled
    [system]: defaulting to implicit access ACL containing ::1.
    [textmaps]: cpid: 140 IDs, 139 names
    [textmaps]: lcid: 412 IDs, 807 names
    [textmaps]: lang_charset: 3 mappings
    [textmaps]: mime_extension: 190 exts, 125 mimetypes
    [textmaps]: 91 translations in folder namedb
    [event_proxy]: event connection number is 8
    [event_proxy]: event address is [event]:33333
    [New LWP 7355]
    [ldap_adaptor]: hosts <ldapi://ldap/>, base <dc=ldap,dc=org>, #conn=8, mailattr=mail
    [mysql_adaptor]: host [grommunio-db]:3306, #conn=8 timeout=0, db=grommunio
    [authmgr]: backend selection externid
    [New LWP 7356]
    [New LWP 7357]
    [New LWP 7358]
    
    Thread 3 "cmd_parser/0" received signal SIGSEGV, Segmentation fault.
    [Switching to LWP 7356]
    0x000055555555cc9c in midcp_thrwork(void*) ()
    (gdb) bt
    #0  0x000055555555cc9c in midcp_thrwork(void*) ()
    #1  0x00007ffff7fba1f5 in start (p=0x7ffff6d88a38) at src/thread/pthread_create.c:203
    #2  0x00007ffff7fbc470 in __clone () at src/thread/x86_64/clone.s:22
    Backtrace stopped: frame did not save the PC
    
    apk version musl
    Installed:                                Available:
    musl-1.2.3-r0                           = 1.2.3-r0 
    

    System Alpine: 3.16 - Just compiling from source and attempting to execute. All other binaries execute. Also occurs on recently released 1.33. I'm sorry I don't know more this was an exercise getting this :)

    opened by tiredofit 1
  • use pkg-config to get the ldap library requirements and fallback to header searching

    use pkg-config to get the ldap library requirements and fallback to header searching

    OpenLDAP ships with a pkg-config file and on *BSD systems the files of openldap is installed outside of default search paths, so relying on the pkg-config file is the best way to go. This commit makes pkg-config the preferred way, while falling back to the original header and library search because not everyone is shipping the ldap.pc file.

    This also adds an error message if the ldap library cannot be found.

    opened by rnagy 1
Releases(gromox-1.37)
  • gromox-1.37(Dec 18, 2022)

    Enhancements:

    • kdb2mt: full user resolution with new option --mbox-name/--user-map
    • kdb2mt: translate PR_*_ADDRTYPE from ZARAFA to SMTP (via --user-map)

    Fixes:

    • kdb2mt: repair printing of tree graphics when ACL lists are dumped with -t -p
    • Fixed a parsing inconsistency between LF and CRLF mail input
    • zcore: support on-the-fly EML (re-)generation in zs_messagetorfc822
    • zcore: allow zs_linktomessage RPC if store permissions allow for it
    • emsmdb: avoid synchronizing PR_PREVIEW (works around OL showing a 255-char truncated mail body)

    Changes:

    • kdb2mt: rename SQL parameter options
    • kdb2mt: rename mailbox selection options
    • kdb-uidextract: new output format
    • kdb2mt: add new --acl option for fine-grained control over ACL extraction
    • nsp: avoid generating ephemeral entryids from ResolveNamesW (Selecting addresses from the "From" dropdown in OL's compose mail dialog works now)
    • zcore: reduce threads_num to below rpc_proxy_connection_num (Addresses exmdb_client: reached maximum connections ...)
    • emsmdb: stop syncing named properties on folders to OL (it does not support them anyway)
    Source code(tar.gz)
    Source code(zip)
    gromox-1.37.tar.asc(228 bytes)
    gromox-1.37.tar.zst(1.86 MB)
  • gromox-1.36(Dec 9, 2022)

    Enhancements:

    • exmdb_provider: on-disk content file compression, controllable using the exmdb_file_compression config directive (affects only new files)
    • tools: new utility gromox-compress to compress existing content files
    • exmdb_provider: support evaluation of inbox rules that have RES_CONTENT restrictions with PT_BINARY properties

    Fixes:

    • Asynchronous notification over MH was not responsive due to a malformed HTTP response, which was fixed.

    Changes:

    • Bounce template generation was rewritten for size
    • mysql_adaptor: silence PR_DISPLAY_TYPE_EX absence warning for admin user
    • emsmdb: let SaveChangesMessage ROP return ecObjectDeleted when this is the case
    • exmdb_provider: set PR_RULE_ERROR property when Deferred Error Messages (DEMs) are generated
    Source code(tar.gz)
    Source code(zip)
    gromox-1.36.tar.asc(228 bytes)
    gromox-1.36.tar.zst(1.86 MB)
  • gromox-1.35(Nov 25, 2022)

    Enhancements:

    • exmdb_provider: mlists that were granted the StoreOwner permission bit through an ACL now propagate it to the individuals in the mlist.

    Fixes:

    • imap: the response to the IDLE command had been malformed
    • emsmdb: On outgoing mails, the Return-Receipt-To (Read Receipt Request) header was malformed. On the incoming side, this would then be translated back to [email protected].

    Changes:

    • http: only show HTTP context log messages when the g_http_debug config directive is set to a non-zero value
    Source code(tar.gz)
    Source code(zip)
    gromox-1.35.tar.asc(228 bytes)
    gromox-1.35.tar.zst(1.34 MB)
  • gromox-1.33(Oct 19, 2022)

    Enhancements:

    • tools: add kdb-uidextract and kdb-uidextract-limited scripts to facilitate ACL conversion
    • Per-organization LDAP server support
    • Show more distinct icons in GAL (mailing lists now show the ML icon)
    • Support PR_THUMBNAIL_PHOTO for room, equipment and mlists
    • FreeBSD and OpenBSD compilation support
    • nsp: reload config on SIGHUP
    • oxcical: minimal VJOURNAL export
    • oxcical: implement VTODO export

    Fixes:

    • zcore, emsmdb: remodel code relating to send-on-behalf/-as detection. zcore now sends with the exact PR_SENT_REPRESENTING as specified by a client.
    • php_mapi: make mapi_parseoneoff recognize UTF-16 ONEOFF_ENTRYIDs

    Changes:

    • authmgr: obsolete the auth_backend_selection config directive's values always_mysql and always_ldap; these are treated like externid now.
    • imap: rename imap_force_starttls config directive to imap_force_tls and imap_support_starttls to imap_support_tls, since it affects encryption as a whole, not just the STARTTLS command on the unencrypted port.
    • pop3: rename the pop3_force_stls config directive to pop3_force_tls and pop3_support_stls to pop3_support_stls, since it affects encryption as a whole, not just the STLS command on the unencrypted port.
    Source code(tar.gz)
    Source code(zip)
    gromox-1.33.tar.asc(228 bytes)
    gromox-1.33.tar.zst(1.90 MB)
  • gromox-1.32(Sep 23, 2022)

    Enhancements:

    • kdb2mt: detect unsupported db attachment layout
    • kdb2mt: add option for mapping ACL identities using a text file
    • nsp: support reading PR_EMS_MEMBER property
    • zcore: support GetContentsTable on distlist objects
    • exm2eml: add options --ical and --vcard

    Fixes:

    • oxcical: some RECURRENCE-ID may have been emitted based on undefined contents
    • oxcical: emit allday events as YMDHMS when YMD cannot be computed due to lack of timezone information

    Changes:

    • email_lib: reimplementation of MJSON parsing using jsoncpp
    Source code(tar.gz)
    Source code(zip)
    gromox-1.32.tar.asc(228 bytes)
    gromox-1.32.tar.zst(1.89 MB)
  • 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)

Owner
grammm
groupware and much, much more
grammm
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

Ice - Comprehensive RPC Framework Ice helps you network your software with minimal effort. By taking care of all interactions with low-level network p

ZeroC Ice 1.9k Jan 7, 2023
rpclib is a modern C++ msgpack-RPC server and client library

rpclib rpclib is a RPC library for C++, providing both a client and server implementation. It is built using modern C++14, and as such, requires a rec

null 1.4k Dec 30, 2022
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

gRPC - An RPC library and framework gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC

grpc 36.6k Dec 30, 2022
Cap'n Proto serialization/RPC system - core tools and C++ library

Cap'n Proto is an insanely fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except

Cap'n Proto 9.5k Dec 30, 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 833 Jan 7, 2023
a simple RPC wrapper generator to C/C++ functions

This project initiated from the following practical problem. To control experimental equipment via computers, manufactures provide software drivers wi

Pearu Peterson 33 Jan 8, 2023
c++11, high performance, cross platform, easy to use rpc framework.

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

qicosmos 1.2k Dec 30, 2022
In-progress multi-PC remote management and administration software

Volition is software to administrate, configure, and monitor vast amounts of PCs simultaneously. The end goal is to create something significantly easier to use and more flexible than Puppet or Ansible, while allowing a single command to perform a similar action on thousands of nodes running vastly different operating systems.

null 5 May 9, 2022
Gromox - Groupware server backend with MAPI/HTTP, RPC/HTTP, IMAP, POP3 and PHP-MAPI support for grommunio

Gromox is the central groupware server component of grommunio. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Conne

grommunio 139 Dec 26, 2022
PHP Encoder, protect PHP scripts in PHP 8 and PHP 7, High Performance, Compitable with X86_64, MIPS, ARM platform and Ubuntu/Centos/OpenWRT system.

What's FRICC2? FRICC2 is a PHP Script encryption tool. When you are developing a commercial software using PHP, the script can be distributed as encry

Hoowa Sun 43 Dec 12, 2022
Industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services. "brpc" means "better RPC".

中文版 An industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances(not counting clients) and thousands kinds of services. "brpc" m

The Apache Software Foundation 14.2k Dec 27, 2022
Packio - An asynchronous msgpack-RPC and JSON-RPC library built on top of Boost.Asio.

Header-only | JSON-RPC | msgpack-RPC | asio | coroutines This library requires C++17 and is designed as an extension to boost.asio. It will let you bu

Quentin Chateau 58 Dec 26, 2022
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.2k Dec 30, 2022
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

Ice - Comprehensive RPC Framework Ice helps you network your software with minimal effort. By taking care of all interactions with low-level network p

ZeroC Ice 1.9k Jan 7, 2023
rpclib is a modern C++ msgpack-RPC server and client library

rpclib rpclib is a RPC library for C++, providing both a client and server implementation. It is built using modern C++14, and as such, requires a rec

null 1.4k Dec 30, 2022
Support for multiple RPC protocols in a single library

AnyRPC A multiprotocol remote procedure call system for C++ Overview AnyRPC provides a common system to work with a number of different remote procedu

Steve Gieseking 56 Nov 17, 2022
BingBing 60 Dec 15, 2022
OneFlow Backend For Triton Inference Server

Triton Inference Server OneFlow Backend

ZeKai Zhou 3 Jan 6, 2022