SHA256
1
0
forked from pool/gromox

[info=4267ab00735a837a8284ccd0b9301efcd9a2b72aa6e0c678bf05fe0e5264de14]

OBS-URL: https://build.opensuse.org/package/show/server:mail/gromox?expand=0&rev=91
This commit is contained in:
Jan Engelhardt 2024-08-14 07:49:07 +00:00 committed by Git OBS Bridge
commit 421859be11
14 changed files with 1364 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -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

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

4
_scmsync.obsinfo Normal file
View File

@ -0,0 +1,4 @@
mtime: 1719000984
commit: 4267ab00735a837a8284ccd0b9301efcd9a2b72aa6e0c678bf05fe0e5264de14
url: https://src.opensuse.org/jengelh/gromox
revision: master

3
build.specials.obscpio Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2f54d908e943fed7e33b75d2ec7666c35c40e6ff1aeec3e24105d36b00f391d1
size 256

5
debian.changelog Normal file
View File

@ -0,0 +1,5 @@
gromox (2.30-0) unstable; urgency=low
* Update.
-- Gromox <null@gromox.com> Thu, 02 May 2024 00:00:00 +0000

28
debian.control Normal file
View File

@ -0,0 +1,28 @@
Source: gromox
Priority: optional
Section: mail
Maintainer: Gromox <null@gromox.com>
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.

63
debian.gromox.postinst Normal file
View File

@ -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

31
debian.rules Normal file
View File

@ -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

7
gromox-2.30.tar.asc Normal file
View File

@ -0,0 +1,7 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQQr2lY+nd5Gr3HMFx2utpQaL5yZRAUCZnWJQwAKCRCutpQaL5yZ
RMUVAP47FfS0P2c+k1uFDUJRUJLTC/KI22O+G7mI3sDRL+3t6QEAgRLUst55g3x+
hWM8JTXCJK1BrwJA3Rox0OEEalPJBgk=
=Lr3R
-----END PGP SIGNATURE-----

BIN
gromox-2.30.tar.zst (Stored with Git LFS) Normal file

Binary file not shown.

629
gromox.changes Normal file
View File

@ -0,0 +1,629 @@
-------------------------------------------------------------------
Fri Jun 21 14:09:43 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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. <user+extension@example.com>
* mbop: new subcommand ``recalc-size`` to recalculate store size
-------------------------------------------------------------------
Wed Oct 4 10:37:50 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- Add 0001-build-resolve-compile-error-with-gcc-13.patch
-------------------------------------------------------------------
Mon Mar 13 09:13:31 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- Add 0001-snapshot-safer-parsing-of-snapshot.cfg.patch
[boo#1209051]
- Updated directory permissions
-------------------------------------------------------------------
Thu Mar 9 23:44:07 UTC 2023 - Jan Engelhardt <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- 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 <jengelh@inai.de>
- Initial entry for build.opensuse.org (gromox-1.1.43.566b624e)

51
gromox.dsc Normal file
View File

@ -0,0 +1,51 @@
Format: 1.0
Source: gromox
Architecture: any
Version: 2.30
DEBTRANSFORM-RELEASE: 1
Maintainer: Gromox <null@gromox.com>
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:

269
gromox.keyring Normal file
View File

@ -0,0 +1,269 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Ag==
=nzyx
-----END PGP PUBLIC KEY BLOCK-----

247
gromox.spec Normal file
View File

@ -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