Ja, das meinte ich - wie gesagt, in Kopano funktionierte(!) die Suche auch über alte E-Mails, die nicht im Sync-Zeitraum enthalten sind.
Ich konnte jetzt doch noch mehr herausfinden:
Ich habe das Log-Level von grommunio-sync mal auf Debug gestellt - und siehe da: Die Mail-App versucht tatsächlich eine serverseitige Suche auszuführen. Allerdings scheint dazu wohl ein falscher Command benutzt zu werden, nähmlich "Find", anstatt "Search".
Hier mal ein Log-Eintrag, falls das weiter hilft:
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] -------- Start
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] cmd='Find' devType='iPhone' devId='xxx' getUser='user@example.com' from='x.x.x.x' version='1.1.25' method='POST'
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] Used timezone 'Europe/Vienna'
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] Grommunio using PHP-MAPI version: 1.34.18.4b85208 - PHP version: 7.4.33
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] Request::ProcessHeaders() ASVersion: 14.1
24/11/2022 22:34:34 [ 1560] [FATAL] [user@example.com] FatalException: Requested the grommunio-sync URL without the required GET parameters - code: 0 - file: /usr/share/grommunio-sync/index.php:67
24/11/2022 22:34:34 [ 1560] [ INFO] [user@example.com] User-agent: 'Apple-iPhone14C3/2002.82'
24/11/2022 22:34:34 [ 1560] [FATAL] [user@example.com] Exception: (FatalException) - Requested the grommunio-sync URL without the required GET parameters
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] GSync::PrintGrommunioSyncLegal()
24/11/2022 22:34:34 [ 1560] [ INFO] [user@example.com] cmd='Find' memory='1.53 MiB/2.00 MiB' time='0.00s' devType='iPhone' devId='xxx' getUser='user@example.com' from='x.x.x.x' idle='0s' version='1.1.25' method='POST' httpcode='500'
24/11/2022 22:34:34 [ 1560] [DEBUG] [user@example.com] -------- End
Wie man sieht, verwendet die iOS-Mail-App hier das Command "Find", welches nicht in grommunio-sync implementiert ist.
Auch die Outlook-App setzt einen Request zu grommunio-sync ab, sogar mit dem korrekten "Search"-Command:
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] -------- Start
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] cmd='Search' devType='Outlook' devId='xxx' getUser='user@example.com' from='x.x.x.x' version='1.1.25' method='POST'
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Used timezone 'Europe/Vienna'
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Grommunio using PHP-MAPI version: 1.34.18.4b85208 - PHP version: 7.4.33
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Request::ProcessHeaders() ASVersion: 14.1
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] GSync::CommandNeedsProvisioning(16): true
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] ProvisioningManager->ProvisioningRequired('121231877') saved device key '121231877': false
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] ProvisioningManager->ProvisioningRequired() saved policy hash '16e9d28d8d85649de7b4deb661ba5dc2' matches
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] GSync::CommandNeedsAuthentication(16): true
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Grommunio->Logon(): Trying to authenticate user 'user@example.com'..
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Grommunio->openMessageStore('user@example.com'): Found 'DEFAULT' store: 'Resource id #19'
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Grommunio->Logon(): User 'user@example.com' is authenticated
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Store supports properties containing Unicode characters.
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] GSync::HierarchyCommand(16): false
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] GSync::CommandNeedsPlainInput(16): false
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] WBXMLEncoder->startWBXML() type: vnd.ms-sync.wbxml
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] WBXMLEncoder->endTag() WBXML output completed
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] Grommunio->TerminateSearch(): terminating search for pid 1559
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] LoopDetection->ProcessLoopDetectionTerminate()
24/11/2022 23:11:30 [ 1559] [ INFO] [user@example.com] cmd='Search' memory='1.75 MiB/2.00 MiB' time='0.05s' devType='Outlook' devId='xxx' getUser='user@example.com' from='x.x.x.x' idle='0s' version='1.1.25' method='POST' httpcode='200'
24/11/2022 23:11:30 [ 1559] [DEBUG] [user@example.com] -------- End
Allerdings werden hier auch keine Ergebnisse angezeigt.
Ich habe es gerade auch nochmal mit Kopano (z-push) getestet und muss meine Aussage korrigieren.
Auch hier liefert die Suche keine Ergebnisse mehr. Die iOS-Mail-App versucht auch hier per "Find"-Command die Suche zu starten, was natürlich auch fehlschlägt.
Bei Outlook wird hier deutlich mehr geloggt (Options, FolderSync, Search mehrfach) - allerdings mit demselben Ergebnis.
Die iOS-Mail-App scheint wohl seit einem gewissen Update den falschen Command zu verwenden.
Der Find-Command ist wohl erst seit Protokoll-Version 16.1 spezifiziert. Laut Log wird allerdings Version 14.1 verwendet - also würde ich hier tatsächlich den Fehler bei Apple sehen.
In der Outlook-App sollte m. E. die Suche aber eigentlich funktionieren.
Da die Suche bestandteil des ActiveSync-Protokolls ist und auch sowohl in z-push, als auch in grommunio-sync implementiert zu sein scheint, wäre es schön, wenn das auch funktionieren würde (sofern der Client konform nach der Spezifikation arbeitet).