Files
dezky/services/zpush/config/combined.config.php
T
Ronni Baslund fc621cdf81
ci / changes (push) Successful in 3s
ci / tc_booking (push) Has been skipped
ci / tc_operator (push) Has been skipped
ci / tc_platform_api (push) Has been skipped
ci / test_platform_api (push) Has been skipped
ci / tc_website (push) Successful in 20s
ci / tc_portal (push) Successful in 26s
ci / build_booking (push) Has been skipped
ci / build_operator (push) Has been skipped
ci / build_platform_api (push) Has been skipped
ci / build_zpush (push) Successful in 11s
ci / build_portal (push) Successful in 41s
ci / deploy (push) Successful in 39s
fix(mail): drop contacts from the EAS bundle — Stalwart 404s empty addressbook homes
BackendCombined login is all-or-nothing, and Stalwart returns 404 for
/dav/card/<account>/ when the account's default address book was never
created (it doesn't auto-create on the gateway's PROPFIND the way the
calendar home worked) — so CardDAV killed every otherwise-successful
EAS login. Exchange accounts now bundle mail + calendar; contacts stay
on the Apple-profile CardDAV path. Re-enable BackendCardDAV once
platform-api provisions a default address book at mailbox creation.

Copy/docs aligned: portal hint, SERVICES.md, website FAQ (da+en).
2026-06-12 15:31:27 +02:00

50 lines
2.2 KiB
PHP

<?php
// dezky replacement for Z-Push's backend/combined/config.php (applied at
// image build, see Dockerfile). One EAS account fans out to Stalwart over
// IMAP (mail) and CalDAV (calendar/tasks). Login succeeds only if every
// backend authenticates — they all hit the same Stalwart account with the
// same credentials, so that's one effective check.
//
// CardDAV (contacts) is deliberately NOT in the bundle yet: the combined
// login is all-or-nothing, and Stalwart 404s the addressbook home of any
// account whose default address book was never created — which killed every
// EAS login on first deploy. Re-add 'd' => BackendCardDAV once platform-api
// provisions a default address book at mailbox creation. Apple devices get
// contacts via the .mobileconfig CardDAV payload meanwhile.
class BackendCombinedConfig {
public static function GetBackendCombinedConfig() {
return array(
'backends' => array(
'i' => array('name' => 'BackendIMAP'),
'c' => array('name' => 'BackendCalDAV'),
),
'delimiter' => '/',
'folderbackend' => array(
SYNC_FOLDER_TYPE_INBOX => 'i',
SYNC_FOLDER_TYPE_DRAFTS => 'i',
SYNC_FOLDER_TYPE_WASTEBASKET => 'i',
SYNC_FOLDER_TYPE_SENTMAIL => 'i',
SYNC_FOLDER_TYPE_OUTBOX => 'i',
SYNC_FOLDER_TYPE_OTHER => 'i',
SYNC_FOLDER_TYPE_USER_MAIL => 'i',
SYNC_FOLDER_TYPE_APPOINTMENT => 'c',
SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c',
SYNC_FOLDER_TYPE_TASK => 'c',
SYNC_FOLDER_TYPE_USER_TASK => 'c',
// No contacts/notes/journal on EAS for now — let mail own
// them so folder creation never lands somewhere surprising.
SYNC_FOLDER_TYPE_CONTACT => 'i',
SYNC_FOLDER_TYPE_USER_CONTACT => 'i',
SYNC_FOLDER_TYPE_NOTE => 'i',
SYNC_FOLDER_TYPE_USER_NOTE => 'i',
SYNC_FOLDER_TYPE_JOURNAL => 'i',
SYNC_FOLDER_TYPE_USER_JOURNAL => 'i',
SYNC_FOLDER_TYPE_UNKNOWN => 'i',
),
'rootcreatefolderbackend' => 'i',
);
}
}