25 Commits

Author SHA256 Message Date
c64dea7747 Gromox 3.4 2026-02-02 12:37:55 +01:00
a4321bca6f Gromox 3.3 2025-12-27 12:53:42 +01:00
07de5d7b15 Gromox 3.2 2025-11-24 17:47:39 +01:00
55c63d9f13 Gromox 3.1 2025-10-26 17:14:50 +01:00
8ccf03b7e7 Gromox 3.0 2025-09-30 23:24:37 +02:00
7b902c42ee Gromox 2.48 2025-07-31 18:11:57 +02:00
7b12c4de23 Gromox 2.47 2025-07-28 19:22:27 +02:00
2b5db2104b Gromox 2.46 2025-05-28 17:02:59 +02:00
601dfdee7f gromox 2.45 2025-04-15 23:48:24 +02:00
8729858c78 Trim excess keys from keyring 2025-03-27 00:18:01 +01:00
5f35cf00d8 gromox 2.44 2025-03-19 19:48:39 +01:00
71f725abe7 Gromox 2.43 2025-03-06 18:25:43 +01:00
81320d95a4 gromox 2.42 2025-02-19 18:41:36 +01:00
872ac32a00 Gromox 2.41 2025-02-07 11:40:23 +01:00
411e216a6b Gromox 2.40 2025-01-28 16:45:51 +01:00
a89c2f72d9 gromox 2.39 2025-01-22 01:30:05 +01:00
f39ff584af gromox 2.38 2024-12-07 12:31:36 +01:00
58428fa92c Gromox 2.37 2024-11-20 12:05:29 +01:00
a8a3c49feb Gromox 2.36 2024-11-06 17:02:58 +01:00
fbc8d5d4df Gromox 2.35 2024-10-15 14:13:39 +02:00
cc345f8843 gromox 2.34 2024-10-08 20:14:21 +02:00
3493ed7aa4 gromox 2.33 2024-10-01 22:16:01 +02:00
c94e92d821 gromox 2.32 2024-09-04 21:13:44 +02:00
cd650e4cb5 Gromox 2.31 2024-08-14 11:29:32 +02:00
4267ab0073 Gromox 2.30 2024-06-21 22:16:24 +02:00
15 changed files with 642 additions and 354 deletions

View File

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

View File

@@ -1,20 +1,18 @@
Source: gromox
Priority: optional
Section: mail
Maintainer: Gromox <null@gromox.com>
Maintainer: Gromox <dev@gromox.com>
Standards-Version: 4.5.0
Build-Depends: debhelper-compat (= 12)
Build-Depends: debhelper-compat (= 13)
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)
system-user-grommunio, system-user-gromox (>= 4), w3m
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

50
debian.copyright Normal file
View File

@@ -0,0 +1,50 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://grommunio.com/, https://github.com/grommunio/gromox
Upstream-Name: gromox
Upstream-Contact: grommunio <dev@grommunio.com>
Files: *
Copyright: Copyright 2019-2025 grommunio GmbH.
License: AGPL-3 and GPL-3 and GPL-2
See LICENSE.txt for official license document.
.
Gromox incorporates code from the Samba project, which is subject
to the GPL-3, found /usr/share/common-licenses/GPL-3 on Debian based
systems.
.
Gromox also incorporates programs from Steep, which carried the following
block of information. "Certain software" refers to the Samba parts
that Steep also included.
.
-----8<-----
.
This is a release of steep 1.0, brought to you by Yang Songyi.
This software is released under version 2 of the GNU General
Public License (GPLv2), as set forth below, with the following
additional permissions:
.
This distribution of steep 1.0 is distributed with certain software
that is licensed under separate terms, as designated in a particular
file or component or in the license documentation. Without limiting
your rights under the GPLv2, the authors of steep hereby grant you an
additional permission to link the program and your derivative works
with the separately licensed software that they have included with
the program.
.
Election of GPLv2
.
For the avoidance of doubt, except that if any license choice other
than GPL or LGPL is available it will apply instead, Yang Songyi elects
to use only the General Public License version 2 (GPLv2) at this time for
any software where a choice of GPL license versions is made available
with the language indicating that GPLv2 or any later version may be
used, or where a choice of which version of the GPL is applied is
otherwise unspecified.
.
------>8-------------
.
GPL-2 can be found in /usr/share/common-licenses/GPL-2 on Debian based
systems.
.
GNU AFFERO GENERAL PUBLIC LICENSE version 3 (AGPL-3) text in adjoining
LICENSE.txt

2
debian.gromox.docs Normal file
View File

@@ -0,0 +1,2 @@
LICENSE.txt
README.rst

View File

@@ -1,6 +1,10 @@
#!/bin/sh
# postinst script for grommunio-admin-api
#
# see: dh_installdeb(1)
set -e
. /usr/share/debconf/confmodule
set_perms()
@@ -10,49 +14,50 @@ set_perms()
MODE="$3"
FILE="$4"
if ! dpkg-statoverride --list "$FILE" >/dev/null 2>&1; then
chown -h "$USER:$GROUP" "$FILE"
chown "$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 || :
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 \
saslauthd.service 2>/dev/null || :
fi
# %post
if test -x /usr/bin/systemctl; then
systemctl daemon-reload || :
systemctl try-restart \
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
}
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package
case "$1" in
configure|reconfigure)
xpostinst
;;
abort-upgrade|abort-remove|abort-deconfigure)
;;
@@ -61,3 +66,12 @@ abort-upgrade|abort-remove|abort-deconfigure)
exit 1
;;
esac
# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.
#DEBHELPER#
xpostinst
exit 0

View File

@@ -2,9 +2,17 @@
export DH_VERBOSE=1
phpdir := $(shell readlink -f $$(php-config --ini-path)/..)
INSTDIR := debian/gromox
unitdir := $(shell pkg-config systemd --variable systemdsystemunitdir)
%:
dh $@ --parallel --with autoreconf
-mkdir -p debian/source && echo "1.0" > debian/source/format
dh $@ --with autoreconf
# Somehow autoconf is not picking up systemd unitdir correctly
# we need to install system unit files in the correct place depending
# on whether the distro is by default /usr merged or not
override_dh_auto_configure:
dh_auto_configure -- --with-unitdir=$(unitdir)
override_dh_auto_install:
dh_auto_install
@@ -29,3 +37,10 @@ override_dh_auto_install:
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
# Remove run/gromox as its a mounted tmpfs
rm -rf debian/gromox/run debian/gromox/var/run || true
# Add grommunio standard systemd service handling
override_dh_installsystemd:
dh_installsystemd --no-start --no-enable --restart-after-upgrade

View File

@@ -0,0 +1,10 @@
# OBS debtransform does things with debian/changelog
gromox source: no-nmu-in-changelog
# OBS debtransform does things with debian/changelog
gromox source: source-nmu-has-incorrect-version-number
# OBS debtransform versioning is not incomprehensible...
gromox source: odd-historical-debian-changelog-version

View File

@@ -1,7 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iHUEABYKAB0WIQQr2lY+nd5Gr3HMFx2utpQaL5yZRAUCZl5NgwAKCRCutpQaL5yZ
RMCnAPwOgYVQVjp8zqtWAfn5VhHwLtIAo1eliTkZMsnb1RUWvAD9EdVn4pZsAPF5
p/k/PgJMmKGkKfrLH/cY3gKvRL8cFgY=
=C8Wb
-----END PGP SIGNATURE-----

View File

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

8
gromox-3.4.tar.asc Normal file
View File

@@ -0,0 +1,8 @@
-----BEGIN PGP SIGNATURE-----
iJEEABYKADkWIQQr2lY+nd5Gr3HMFx2utpQaL5yZRAUCaYCDZhsUgAAAAAAEAA5t
YW51MiwyLjUrMS4xMSwyLDIACgkQrraUGi+cmUR1nwD+PCv7Vwyev6Zau4JbTQa2
+90/2xDC8N+rWi6rSFNLU9QA/0TiIKsYApqUZZGzFKk0xrvJPgmCvy23S7gp6ClE
vqYP
=HqSL
-----END PGP SIGNATURE-----

BIN
gromox-3.4.tar.zst LFS Normal file

Binary file not shown.

View File

@@ -1,3 +1,469 @@
-------------------------------------------------------------------
Mon Feb 2 11:36:15 UTC 2026 - Jan Engelhardt <jengelh@inai.de>
- Update to release 3.4
* mbop: new "zaddrxlat" command
* delivery: add pre-delivery junk shelving and ``lda_junk_rules``
config directive
* mrautoproc: server-side processed meeting requests
automatically entered into the calendar had lacked the flags
asfMeeting+asfReceived, which was fixed.
* nsp: seeking backwards with the seekEntries routine jumped too
far backwards, causing the last screenful of the Outlook GAL to
be misrepresented.
* oxcmail: the "Keywords:" RFC5322 header (Categories) used to
get filled with text garbage, which is now fixed.
* zcore: plug a memory leak occuring when importing vCards
* Any data, when converted from windows-1255 or 1258 character
set to Unicode, sometimes lost the last character in the
conversion, which has been fixed.
* exmdb: abort purge-datafiles if there is a database error midway
* imap: release potentially-large APPEND buffers much earlier
* exporter: plug two memory leaks
* oxcmail: limit nesting depth of attachments during export to 7
* oxcmail: RFC 5322 header fields are now treated as US-ASCII as
mandated, and no longer magically assumed to be in the same
charset as the body.
* exporter: FAI messages are no longer emitted by default and
explicitly need to be requested with the -a option.
* ruleproc: treat not only "Busy" as a collision, but also
"Tentative" and "Out-Of-Office"
* ab_tree: PR_COMPANY_NAME is no longer synthesized from the
title of the domain a user belongs to
-------------------------------------------------------------------
Sat Dec 27 11:53:34 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 3.3
* oxvcard: include photo when converting MAPI contact objects to
VCARD
* exporter: support export of multiple messages to GXMT
* exporter: support for folder export to GXMT
* importer: support a read-only mode
* exmdb: include RTF in the cross-body format synchronization
when the message is saved, making Outlook Notes or Outlook
Contact notes display something in grommunio-web and other
clients
* exmdb: new read_delegate/write_delegate EXRPCs so that
delegates.txt is no longer accessed via filesystem
* exch: allow user sending mail with From: line set to own aliases
* mysql_adaptor: regard aliases for user_ids and displayname
* ews: recognize <TimeZoneContext> elements located in the SOAP
header
* ews: avoid sending newly created message items when message
invitation flag is set
* zcore: obtain freebusy information for own mailbox using owner
mode, so that setting e.g. the "default" ACL default for one's
calender does not deprive the user of his own freebusy view.
* exmdb: the event volley when the last row of a MAPI table with
categories got deleted had wrong event data
* emsmdb: calls over RPCH with large outputs would sometimes just
report an error due to insufficient buffer sizes, which has
been fixed.
* mapi_lib: repair botched html_to_rtf with non-UTF-8 HTML input
* rtf_to_html and html_to_plain misconverted
U+007F,U+07FF,U+7FFF,U+7FFFF to faulty UTF-8, which has been
fixed
-------------------------------------------------------------------
Mon Nov 24 16:35:44 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 3.2
* More supported EWS handlers and types (GetRoomLists, GetRooms,
tItemAttachment, tUserConfigurationName, CategoryList, ReplyTo)
* istore: standalone exmdb_provider process launcher
* oxcmail: on export (MAPI-to-IM), recognize EX-in-ONEOFF and
EMSAB (GAB) entryids in the Reply-To field and substitute them
* kdb2mt: entryids and search keys for senders/recipients are now
translated with the help of user maps
* ab_tree: users with HIDE_FROM_GAL or HIDE_FROM_AL were not
hidden in all cases, which has been rectified
* imap: suppress ``AUTH=LOGIN`` advertisement before TLS
established and instead emit ``LOGINDISABLED`` capability
* ews: avoid sending out emClient's draft messages
* exmdb: MAPI table row deletion events were not being delivered,
which was fixed
* delivery: the OOF autoresponder was rewritten so it does not
use direct filesystem access anymore (since the mailbox might
not be present on the same host where the LDA runs)
-------------------------------------------------------------------
Sun Oct 26 16:09:53 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 3.1
* http: support for SPNEGO authentication (Kerberos-in-SPNEGO or
NTLMSSP-in-SPNEGO) with the HTTP "Authorization: Negotiate"
header.
* dscli: try all oxdisco URLs until one succeeds
* exmdb: support repeated import of permission data
* ews: create calendar item after accepting a MR with MacMail
* emsmdb,zcore: Send-As mail now correctly has the delegator in
Envelope-From
* email_lib: deal with MIME parts with zero header lines
* nsp: avoid buffer overruns in nsp_interface_fetch_property
* emsmdb: Partial message change tracking was buggy and deleted
* http: A workaround was added for OpenSSL 3.0 so that
connections from Outlook 2010 once again succeed.
* mysql_adaptor: Improve the time needed to compute the composite
mailbox permission for user in a case of a mailbox with 100K
ACL entries.
* exmdb: deactivate movecopy/deletemessages event storm compaction
* emsmdb: outgoing lzxpress compression in the EMSMDB protocol is
now disabled as it does not compress well for the time
invested.
-------------------------------------------------------------------
Tue Sep 30 21:02:03 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 3.0
* eml2mt now transmits the RFC5322 representation into the
message store.
* midb now transmits the RFC5322 representations of messages
created via IMAP into the message store.
* oxcical: implement support for VTODO and VJOURNAL.
* mbop: add "freeze" and "thaw" commands.
* mbop: support UTC/zone suffixes for getfreebusy -a/-b
arguments.
* exmdb: new config directive ``exmdb_eph_prefix`` to put
ephmeral files like tables.sqlite3 on a local disk.
* exmdb: add a time index over messages to speed up common cases
of grommunio-web GetContentsTable requests.
* oxdisco: the AutoConfig mechanism now emits an EWS server
information block.
* oxcical: iCal events with a date in DTSTART & DTEND but without
X-MICROSOFT-CDO-ALLDAYEVENT are now transformed into Allday
events even if the event is longer than one day.
* delivery: emit MDN-RRT messages even with
``lda_twostep_ruleproc`` is set.
* oxdisco: AutoConfig XML now features the incomingServer type
parameter in the right place.
* oxdisco: AutoConfig now emits outgoing server port 587 as type
smtp.
* ruleproc: auto-enter MRs into target calender even if the
sender is not going to get a response.
* ews: Avoid sending multiple ``<?xml ?>`` lines into the
notification stream HTTP response body.
* ews: trim "duplicate" recipients when a newly-created item has
recipients in both <mimeContent> and <To>/<Cc>.
* ews: prevent FAI messages from polluting the Normal Message Set
during ICS.
-------------------------------------------------------------------
Thu Jul 31 16:06:13 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.48
* gromox.cfg now has a ``ruleproc_debug`` directive (applies to
the TWOSTEP Processor only)
* ews: repair a nullptr dereference from the OOF XML change
* exmdb: make EXRPC write_message_v2 fill in return MID/CN values
* ab_tree: restore filtering of objects with AB_HIDE_FROM_GAL
for NSP (this was lost in a Global Address Book provider
rewrite in 2.40)
-------------------------------------------------------------------
Mon Jul 28 16:42:44 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.47
* oxdisco: support RFC 6764 well-known endpoints for
CalDAV/CardDAV (if not running grommunio nginx config in front)
* oxcical: try to handle ICS files with missing VTIMEZONE blocks
* oxcical: support YEARLY recurrences with BYDAY without BYSETPOS
* imap: offer $Forwarded keyword for APPEND/STORE commands
* nsp: remove meaningless session_check directive; no longer
erroneously reject requests after daemon received SIGHUP
* oxcical: avoid setting out-of-spec MAPI recurnum for
FREQ=MONTHLY,BYDAY= recurrences
* oxcical: fix wrong BYMONTH calculation for MONTHNTH recurrences
being exported to iCal
* midb, imap: make EXPUNGE synchronous so that old UIDs don't
reappear in a subsequent FETCH
* midb: respect setting \Deleted, \Answered, \Flagged during APPEND
* exmdb: resolve a case of "INSERT INTO t... UNIQUE constraint
failed" log message
* exmdb: stop losing RFC5322 representation when a message is
copied
* HTML-to-Text conversion using w3m suffered from an encoding
mismatch, which was fixed.
-------------------------------------------------------------------
Wed May 28 15:02:51 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.46
* cgkrepair: detect Change Keys with impossibly high values
* cgkrepair: retain a PCL's foreign XIDs
* ical2mapi: support FREQ=MONTHLY recurrences using BYDAY= but
no BYSETPOS= * mt2exm: the -B option now supports numeric
identifiers
* ical2mapi: expand E-2718 error into new codes E-28xx with
extended reason
* imap: allow '%' '*' and '?' in folder names
* daemons: the default log destination is now "automatic"
(stderr/syslog autodetect) rather than "stderr"
* mapi2ical: deal with strange allday events that do not
start/end on midnight
* htmltotext: w3m is now instructed on charsets and does not
need to guess anymore
* exch: value for the PR_MAX_SUBMIT_MESSAGE_SIZE property was
off by a factor of 1024, which has been fixed
* mkprivate/mkpublic: generate a PR_MAPPING_SIGNATURE value
distinct from PR_STORE_RECORD_KEY for newly-initialized
stores
* ical2mt, vcf2mt: messages are no longer emitted with an
anchor, which now allows free placement with mt2exm -B
* ical2mapi: ignore unreasonable requests like BYMONTHDAY=32
-------------------------------------------------------------------
Tue Apr 15 21:48:13 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.45
* emsmdb: avoid emissions of PR_MESSAGE_SIZE in fastdownctx
streams (this makes PST export possible).
* email_lib: fix a lost space in IMAP BODYSTRUCTURE response.
* mysql_adaptor: add support for nesting mlists in permission
checks.
* Recognize the IANA Character Set names `utf-16le`, `utf-16be`
(and 32) when converting from RFC5322 to MAPI.
-------------------------------------------------------------------
Wed Mar 26 23:17:52 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Trim excess keys from keyring
-------------------------------------------------------------------
Wed Mar 19 18:47:59 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.44
* mysql_adaptor: do not fail organization-level GAL population
when a domain belonging to the org has zero members
* gab: resolve assertion when traversing GAL
* mysql_adaptor: fix OOB when reading PT_DOUBLE entries from
user_properties
* emsmdb: fix OOB write when computing PR_MAILBOX_OWNER_NAME_A
* mbop: make clear-profile nuke all profile parts again
-------------------------------------------------------------------
Thu Mar 6 16:57:28 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.43
* oxm2mt: support embedded messages
* mysql_adaptor: add TLS connection config directives
* imap: reduce memory footprint when FETCHing messages
* imap: resolve shutdown ordering crash
* exmdb: upgrade 0-length PR_ENTRYIDs to fake 1 byte to soothe
Outlook Cached Mode syncer
-------------------------------------------------------------------
Wed Feb 19 14:33:49 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.42
* exmdb_local: plug memory leak resulting from RPC execution
* alias_resolve: plug memory leak resulting from GAB refreshes
* alias_resolve: avoid unnecessary GAB refresh on shutdown
* oxdisco: recognize /mail/config-v1.1.xml URI
* New internal addressbook implementation backing the
NSPI-provided and Zcore-provided AB functionality
-------------------------------------------------------------------
Fri Feb 7 10:36:28 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.41
* ldap_adaptor: plug two memory leaks
* exmdb: plug a memory leak related to subscription destruction
* oxcical: do process TRIGGER duration value type for reminders
* midb: resolve flakey update of flagged/replied/forwarded status
* midb: when a MAPI message has changed and requires a new
IMAPUID, convey the expunge of the old IMAPUID much sooner to
IMAP clients
* pop3: resolve a NULL deref/crash during RETR command
* imap: restore SEARCH command looking at right portion of a
QP-encoded message
* mkprivate: new message stores now have `frightsVisible` set
on the calendar folder
-------------------------------------------------------------------
Tue Jan 28 15:26:48 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.40
* zcore: avoid unwrapping Content-Transfer-Encoding twice for
clearsigned S/MIME
* ews: calculate timezone offsets for local time only
* imap, pop3: multi-server capability, replacing direct disk
I/O by network RPCs to the exmdb storage backend
-------------------------------------------------------------------
Tue Jan 21 22:05:13 UTC 2025 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.39
* midb: synchronize "Answered", "Forwarded" and "Flagged" flags
between MAPI and midb
* midb: pass message flag modification notifications
(answered/forwarded/flagged/read/etc.) to imapd
* mbop: new foreach.* command group which replaces for-all-users
-------------------------------------------------------------------
Sat Dec 7 11:21:28 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.38
* oxcical: ignore zero-length PidLidTimeZoneStruct on export
rather than failing the operation
* freebusy: process events with recurrence patterns > 510 bytes
* mbop-get-freeubsy: respect the absence of start_time,end_time
(-a/-b) parameters
* mapi_lib: support TNEF export of messages without
PR_INTERNET_CPID
* email_lib: no longer reject import of time-based recurrent
series (`RRULE` line with `UNTIL` specifier) with a single
occurrence
* midb: deal with folder changes that occurr during times when
midb is not running
* exm2eml: add TNEF file export support
* imap: reject creating extant folder
* midb: change M-COPY from a read-write cycle to server-side
copy, thereby preserving mail headers from now on
* midb/imapd: folder names are now treated case-sensitive, just
like MAPI did it already
-------------------------------------------------------------------
Wed Nov 20 10:58:49 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.37
* exmdb: fix garbage being returned to clients when reading v1z
files from cid/
* exmdb: stop an SQL error from appearing when `gromox-mbop
recalc-sizes` is used on an empty store
* oxcical: evaluate all, instead of just two, STANDARD/DAYLIGHT
tzprops for determining the relevant DST timezone
* ews: fix time elements, e.g. in OOF settings, always having
value 1970-01-01
* email_lib: on vCard ingestion, treat ORG lines as the
structured field that they are specified as, rather than as
one text value
* exmdb_local: autovivify new named properties on delivery,
fixing log message ``D-1220`` when ingesting a vCard message
into an empty store via SMTP/LMTP
* dbop_sqlite: avoid use of the ``UNIXEPOCH`` function since it
is not available in AlmaLinux 9
* lib: add missing chown call on newly-created logfiles to
account for subsequent privilege separation
* dscli: evaluate not just one AutoDiscover URL but multiple as
the specifation asks for
* mbop: stop printing the help text multiple times when the
"for-all-users" subcommand was used but options were rejected
* gromox-mbsize: new debug utility for mailbox size analysis
* gromox-tnef2mt: add support for importing standalone TNEF files
-------------------------------------------------------------------
Wed Nov 6 15:51:31 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.36
* ews: fix an ABA locking problem when EWS unsubscribe actions
were processed
* genimport: fix a data juggling issue that led to mt2exm
printing ``proptag … from input stream has no named property
info``
* mbck: do not attempt to repair allocated_eids if repair mode
was not selected, fixing mbck printing ``sqlite3_prep(INSERT
INTO allocated_eids) ... inside a readonly TXN``.
* exmdb: fix an issue where creating new embedded messages
could lead to ``sqlite3_exec(… INSERT INTO messages ...
VALUES (65536, …): UNIQUE constraint failed: messages.message_id (19)``
* mkprivate et al: fix an issue where force-overwriting
databases would print "database is locked"
* mbop: new commands "ping", "for-all-users", "echo-username"
* exmdb: faster process shutdown through parallelized closing
of sqlite files
* exmdb: better location diagnostics for RO-RO transactions,
for RW-in-RO, and ROLLBACK issues
* exmdb: deactivate implicit integrity check when upgrading a
mailbox's database schema, it takes too much time
(Integrity checks can still be done offline with ``mkprivate
-U --integ``)
-------------------------------------------------------------------
Tue Oct 15 11:24:31 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.35
* alias_resolve: resolve nullptr deref crash
* ews: resolve nullptr deref crash
* mapi_lib: fix out-of-bounds access in PROBLEM_ARRAY::transform
* mapi_lib: rop_util_get_gc_value used the wrong mask, which
caused "Change commit failed because the object was changed
separately"
* exmdb: let PR_ACCESS include permissions from all group
memberships
-------------------------------------------------------------------
Tue Oct 8 15:20:02 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.34
* php_mapi: cure crash occurring with mapi_getidsfromnames
* midb: resolve "inside a readonly TXN" warnings during message
deletion
* exmdb: emit notifications only after SQL transactions are
complete
* imap: resolve unstable EXPUNGE observability
-------------------------------------------------------------------
Tue Oct 1 14:13:21 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.33
* oxcmail: Implement MIME fragment joining for the construction
of the contents of PR_HTML.
* dscli: add --ac option to test Mail Autoconfig (what
Thunderbird uses in leu of AutoDiscover)
* http: credential caching for HTTP Basic (config directive
``http_basic_auth_cred_caching``, defaulting to 60s)
* oxcical: revert commit which evaluates different MAPI
timezone properties to generate DTSTART/DTEND's TZID value
-------------------------------------------------------------------
Wed Sep 4 08:17:15 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.32
* mysql_adaptor: re-speedup queries that came to ran without an
index
* mbop: make the "clear-profile" operation do clear g-web
settings again
* zcore: workaround potential hang during shutdown
* emsmdb, zcore: allow "Empty Folder" operations in public stores
* exmdb: increased verbosity during shutdown phase so it does
not appear like a hang
-------------------------------------------------------------------
Wed Aug 14 07:50:17 UTC 2024 - Jan Engelhardt <jengelh@inai.de>
- Update to release 2.31
* freebusy: get_freebusy erroneously underreported occurrences
for yearly occurrences
* freebusy: the get_freebusy routine erroneously landed in an
infinite loop if a yearly-recurring February 29 appointment
was originally created in a year not divisible by 12.
* oxcmail: take /etc/mime.types under consideration when adding
extensions to attachments
* oxcmail: priorities for MIME parts have been rectified for
multipart/alternative and non-alternative containers; the
conversion routine is no longer making picks across multiple
container siblings.
-------------------------------------------------------------------
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>

View File

@@ -1,9 +1,9 @@
Format: 1.0
Source: gromox
Architecture: any
Version: 2.29
Version: 3.4
DEBTRANSFORM-RELEASE: 1
Maintainer: Gromox <null@gromox.com>
Maintainer: Gromox <dev@gromox.com>
Homepage: https://gromox.com
Standards-Version: 4.5.0
# libbfio is in the require list because libpff-dev is lacking it (bug)
@@ -12,16 +12,16 @@ Build-Depends:
automake (>= 1:1.11) | automake1.11,
autotools-dev,
binutils (>= 2.20),
debhelper-compat (>= 12),
debhelper-compat (= 13),
devscripts,
fakeroot,
g++ (>= 7),
g++ (>= 12),
gettext,
libbfio-dev,
libcurl4-openssl-dev,
libesedb-dev,
libfmt-dev (>= 8),
libhx-dev (>= 4.12),
libhx-dev (>= 4.28),
libjsoncpp-dev (>= 1.4.0),
libkrb5-dev,
libldap2-dev,
@@ -34,7 +34,6 @@ Build-Depends:
libtinyxml2-dev (>= 8),
libtool (>= 2),
libtool-bin (>= 2) | libtool (>= 2),
libvmime-dev (>= 0.9.2),
libxml2-dev,
libxxhash-dev,
libzstd-dev,
@@ -45,7 +44,9 @@ Build-Depends:
php-dev (>= 7.0),
pkg-config (>= 0.23),
sed,
systemd,
systemd-dev | systemd,
uuid-dev,
zlib1g-dev
wmime-dev (>= 1),
zlib1g-dev,
lintian
Files:

View File

@@ -1,269 +1,13 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
Ag==
=nzyx
mDMEZgh6SxYJKwYBBAHaRw8BAQdA1luEX2LWdc7GOs5yPM7dbdT+vpFBIiZDYT5+
gu8QyX+0IEphbiBFbmdlbGhhcmR0IDxqZW5nZWxoQGluYWkuZGU+iJUEExYKAD0W
IQQr2lY+nd5Gr3HMFx2utpQaL5yZRAUCZgh6SwIbAwUJCWYBgAQLCQgHBRUKCQgL
BRYCAwEAAh4FAheAAAoJEK62lBovnJlE3a4BAJqaDko3Ouehjef/fenl9MoR57cY
R1P3t+35rn4BthF2AP4l9g4ThCqKppji7/j0hSsoKFDK07NmUvzXmydqu8z0ALg4
BGYIeksSCisGAQQBl1UBBQEBB0DuC8BZYQ/7Kao8laJUOYjp+UprZxDJnz0a+uI0
n1anMAMBCAeIfgQYFgoAJhYhBCvaVj6d3kavccwXHa62lBovnJlEBQJmCHpLAhsM
BQkJZgGAAAoJEK62lBovnJlEpJ8BAOomwoXHkBEdxK0DU6ClRH/JO//kUeDZYmQI
VNVav7TPAQC9UA3iHYE3w+4ryEhwg4egAU1HUpyPige3TpMzjwRAAg==
=y4FN
-----END PGP PUBLIC KEY BLOCK-----

View File

@@ -1,7 +1,7 @@
#
# spec file for package gromox
#
# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%define _libexecdir %_prefix/libexec
Name: gromox
Version: 2.29
Version: 3.4
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
@@ -29,7 +29,11 @@ Source: https://github.com/grommunio/gromox/releases/download/%name-%ver
Source2: https://github.com/grommunio/gromox/releases/download/%name-%version/%name-%version.tar.asc
Source8: %name.keyring
BuildRequires: fdupes
%if 0%{?suse_version} && 0%{?suse_version} < 1600
BuildRequires: gcc12-c++
%else
BuildRequires: gcc-c++
%endif
%if 0%{?suse_version}
BuildRequires: libmysqlclient-devel >= 5.6
BuildRequires: openldap2-devel
@@ -46,13 +50,12 @@ 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.12
BuildRequires: pkgconfig(libHX) >= 4.28
BuildRequires: pkgconfig(libcrypto)
BuildRequires: pkgconfig(libcurl)
BuildRequires: pkgconfig(libesedb)
@@ -64,6 +67,7 @@ BuildRequires: pkgconfig(libxxhash)
BuildRequires: pkgconfig(libzstd)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(tinyxml2) >= 8
BuildRequires: pkgconfig(wmime) >= 1
BuildRequires: pkgconfig(zlib)
BuildRequires: user(grommunio)
BuildRequires: user(gromox)
@@ -92,6 +96,7 @@ Requires(pre): user(gromox)
Requires(pre): group(gromox)
Provides: php-mapi-gromox = %version-%release
Conflicts: grommunio-admin-api < 1.10.7
Recommends: mapitags
%{?systemd_ordering}
%if !0%{?_pamdir:1}
%define _pamdir /%_lib/security
@@ -117,7 +122,11 @@ ready-to-run installation of Gromox.
%autosetup -p1
%build
%configure
%configure \
%if 0%{?suse_version} && 0%{?suse_version} < 1600
CC=gcc-12 CXX=g++-12 \
%endif
%nil
%make_build V=1
%install
@@ -159,7 +168,11 @@ cp -a "$b/usr/share/gromox/fpm-gromox.conf.sample" "$b/etc/php-fpm.d/gromox.conf
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
%check
%make_build check V=1
# Though services autoreconnect, starting them in the preferred order services is smoother
%global services gromox-timer.service gromox-http.service gromox-zcore.service gromox-event.service gromox-midb.service gromox-imap.service gromox-pop3.service gromox-delivery.service gromox-delivery-queue.service gromox-snapshot.service gromox-snapshot.timer gromox-cleaner.service
%if 0%{?service_add_pre:1}
%pre
@@ -184,27 +197,6 @@ fi
# 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}
@@ -228,7 +220,6 @@ fi
%attr(0755,grommunio,gromoxcf) %dir %_sysconfdir/%name/
%_sbindir/gromox-*
%_libdir/*.so.*
%_libdir/%name/
%_libdir/php*/
%_libexecdir/%name/
%_pamdir/