commit 421859be11fc167172be09ea2c63c6c417f250ccf64fe68441cdc9aba1b082e1 Author: Jan Engelhardt Date: Wed Aug 14 07:49:07 2024 +0000 [info=4267ab00735a837a8284ccd0b9301efcd9a2b72aa6e0c678bf05fe0e5264de14] OBS-URL: https://build.opensuse.org/package/show/server:mail/gromox?expand=0&rev=91 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_scmsync.obsinfo b/_scmsync.obsinfo new file mode 100644 index 0000000..19ec4d9 --- /dev/null +++ b/_scmsync.obsinfo @@ -0,0 +1,4 @@ +mtime: 1719000984 +commit: 4267ab00735a837a8284ccd0b9301efcd9a2b72aa6e0c678bf05fe0e5264de14 +url: https://src.opensuse.org/jengelh/gromox +revision: master diff --git a/build.specials.obscpio b/build.specials.obscpio new file mode 100644 index 0000000..8a1bfc4 --- /dev/null +++ b/build.specials.obscpio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f54d908e943fed7e33b75d2ec7666c35c40e6ff1aeec3e24105d36b00f391d1 +size 256 diff --git a/debian.changelog b/debian.changelog new file mode 100644 index 0000000..52bd107 --- /dev/null +++ b/debian.changelog @@ -0,0 +1,5 @@ +gromox (2.30-0) unstable; urgency=low + + * Update. + + -- Gromox Thu, 02 May 2024 00:00:00 +0000 diff --git a/debian.control b/debian.control new file mode 100644 index 0000000..20ab1e2 --- /dev/null +++ b/debian.control @@ -0,0 +1,28 @@ +Source: gromox +Priority: optional +Section: mail +Maintainer: Gromox +Standards-Version: 4.5.0 +Build-Depends: debhelper-compat (= 12) + +Package: gromox +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: ${misc:Depends}, ${shlibs:Depends}, + php-cli, php-fpm, php-mysql, php-simplexml, php-soap, + system-user-grommunio, system-user-gromox (>= 4), w3m, + libhx32 (>= 4.12) +Provides: php-mapi-gromox +Description: Groupware server (backend) with RPCH, IMAP and Z-MAPI support + . + 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 Outlook Anywhere + (RPC-over-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 + grommunio-admin for user management. A web interface is available with + grommunio-web. The grommunio distribution ships these essentials and has a + ready-to-run installation of Gromox. diff --git a/debian.gromox.postinst b/debian.gromox.postinst new file mode 100644 index 0000000..ace4d56 --- /dev/null +++ b/debian.gromox.postinst @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e +. /usr/share/debconf/confmodule + +set_perms() +{ + USER="$1" + GROUP="$2" + MODE="$3" + FILE="$4" + if ! dpkg-statoverride --list "$FILE" >/dev/null 2>&1; then + chown -h "$USER:$GROUP" "$FILE" + chmod $MODE "$FILE" + fi +} + +xpostinst() +{ +set_perms grommunio gromoxcf 0755 /etc/gromox || : +for i in /var/lib/gromox \ + /var/lib/gromox/domain \ + /var/lib/gromox/user \ + /var/lib/gromox/queue \ + /var/lib/gromox/queue/cache \ + /var/lib/gromox/queue/mess \ + /var/lib/gromox/queue/save \ + /var/lib/gromox/queue/timer; do + set_perms gromox gromox 0770 "$i" || : +done +set_perms gromox gromox 0750 /var/log/gromox || : + +# %post +if test -x /usr/bin/systemd-tmpfiles; then + systemd-tmpfiles --create tmpfiles-gromox.conf || : +else + echo "There is no systemd-tmpfiles present in the system. /run/gromox may not have been created." +fi +if test -x /usr/bin/systemctl; then + systemctl daemon-reload || : + systemctl try-restart gromox-delivery.service \ + gromox-delivery-queue.service gromox-event.service \ + gromox-http.service gromox-imap.service gromox-midb.service \ + gromox-pop3.service gromox-timer.service gromox-zcore.service \ + grommunio-chat.service \ + php7.4-fpm.service php8.0-fpm.service php8.1-fpm.service \ + php8.2-fpm.service php8.3-fpm.service \ + saslauthd.service 2>/dev/null || : +fi +} + + +case "$1" in +configure|reconfigure) + xpostinst + ;; +abort-upgrade|abort-remove|abort-deconfigure) + ;; +*) + echo "postinst called with unknown argument \"$1\"" >&2 + exit 1 + ;; +esac diff --git a/debian.rules b/debian.rules new file mode 100644 index 0000000..b2cece1 --- /dev/null +++ b/debian.rules @@ -0,0 +1,31 @@ +#!/usr/bin/make -f +export DH_VERBOSE=1 +phpdir := $(shell readlink -f $$(php-config --ini-path)/..) +INSTDIR := debian/gromox + +%: + dh $@ --parallel --with autoreconf + +override_dh_auto_install: + dh_auto_install + find ${INSTDIR} -type f -name "*.la" -print -delete + find ${INSTDIR} -type f -name "*.service" -exec \ + perl -i -lpe 's{Type=simple}{Type=simple\nRestart=on-failure}' {} + + for i in /etc/gromox /var/lib/gromox /var/lib/gromox/domain \ + /var/lib/gromox/queue \ + /var/lib/gromox/queue/mess /var/lib/gromox/queue/save \ + /var/lib/gromox/queue/cache \ + /var/lib/gromox/queue/timer /var/lib/gromox/user \ + /var/log/gromox /run/gromox \ + /usr/lib/sysctl.d; do \ + mkdir -pv debian/gromox/$$i; \ + done + + mkdir -pv debian/gromox${phpdir}/fpm/pool.d + cp -av debian/gromox/usr/share/gromox/fpm-gromox.conf.sample debian/gromox${phpdir}/fpm/pool.d/gromox.conf + sed -i 's#/run/php-fpm/php-gromox-fpm.sock#/run/php/php-gromox-fpm.sock#g' debian/gromox${phpdir}/fpm/pool.d/gromox.conf + + mkdir -pv debian/gromox${phpdir}/mods-available debian/gromox${phpdir}/cli/conf.d debian/gromox${phpdir}/fpm/conf.d + mv -v debian/gromox${phpdir}/cli/conf.d/mapi.ini debian/gromox${phpdir}/mods-available/ + ln -s ${phpdir}/mods-available/mapi.ini debian/gromox${phpdir}/cli/conf.d/mapi.ini + ln -s ${phpdir}/mods-available/mapi.ini debian/gromox${phpdir}/fpm/conf.d/mapi.ini diff --git a/gromox-2.30.tar.asc b/gromox-2.30.tar.asc new file mode 100644 index 0000000..081e414 --- /dev/null +++ b/gromox-2.30.tar.asc @@ -0,0 +1,7 @@ +-----BEGIN PGP SIGNATURE----- + +iHUEABYKAB0WIQQr2lY+nd5Gr3HMFx2utpQaL5yZRAUCZnWJQwAKCRCutpQaL5yZ +RMUVAP47FfS0P2c+k1uFDUJRUJLTC/KI22O+G7mI3sDRL+3t6QEAgRLUst55g3x+ +hWM8JTXCJK1BrwJA3Rox0OEEalPJBgk= +=Lr3R +-----END PGP SIGNATURE----- diff --git a/gromox-2.30.tar.zst b/gromox-2.30.tar.zst new file mode 100644 index 0000000..7231e62 --- /dev/null +++ b/gromox-2.30.tar.zst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4b14b9e8a1e161626bfd26bfd484cb73c61ac2b8bafdd0994e9467a3b230af3 +size 2130270 diff --git a/gromox.changes b/gromox.changes new file mode 100644 index 0000000..0c50b99 --- /dev/null +++ b/gromox.changes @@ -0,0 +1,629 @@ +------------------------------------------------------------------- +Fri Jun 21 14:09:43 UTC 2024 - Jan Engelhardt + +- Update to release 2.30 + * oxcical: emit VTIMEZONE for events without + PidLidAppointmentTimeZoneDefinitionStartDisplay + * gromox-mbop: new subcommand ``set-locale`` to change store + language + * exmdb: add more SQLite transactions and make concurrent read + access for stores possible + * ruleproc: initial autoprocessing for meeting requests + * conflict detection, response sending for conflicts, + automatic addition to calendar + * needs to be enabled with gromox.cfg:``lda_mrautoproc``=yes + * imap, pop3, delivery-queue: HAProxy protocol support + (send-proxy-v2) + * zcore: show private distribution lists the grommunio-web + address book + +------------------------------------------------------------------- +Mon Jun 3 23:17:28 UTC 2024 - Jan Engelhardt + +- Update to release 2.29 + * dnsbl_filter: support DNSBL servers that do not emit TXT records + * email_lib: cure IMAP Structure Descriptions indicating a mail + size 2 bytes larger than it is + * imap: cope with truncated EML files + * exmdb: delete leftover stray ROLLBACK statement + * ews: cure null dereference in tInternetMessageHeader::parse + * ews: use vmime parser to break down IMHs and reset an Apple + workaround for "From" lines + +------------------------------------------------------------------- +Thu May 2 08:29:01 UTC 2024 - Jan Engelhardt + +- Update to release 2.28 + * imap: cure client session hang when midb failed to add + a mail during 64K-append + * mysql_adaptor: allow Unicode in alternate usernames (altnames) + * Populate PR_DELETED_ON property for softdeleted items + * exmdb: ``exmdb_rpc_debug`` will now emit execution time for + EXRPCs + * zcore: ``zrpc_debug`` logging now includes the session GUID + to help correlate which ZRPCs are executed by which user + * imap, pop3: print client IP address for lines from + ``imap_cmd_debug``/``pop3_cmd_debug`` + +------------------------------------------------------------------- +Sun Apr 7 06:43:12 UTC 2024 - Jan Engelhardt + +- Update to release 2.27 + * email_lib: avoid splitting UTF-8 code units across lines + * imap: avoid emitting NIL for body-fld-lines + * php_mapi: expose default+anonymous ACEs to PHP programs + * zcore: expose new PR_EC_ENABLED_FEATURES_L property + * ews: implement updating folder permissions + * eml2mt: emit a hint if an Outlook .msg file is erroneously + passed to eml2mt + +------------------------------------------------------------------- +Mon Mar 11 16:03:28 UTC 2024 - Jan Engelhardt + +- Update to release 2.26 + * exmdb: Fix restriction mismatching on ``PR_PARENT_SVREID`` & + ``PR_PARENT_ENTRYID``, which had caused reminders to go off + even after appointments were moved to the wastebasket. + * exmdb_local: rectify wrong/empty ``From:`` lines in bounce + messages + * ews: fix segfault when loading public folder item + * zcore: repaired thumbnail retrieval, which used the wrong + directory + * mbop: add subcommands for manipulating websettings_persistent + * zcore: store websettings_persistent directly in the store + rather than the zcore shadow store object (automatic + migration is in place) + * kdb2mt: avoid importing ``PR_EC_WEBAPP_PERSISTENT_SETTINGS_JSON`` + property + +------------------------------------------------------------------- +Thu Feb 29 14:04:15 UTC 2024 - Jan Engelhardt + +- Update to release 2.25 + * mt2exm: the -B option can be used with all folder names + * mbop: new commands ``get-photo``, ``set-photo``, + ``get-websettings``, ``set-websettings`` + * oxcmail: export no longer generates a MIME epilogue, which + should workaround Outlook's broken S/MIME validator which + fails to include epilogues in the signature verification. + * mkpublic: newly created public stores lacked a + ``replguidmap`` table + * exmdb: repair initialization of PR_ATTACH_NUM when instances + are opened + * oxcmail: strip leftover right angled bracket from Content-ID + on oxcmail_import + +------------------------------------------------------------------- +Sat Feb 10 11:54:03 UTC 2024 - Jan Engelhardt + +- Update to release 2.24 + * email_lib: the last byte of a MIME part was erroneously deleted + * emsmdb: repair garbage memory read when creating a stream on + a PT_STRING8 property + * ews: repair a potential lack of results with the ResolveNames + operation when searching by email address + +------------------------------------------------------------------- +Mon Feb 5 20:28:40 UTC 2024 - Jan Engelhardt + +- Update to release 2.23 + * oxcmail: do not ignore IDN addresses when reading headers + * oxcmail: resolve a case with trashed body bytes when a line + began with dot + * exmdb: add config directive ``exmdb_contention_reject_time`` + for configuring contention timeout + * exmdb: have DB_ITEM instances track which function holds them, + and report this upon reaching contention timeouts + * new command: gromox-exm2mt + +------------------------------------------------------------------- +Mon Jan 29 11:19:20 UTC 2024 - Jan Engelhardt + +- Update to release 2.22 + * exmdb_client: discard connections when EOF is detected + * mda: resolve three cases of garbage bytes getting added to + messages + * oxcmail: drop unintended doublequotes around RFC 2047-style + =?..?= encoded-words + * oxcical: support emission of iCalendar VFREEBUSY objects + * nsp,ab: support name resolution of IDN addresses + * twostep_ruleproc: support Outlook-style public folder entryids + in Move/Copy rules (as opposed to GWeb-style entryids) + +------------------------------------------------------------------- +Mon Jan 8 14:05:14 UTC 2024 - Jan Engelhardt + +- Update to release 2.21 + * Support for outgoing message submission via postdrop + * gromox-snapshot: Support snapshots on XFS + * zcore: log REMOTE_ADDR on authentication failure for fail2ban + * exmdb: add ICS request dumper + * lib: guard against an integer overflow when inserting last + element in range_set + * imap: do not flag zero-length usernames/passwords as a syntax + error + +------------------------------------------------------------------- +Fri Dec 15 10:00:02 UTC 2023 - Jan Engelhardt + +- Update to release 2.20 + * oxdisco: allow autodiscover for room/equipment stores + * oxcical: allday events are now emitted (pursuant to the + ``oxcical_allday_ymd`` config directive) as "floating time" + per the OXCICAL spec recommendations + * oxcical: resolve integer underflow that botched weekorder + computation in weekly-recurring events + * oxcical: resolve out-of-bounds access during generation of + iCal RDATE lines * ews: avoid a heap-use-after-free during + freebusy retrieval + * zcore: zs_getuserfreebusy had failed to resolve usernames and + display freebusy status in the scheduling matrix view + * ldap_adaptor: resolve data race with double-free when + per-organization LDAP settings were used + +------------------------------------------------------------------- +Mon Dec 4 14:12:37 UTC 2023 - Jan Engelhardt + +- Update to release 2.19 + * `gromox-mbop emptyfld` now recognizes a `-t` option to limit + deletion to messages of certain age. + * `gromox-mbop emptyfld` now recognizes a `--nuke-folders` option + * gromox-eml2mt now recognizes a `--mbox` option to support + RFC4155 Unix mboxes + * exmdb: search pacing is now time-based, which should give more + predictable interactivity during background searches + * emsmdb: do not treat the absence of the + PR_LAST_MODIFICATION_TIME message property during ICS downloads + as an error any longer + * exmdb: send "object created" notifications as search folders + re-populate + * oxcmail: ignore zero-length From fields, which should help + sending from Windows Mail + * Thunderbird/IMAP now picks up deletion events done by other + clients + +------------------------------------------------------------------- +Mon Nov 27 13:36:14 UTC 2023 - Jan Engelhardt + +- Update to release 2.18 + * exmdb: synthesized PR_RTF_COMPRESSED properties (in relation to + the "dbg_synthesize_content" config directive) had an + incomplete header + * oxcmail: repair inadvertent propid/proptag swap causing TNEF + export to fail + * mbop/purge-softdelete: make pathspec `SENT/2022` actually work + * imap: messages delete events from OL/g-web now make it to IMAP + clients + * midb: propagate folder change events; IMAP clients now + recognize when a message was deleted in g-web/Outlook + * http: RFC 7617 support for the Basic authentication header line + * nsp: allow connections from Windows with UTF-8 locale + * midb: removal of seqid renumbering, which speeds up + IMAP SELECT/LIST/FETCH commands. + * authmgr: PAM is now offered as an authentication backend + +------------------------------------------------------------------- +Sat Nov 11 11:56:22 UTC 2023 - Jan Engelhardt + +- Update to release 2.17 + * Enhancements: + * http: Windows SSO support via HTTP Negotiate authentication + * daemons: support for alternate login names + (this allows for assigning shorter usernames for grommunio-web) + * exmdb: augment create_folder and movecopy_folder RPCs with a + 32-bit error code, which allows g-web to better detect folders + with duplicate names + * ews: implement Subscribe, Unsubscribe, GetEvents, GetUserPhoto + * mbop: add subcommand `clear-rwz` to clear out RuleOrganizer + FAI messages +- Delete 0001-build-resolve-i586-compile-error.patch (merged) + +------------------------------------------------------------------- +Sun Oct 29 18:44:37 UTC 2023 - Jan Engelhardt + +- Update to release 2.16 + * Enhancements: + * Define the "suspended" user state for grommunio-admin-api. + (think of it as a "non-receiving shared mailbox"). + * emsmdb, zcore: the ``emsmdb_max_cxh_per_user``, + ``emsmdb_max_obh_per_session`` and + ``zcore_max_obh_per_session`` config directives can now be + set to 0 for unlimited. + * Fixes: + * oxvcard: export to .vcf now positions the VERSION property in + accordance with the vCard 4.0 specification. + * oxcmail: cease gratuitous RTF conversion of calendar items. + +------------------------------------------------------------------- +Wed Oct 18 13:01:38 UTC 2023 - Jan Engelhardt + +- Update to release 2.15 + * imap: do not emit continuation request on LITERAL+ (now also + for large literals >64K) + * exmdb: explicitly rollback SQLite transactions when the commit + operation failed + * delivery: support for plus-addresses/recipient delimiters, + e.g. + * mbop: new subcommand ``recalc-size`` to recalculate store size + +------------------------------------------------------------------- +Wed Oct 4 10:37:50 UTC 2023 - Jan Engelhardt + +- Update to release 2.14 + * alias_resolve: support for nested mlist expansion + * alias_resolve: support for Global Contact Objects + * delivery: SIGHUP triggers a reload of (more) plugins now + * gromox-mbop: add emptyfld options -a, -M + * oxdisco, oab: avoid emitting extraneous NUL byte at end of + XML document + * imap: do not emit continuation request on LITERAL+ + +------------------------------------------------------------------- +Sat Sep 23 20:54:29 UTC 2023 - Jan Engelhardt + +- Update to release 2.13 + * emsmdb: eliminiate duplicate message appearing when copying + to a private non-default / shared store + * EWS: support the {Create,Delete,Move,Copy,Update,Empty}Folder + operation(s) + * EWS: support the {Copy,Move}Item operation(s) + +------------------------------------------------------------------- +Mon Sep 4 16:42:50 UTC 2023 - Jan Engelhardt + +- Update to release 2.12 + * ews: support CreateItem, DeleteItem, SendItem requests + * oxm2mt: support multi-valued properties + * kdb2mt: do not abort when --src-mbox is used + * exmdb_provider: opening the detail view of Personal Addressbook + entries now works in Outlook, as does selecting them as message + recipients + * zcore: fix a flaw in permissions dialog that caused the + delegates to be able to see the private items of the delegator + +------------------------------------------------------------------- +Mon Aug 21 13:40:35 UTC 2023 - Jan Engelhardt + +- Update to release 2.11 + * exmdb: attachment storage with hash-based filenames + * exmdb_local: persistent (on-disk) last-autoreply time tracking + * imap: allow large literals with APPEND + * imap: add RFC 7888 support + * oxdisco: allow AutoDiscover information retrieval from + secondary mailboxes even if the scndstore_hints table does not + have an entry. + * emsmdb: "Mark all as read" in OL (Online mode) now works + +------------------------------------------------------------------- +Thu Jun 15 15:24:02 UTC 2023 - Jan Engelhardt + +- Update to release 2.10 + * DNSBL filtering mechanism, cf. man dnsbl_filter + * Address book name resolution now evaluates alias addresses + * pff2mt: speedup operation by 70%+ + * emsmdb: strike limits (raise to infinity) for session + handles, user handles and notify handles, and raise limit for + ems_max_pending_sesnotif to 1K + * emsmdb: new configuration directives ems_max_active_notifh, + ems_max_active_sessions, ems_max_active_users, + ems_max_pending_sesnotif + * mbop: new subcommands clear-photo, clear-profile, + purge-softdelete, purge-datafiles + +------------------------------------------------------------------- +Wed May 10 09:07:18 UTC 2023 - Jan Engelhardt + +- Update to release 2.9 + * emsmdb: support forwarding meeting requests from organizers + that are not local to the installation + * imap: broadcast changes to mailbox from EXPUNGE commands + * oxcical: add TZID for allday events + * imap: add and populate a per-context seqid list + * midb: unbreak search matching based on dates and sizes + * emsmdb: avoid hitting an assertion when sort-reloading a + table of a deleted folder +- Delete 0001-dbop_mysql-remove-extraneous-DEFAULT-keyword-in-clas.patch + +------------------------------------------------------------------- +Sat Apr 15 10:07:22 UTC 2023 - Jan Engelhardt + +- Update to release 2.8 + * exmdb_provider: repair a 4-byte cutoff when reading PR_BODY, + PR_TRANSPORT_MESSAGE_HEADERS if they are compressed on disk + * nsp: fix janky addressbook navigation when the GAL has hidden + entries + * The "Hide from addresbook" functionality has gained another + bit, so that name resolution ("Check names" button in + OL/g-web) is no longer tied to visibility in the GAL. + * Support for non-default stores in the IMAP and POP3 protocols; + use "actualusername!sharedmbox" as the username for login. +- Add 0001-dbop_mysql-remove-extraneous-DEFAULT-keyword-in-clas.patch + +------------------------------------------------------------------- +Fri Mar 24 01:13:00 UTC 2023 - Jan Engelhardt + +- Update to release 2.7 + * exmdb_provider: default to mbox_contention_reject=0 + * zcore: make mapi_message_imtoinet operate on message instances, + not messages + * oxcmail: do not fail exporting DSNs with unresolvable addresses + * oxcical: do not fail exporting calendar objects with + unresolvable addresses +- Delete 0001-build-resolve-compile-error-with-gcc-13.patch, + 0001-snapshot-safer-parsing-of-snapshot.cfg.patch (merged) + +------------------------------------------------------------------- +Mon Mar 20 21:24:52 UTC 2023 - Jan Engelhardt + +- Add 0001-build-resolve-compile-error-with-gcc-13.patch + +------------------------------------------------------------------- +Mon Mar 13 09:13:31 UTC 2023 - Jan Engelhardt + +- Add 0001-snapshot-safer-parsing-of-snapshot.cfg.patch + [boo#1209051] +- Updated directory permissions + +------------------------------------------------------------------- +Thu Mar 9 23:44:07 UTC 2023 - Jan Engelhardt + +- Update to release 2.6 + * exmdb_provider: filter duplicate propids when they occur in + the mailbox, resolving a failure to export (broken) + recipients to MSG, and resolving _one_ instance of OL sync + error 80070057. + * oxvcard: PidLidBusinessCardDisplayDefinition named property + was not assigned the right namespace (PSETID_ADDRESS) + * oxcmail: do not abort export routine if SMIME message is + lacking an SMIME body (just treat it as empty instead) + * oxcical: do not abort export routine if IPM.*.Resp.* has no + attendee + * exmdb_local: perform online lookup of named properties, + resolving vcarduid being erroneously assigned propid 0 + +------------------------------------------------------------------- +Sun Mar 5 23:23:42 UTC 2023 - Jan Engelhardt + +- Update to release 2.5 + * authmgr: Alternate username support + * Repair a null deref during HTML-to-text conversion + * Synchronization of embedded messages now works + * Saving a draft in grommunio-web would erroneously strip the + subject prefix + * EWS: Detailed FreeBusy requests did not return detailed info + +------------------------------------------------------------------- +Sun Feb 26 18:24:47 UTC 2023 - Jan Engelhardt + +- Update to release 2.4 + * mbop: emptyfld/delmsg support folder names now + * dscli: added an --eas option + * oxdisco: support autodiscover.json requests + +------------------------------------------------------------------- +Fri Feb 3 16:16:14 UTC 2023 - Jan Engelhardt + +- Update to release 2.3 + * pff2mt: support non-Unicode PFF files + * ldap_adaptor: read ldap_start_tls, ldap_mail_attr from + orgparam table + * Support Emojis in HTML-to-RTF conversion code + * exmdb_provider: implement message store softdelete count + properties + * dbop_sqlite: guard schema upgrades with transaction + * Do not fail entire HTML-to-RTF conversion or calls like + getpropvals(PR_RTF_COMPRESSED) when encountering garbage + bytes + * exmdb_provider: have folder message count properties respect + softdelete + * zcore: mapi_copyto had inverted meaning of MAPI_NOREPLACE + +------------------------------------------------------------------- +Mon Jan 16 19:14:43 UTC 2023 - Jan Engelhardt + +- Update to release 2.2 + * exmdb_provider: repair SQL logic errors showing up when a + folder's contents are requested in Conversation mode + * exmdb_provider: only delete links, not messages, from search + folders + * tools: add --integrity option for mkprivate, mkpublic, mkmidb + +------------------------------------------------------------------- +Thu Jan 12 11:39:59 UTC 2023 - Jan Engelhardt + +- Update to release 2.1 + * exmdb_provider: support for private store message and folder + softdelete (and thus the Recover Deleted Items feature in OL) + * mapi_lib: parse "Received" headers into + PR_MESSAGE_DELIVERY_TIME for the sake of EML imports + * emsmdb: work around OL crash with Recover Deleted Items dialog + * emsmdb: rework interpretation of PR_SENT_REPRESENTING on + IPM.Schedule objects (relates to the organizer of a meeting + when such meeting is forwarded) + +------------------------------------------------------------------- +Sun Dec 18 12:25:44 UTC 2022 - Jan Engelhardt + +- Update to release 1.37 + * exmdb_provider: on-disk content file compression, controllable + using the exmdb_file_compression config directive (affects only + new files) + * exmdb_provider: support evaluation of inbox rules that have + RES_CONTENT restrictions with PT_BINARY properties + * kdb2mt: full user resolution and PR_*_ADDRTYPE resolution with + new option set --mbox-name/--user-map + * zcore: Addressed "exmdb_client: reached maximum + connections ..." warnings. + * Selecting addresses from the "From" dropdown in OL's + compose mail dialog works now. + +------------------------------------------------------------------- +Fri Nov 25 13:50:57 UTC 2022 - Jan Engelhardt + +- Update to release 1.35 + * kdb2mt: add option for mapping ACL identities using a text file + * tools: add kdb-uidextract and kdb-uidextract-limited scripts to + facilitate ACL conversion + * Per-organization LDAP server support + * User accounts can now be hidden from the GAL and other + address lists + * The gromox-dscli command-line utility now performs DNS SRV + lookups. + * exmdb_provider: mlists that were granted the StoreOwner + permission bit through an ACL now propagate it to the + individuals in the mlist. + * 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 invalid@invalid. + +------------------------------------------------------------------- +Tue Aug 30 12:02:07 UTC 2022 - Jan Engelhardt + +- Update to release 1.31 + * 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 + +------------------------------------------------------------------- +Mon Jul 25 16:45:33 UTC 2022 - Jan Engelhardt + +- Update to release 1.28 + * freebusy: do not publicize private recurrence exceptions + * Delayed Sending had left messages in Outbox + * emsmdb: the contact folder list erroneously rejected sort + requests that grouped and sorted by the same column + +------------------------------------------------------------------- +Sun Jun 12 21:49:52 UTC 2022 - Jan Engelhardt + +- Update to release 1.25 + * 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 + +------------------------------------------------------------------- +Wed Jun 1 19:42:23 UTC 2022 - Jan Engelhardt + +- Update to release 1.24 + * 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. + +------------------------------------------------------------------- +Thu May 12 15:27:23 UTC 2022 - Jan Engelhardt + +- Update to release 1.22 + * service_loader: resolve crash when first module is unloadable + * eml2mt, exm2eml: rectify wrong serivce plugin search path + * eml2mt: add iCalendar and vCard file import + * kdb2mt: skip IPM.MessageManager FAI messages (cause Outlook + to sometimes refuse opening a folder) + * The /usr/libexec/gromox/autodiscover command has been renamed + to just gromox-dscli. + +------------------------------------------------------------------- +Sat Apr 30 12:26:55 UTC 2022 - Jan Engelhardt + +- Update to release 1.20 + * 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. + +------------------------------------------------------------------- +Sat Apr 16 14:31:39 UTC 2022 - Jan Engelhardt + +- Update to release 1.19 + * 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 + * 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). + +------------------------------------------------------------------- +Fri Feb 11 15:59:05 UTC 2022 - Jan Engelhardt + +- Update to release 1.16 + * zcore: allow setting Out Of Office status of other mailboxes + * zcore: enhance mapi_getmsgstoretable to show all stores with + access permissions + * kdb2mt, pff2mt: add --with-hidden/--without-hidden + +------------------------------------------------------------------- +Tue Jan 18 18:01:59 UTC 2022 - Jan Engelhardt + +- Update to release 1.13 + * mt2exm: perform named property translation on folder + properties, message recipient properties and attachment + properties. + * pff2mt: support reading multi-value variable-length property + types, and obscure single-value types. + * kdb2mt: analyze Receive Folder Table and map inbox to inbox + when ``-s`` is used. + * 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. + +------------------------------------------------------------------- +Tue Dec 7 18:00:46 UTC 2021 - Jan Engelhardt + +- Update to release 1.10 + * 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 + +------------------------------------------------------------------- +Fri Oct 8 19:36:00 UTC 2021 - Jan Engelhardt + +- Update to release 1.4 + * 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. + +------------------------------------------------------------------- +Wed Sep 1 10:03:05 UTC 2021 - Jan Engelhardt + +- Initial entry for build.opensuse.org (gromox-1.1.43.566b624e) diff --git a/gromox.dsc b/gromox.dsc new file mode 100644 index 0000000..cc04c7c --- /dev/null +++ b/gromox.dsc @@ -0,0 +1,51 @@ +Format: 1.0 +Source: gromox +Architecture: any +Version: 2.30 +DEBTRANSFORM-RELEASE: 1 +Maintainer: Gromox +Homepage: https://gromox.com +Standards-Version: 4.5.0 +# libbfio is in the require list because libpff-dev is lacking it (bug) +Build-Depends: + autoconf (>= 2.69), + automake (>= 1:1.11) | automake1.11, + autotools-dev, + binutils (>= 2.20), + debhelper-compat (>= 12), + devscripts, + fakeroot, + g++ (>= 7), + gettext, + libbfio-dev, + libcurl4-openssl-dev, + libesedb-dev, + libfmt-dev (>= 8), + libhx-dev (>= 4.19), + libjsoncpp-dev (>= 1.4.0), + libkrb5-dev, + libldap2-dev, + libmariadbclient-dev | libmysqlclient-dev | libmariadb-dev, + libpam0g-dev, + libolecf-dev, + libpff-dev, + libsqlite3-dev, + libssl-dev, + libtinyxml2-dev (>= 8), + libtool (>= 2), + libtool-bin (>= 2) | libtool (>= 2), + libvmime-dev (>= 0.9.2), + libxml2-dev, + libxxhash-dev, + libzstd-dev, + lsb-release, + make, + m4, + openssl, + php-dev (>= 7.0), + pkg-config (>= 0.23), + sed, + systemd, + uuid-dev, + zlib1g-dev +Files: diff --git a/gromox.keyring b/gromox.keyring new file mode 100644 index 0000000..f20936f --- /dev/null +++ b/gromox.keyring @@ -0,0 +1,269 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +Ag== +=nzyx +-----END PGP PUBLIC KEY BLOCK----- diff --git a/gromox.spec b/gromox.spec new file mode 100644 index 0000000..0ce7724 --- /dev/null +++ b/gromox.spec @@ -0,0 +1,247 @@ +# +# spec file for package gromox +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%define _libexecdir %_prefix/libexec + +Name: gromox +Version: 2.30 +Release: 0 +Summary: Groupware server backend with RPC, IMAP,POP3, PHP-MAPI support +License: AGPL-3.0-or-later AND GPL-2.0-only AND GPL-3.0-or-later +Group: Productivity/Networking/Email/Servers +URL: https://grommunio.com/ +Source: https://github.com/grommunio/gromox/releases/download/%name-%version/%name-%version.tar.zst +Source2: https://github.com/grommunio/gromox/releases/download/%name-%version/%name-%version.tar.asc +Source8: %name.keyring +BuildRequires: fdupes +BuildRequires: gcc-c++ +%if 0%{?suse_version} +BuildRequires: libmysqlclient-devel >= 5.6 +BuildRequires: openldap2-devel +%else +BuildRequires: mariadb-devel >= 5.6 +BuildRequires: openldap-devel +%endif +BuildRequires: libtool >= 2 +BuildRequires: make +BuildRequires: pam-devel +BuildRequires: pkg-config +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400 +BuildRequires: php8-devel +%else +BuildRequires: php-devel >= 7 +%endif +BuildRequires: libvmime-devel >= 0.9.2+g175 +BuildRequires: zstd +BuildRequires: group(gromox) +BuildRequires: pkgconfig(fmt) >= 8 +BuildRequires: pkgconfig(jsoncpp) >= 1.4.0 +BuildRequires: pkgconfig(krb5-gssapi) +BuildRequires: pkgconfig(libHX) >= 4.19 +BuildRequires: pkgconfig(libcrypto) +BuildRequires: pkgconfig(libcurl) +BuildRequires: pkgconfig(libesedb) +BuildRequires: pkgconfig(libolecf) +BuildRequires: pkgconfig(libpff) +BuildRequires: pkgconfig(libssl) +BuildRequires: pkgconfig(libxml-2.0) +BuildRequires: pkgconfig(libxxhash) +BuildRequires: pkgconfig(libzstd) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(tinyxml2) >= 8 +BuildRequires: pkgconfig(zlib) +BuildRequires: user(grommunio) +BuildRequires: user(gromox) +%if 0%{?suse_version} +Requires: glibc-locale-base +%endif +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400 +# Require php-cli/fpm (and modules) that have a chance of loading mapi.so +# which means same generation as the one we built with. +Requires: php8-cli +Requires: php8-fpm +Requires: php8-mysql +Requires: php8-posix +Requires: php8-soap +%endif +%if 0%{?rhel} || 0%{?fedora_version} +Requires: php-cli +Requires: php-fpm +Requires: php-mysqlnd +Requires: php-posix +Requires: php-soap +%endif +Requires: w3m +Requires(pre): user(grommunio) +Requires(pre): user(gromox) +Requires(pre): group(gromox) +Provides: php-mapi-gromox = %version-%release +Conflicts: grommunio-admin-api < 1.10.7 +%{?systemd_ordering} +%if !0%{?_pamdir:1} +%define _pamdir /%_lib/security +%endif + +%description +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), MAPI/HTTP, IMAP, POP3, an SMTP-speaking LDA, and a PHP +module with a Z-MAPI function subset. + +Import is possible from PST/OST/MSG/CDFV2/TNEF, EML/ICAL/VCF, Kopano, +Zarafa, and via imapsync. + +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 webmail client interface is available with +grommunio-web. The grommunio appliance ships these essentials and has a +ready-to-run installation of Gromox. + +%prep +%autosetup -p1 + +%build +%configure +%make_build V=1 + +%install +b="%buildroot" +%make_install +%if "%_pamdir" != "%_libdir/security" +# libtool gets confused if pamlibdir is not below prefix; +# as such we are not using `make install pamlibdir=...` +mkdir -pv "$b/%_pamdir" +mv "$b/%_libdir/security"/* "$b/%_pamdir/" +%endif +# done in system-user-gromox (which exists for ease of building for multiple distros) +rm -fv "%buildroot/%_sysusersdir/sysusers-gromox.conf" +for i in /var/lib/gromox /var/lib/gromox/domain \ + /var/lib/gromox/queue \ + /var/lib/gromox/queue/mess /var/lib/gromox/queue/save \ + /var/lib/gromox/queue/cache \ + /var/lib/gromox/queue/timer /var/lib/gromox/user \ + /var/log/gromox; do + mkdir -p "$b/$i" +done + +find "$b" -type f -name "*.la" -delete +rm -fv "$b/%_libdir"/*.so + +mkdir -p "$b/%_sysconfdir/%name" "$b/%_datadir/%name" +%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150400 +mkdir -p "$b/etc/php8/fpm/php-fpm.d" +cp -a "$b/usr/share/gromox/fpm-gromox.conf.sample" "$b/etc/php8/fpm/php-fpm.d/gromox.conf" +%endif +%if 0%{?sle_version} && 0%{?sle_version} < 150400 +mkdir -p "$b/etc/php7/fpm/php-fpm.d" +cp -a "$b/usr/share/gromox/fpm-gromox.conf.sample" "$b/etc/php7/fpm/php-fpm.d/gromox.conf" +%endif +%if 0%{?rhel} || 0%{?fedora_version} +mkdir -p "$b/etc/php-fpm.d" +cp -a "$b/usr/share/gromox/fpm-gromox.conf.sample" "$b/etc/php-fpm.d/gromox.conf" +%endif +perl -i -lpe 's{Type=simple}{Type=simple\nRestart=on-failure}' "$b/%_unitdir"/*.service +%fdupes %buildroot/%_prefix + +%global services gromox-delivery.service gromox-delivery-queue.service gromox-event.service gromox-http.service gromox-imap.service gromox-midb.service gromox-pop3.service gromox-snapshot.service gromox-snapshot.timer gromox-timer.service gromox-zcore.service + +%if 0%{?service_add_pre:1} +%pre +# User addition done a priori by system-user-gromox(!) +%service_add_pre %services +%endif + +%post +/sbin/ldconfig +%tmpfiles_create tmpfiles-gromox.conf +%if 0%{?service_add_post:1} +%service_add_post %services +%else +%systemd_post %services +%endif +if ! test -x /usr/bin/systemctl; then + exit 0 +fi +# saslauthd re-opens pam_gromox.so everytime, however +# libgromox_common.so stays resident because of STB_UNIQUE symbols, +# therefore saslauthd can run into the problem that a new version of +# the pam module will be combined with a too old version of gromox +# libs. No good solution in sight.. +/usr/bin/systemctl try-restart grommunio-chat.service php-fpm.service saslauthd.service 2>/dev/null || : +# Delete old service links +if /usr/bin/systemctl is-enabled gromox-exch.target >/dev/null 2>/dev/null; then + echo Migrating gromox-exch.target + /usr/bin/systemctl enable gromox-http.service gromox-midb.service gromox-zcore.service || : + /usr/bin/systemctl disable gromox-exch.target || : +fi +if /usr/bin/systemctl is-enabled gromox-mra.target >/dev/null 2>/dev/null; then + echo Migrating gromox-mra.target + /usr/bin/systemctl enable gromox-imap.service gromox-pop3.service || : + /usr/bin/systemctl disable gromox-mra.target || : +fi +if /usr/bin/systemctl is-enabled gromox-mta.target >/dev/null 2>/dev/null; then + echo Migrating gromox-mta.target + /usr/bin/systemctl enable gromox-delivery.service gromox-delivery-queue.service || : + /usr/bin/systemctl disable gromox-mta.target || : +fi +if /usr/bin/systemctl is-enabled gromox-sa.target >/dev/null 2>/dev/null; then + echo Migrating gromox-sa.target + /usr/bin/systemctl enable gromox-event.service gromox-timer.service || : + /usr/bin/systemctl disable gromox-sa.target || : +fi + +%preun +%if 0%{?service_del_preun:1} +%service_del_preun %services +%else +%systemd_preun %services +%endif + +%postun +%if 0%{?service_del_postun:1} +%service_del_postun %services +%else +%systemd_postun_with_restart %services +%endif +/sbin/ldconfig + +%files +%_sysconfdir/php* +# "grommunio" permission is exercised by grommunio-admin-api. +# pam.cfg needs to be accessible by arbitrary programs (hence we need at least 0751). +%attr(0755,grommunio,gromoxcf) %dir %_sysconfdir/%name/ +%_sbindir/gromox-* +%_libdir/*.so.* +%_libdir/%name/ +%_libdir/php*/ +%_libexecdir/%name/ +%_pamdir/ +%_datadir/%name/ +%_mandir/man*/*.[0-9]* +%_tmpfilesdir/*.conf +%_unitdir/* +%attr(0770,gromox,gromox) /var/lib/gromox/ +%attr(0770,gromox,gromox) /var/log/gromox/ +%if 0%{?suse_version} >= 1500 && 0%{?suse_version} < 1550 +%dir %_libexecdir +%endif +%license LICENSE.txt +%doc doc/changelog.rst + +%changelog