AnnexGroup

Änderungsprotokoll

Was sich ändert

Jede Ausgabe mit dem, was neu ist und was behoben wurde. Ohne Beschönigung — auch Fehler, die uns selbst unangenehm sind, stehen hier.

1.0.4

Sicherheitsfassung: Die Nachrichtenliste eines Postfachs prüft jetzt, ob es dem angemeldeten Benutzer gehört — und der Mail-Abgleich mit AnnexOffice wird schlanker

Behoben und verbessert

  • Die Nachrichtenliste eines Postfachs über die Programmschnittstelle (GET /api/v1/mailboxes/{id}/messages) prüfte nicht, ob das Postfach dem angemeldeten Benutzer gehört. Ein angemeldeter Benutzer desselben Servers konnte so Nachrichten fremder Postfächer abrufen, wenn er deren Nummer kannte. Seit 1.0.4 antwortet der Server für fremde Postfächer mit „nicht gefunden“. Wir empfehlen, auf 1.0.4 zu aktualisieren
  • Mail-Abgleich mit AnnexOffice: Der Server liefert Nachrichten seit dem letzten Abgleich (Delta mit Checkpoint) statt jedes Mal alle, und Löschungen kommen seitenweise vollständig an. Das wirkt mit einer AnnexOffice-Fassung, die den Abgleich nutzt (mit AnnexCREATE 0.7.4) — ältere Clients rufen weiterhin alles ab

1.0.3

Sicherheitsfassung: Die Anmeldung der AnnexTalk-App zählt Fehlversuche, sperrt Konten und beachtet gesperrte Adressen — wie die Anmeldung im Browser

Behoben

  • Der eigene Anmeldeweg der AnnexTalk-App prüfte bislang weder gesperrte Adressen noch zählte er Fehlversuche oder sperrte Konten — anders als die Anmeldung im Browser. Jetzt gelten für die App dieselben Regeln, und jeder Fehlversuch steht im Protokoll der Verwaltung

1.0.2

Korrekturfassung: Apple Kontakte richtet sich mit bloßer Adresse ein — und bietet das Konto als Standardkonto für neue Kontakte an

Behoben

  • Apple Kontakte meldete sich im Modus „Automatisch" nur mit dem Namensteil der Adresse an — der Server wies die Anmeldung ab. Er ergänzt jetzt die Domäne: Die Einrichtung ohne Servername gelingt, Adressbücher und das Firmenverzeichnis kommen an
  • Apple bot das Konto nicht als Standardkonto für neue Kontakte an — die Kontenwurzel lieferte eine leere Rechteliste. Neue Karten landeten im falschen Konto; jetzt steht das Konto zur Wahl, und das Anlegen am Server und das Löschen sind belegt

1.0.0

Der Umfang ist vollständig: vom Einrichten über den Umzug aus Exchange bis zum Arbeitsplatz an Mac und Windows — dazu in AnnexTalk Melden und Blockieren

Neu

  • In AnnexTalk lässt sich eine Nachricht melden: Die Meldung geht an die Verwaltung des eigenen Servers — sie steht im Verwaltungsprotokoll und kommt als Mail bei den Admins der Domäne an, nie bei ma-kom. Wer einen Absender blockiert, dessen Nachrichten zählen nicht mehr
  • Der Umzug aus Exchange im eigenen Haus läuft vollständig im Server: per EWS direkt, ohne Mac dazwischen — Post, Termine, Kontakte, Aufgaben, Notizen und öffentliche Ordner kommen mit, belegt an einem echten Postfach
  • Der Arbeitsplatz in der Weboberfläche an Mac und Windows — eingerichtet von der leeren Maschine bis zur ersten beantworteten Mail

0.12.1

AnnexTalk jetzt auch im Browser — Kanäle und Direktnachrichten lesen und beantworten; dazu zwei Fehler im Archiv behoben, und der Umzug nennt jeden nicht übernommenen Eintrag, der macOS-Installer prüft die Systemversion, die Systemlage gleicht MX und SRV mit dem Zertifikat ab

Neu

  • Die Weboberfläche hat einen Menüpunkt AnnexTalk: Kanäle und Direktnachrichten lassen sich dort lesen und beantworten — Grenze: kein Ungelesen-Zähler, keine Threads, keine Reaktionen; neue Nachrichten holt „Aktualisieren“

Behoben

  • Unter Aufbewahrungssperre zählte das Archivieren falsch: `archive-run` meldete etwa „24 archiviert", obwohl die Sperre keine Nachricht bewegt hatte. Die Sperre hat immer gegriffen — es ist nichts verloren gegangen, nur die Zahl stimmte nicht. Jetzt zählt der Befehl nur, was wirklich im Archiv liegt
  • Der tägliche Archivierungslauf endete nicht mehr, wenn sich eine Nachricht mit abgelaufener Frist nicht archivieren ließ (etwa in einem Ordner ohne Eigentümer) — er holte sie immer wieder und drehte endlos. Jetzt bricht er ab und meldet, welche Nachrichten liegen blieben
  • Der macOS-Installer prüfte die Mindestversion nicht: Auf einem Mac mit zu altem System brach AnnexGroup beim Start mit „dyld: Symbol not found" und „Abort trap" ab — ohne Hinweis, dass es am System liegt. Jetzt weisen beide Wege ab, bevor etwas abgelegt wird: `install-macos.sh` mit „AnnexGroup braucht macOS 14 oder neuer; dieser Mac hat macOS …", der .pkg-Installer mit dem Hinweis von macOS, dass macOS 14 vorausgesetzt ist
  • Die Systemlage meldete das Zertifikat als gültig, auch wenn es den Namen nicht deckte, auf den die DNS-Vorschläge der Verwaltung MX und SRV zeigen lassen — standardmäßig `mail.<ihre-domain>`, einstellbar über `smtp_hostname`. Ein Mail-Programm, das dem SRV-Eintrag folgt, brach dann beim Verbinden ab. Die Systemlage nennt jetzt den fehlenden Namen
  • Beim Umzug aus Exchange endete der Auftrag mit „completed_with_errors — 2 errors", ohne zu sagen, welche — die Namen standen nur im Serverprotokoll. Die Zahl stimmte, still verschwunden ist nichts. Das Umzugsprotokoll nennt jetzt jeden nicht übernommenen Eintrag mit Grund: bei Nachrichten Ordner, Betreff und Message-ID, bei Terminen, Kontakten, Aufgaben und Notizen den Titel
  • Auf der Import-Seite stand zu einem beendeten Auftrag nur der Status. Jetzt klappt unter jedem Auftrag eine Liste auf, die alle ausgelassenen und gescheiterten Einträge mit Grund nennt — etwa „Fehlgeschlagen · Posteingang / Rechnung März — message too large"
  • Ein Anhang, der sich beim Umzug aus Exchange nicht lesen ließ, kostete bisher die ganze Nachricht; jetzt kommt sie ohne ihn an, und der Anhang steht mit Betreff und Dateinamen im Umzugsprotokoll. Leere Anhänge (etwa `ATT00001.txt`) kommen als leere Datei an

0.12.0

Windows-Zeitzonen richtig gelesen, KI-Agenten ohne Lizenzdruck — und eine Deinstallation, die nichts zurücklässt

Neu

  • KI-Agenten zählen nicht gegen die Benutzerzahl der Lizenz: Je bezahlte Benutzer ist dieselbe Anzahl Agenten möglich, und wer darüber liegt, bekommt eine Meldung — nicht eine Sperre

Behoben

  • Termine mit Windows-Zeitzonennamen — so schreibt sie der Windows-Kalender — lagen zwei Stunden daneben: im Kalenderabgleich, in Einladungen per Mail und beim Umzug über Microsoft Graph. Der Server kennt jetzt die Zuordnung von Windows-Zonen zu IANA-Zonen und liest alle drei Stellen richtig
  • Eine im Browser geänderte Telefonnummer kam im Adressbuch des Clients nie an, wenn der Kontakt schon eine gespeicherte Karte hatte — die alte Nummer blieb stehen. Geänderte Nummern ersetzen jetzt die gespeicherte, neue tragen einen Typ
  • Die Deinstallation unter macOS ließ den Helfer der Selbstaktualisierung geladen zurück, zeigend auf ein gelöschtes Programm — er wird jetzt mitgenommen
  • Eigene Termine ohne Teilnehmer erschienen in Kalenderprogrammen als Besprechungsanfrage mit „Bitte um Antwort" — der Server schrieb in jeden Termin einen Organisator. Jetzt trägt nur noch ein Termin mit Teilnehmern einen Organisator
  • Teilnehmer, die in der Weboberfläche eingetragen wurden, fehlten im Kalenderabgleich: Kalenderprogramme bekamen den Termin ohne sie und zeigten eine einfache Besprechung statt einer mit Eingeladenen. Der Abgleich liefert die Teilnehmer jetzt mit
  • Kalenderprogramme zeigten den Organisator eines Termins mit Teilnehmern nicht mit Namen an — dort stand „Unbekannt". Der Server schickte beim Organisator keinen Namen mit; jetzt trägt er den Namen des Kontos, und Namen mit Komma („Sanwald, Pascal") kommen vollständig an
  • Gleichzeitige Anmeldungen konnten Einträge im Verwaltungsprotokoll verlieren: gemessen mit 40 gleichzeitigen Einträgen kamen 2 an. Jetzt kommen alle an, die Nachweiskette bleibt geschlossen
  • Die Update-Seite der Verwaltung zeigte zu einer neuen Fassung die Anmerkungen der zuletzt eingespielten und meldete beim Laden „Es wurde noch nie nachgefragt". Beides ist ab den Aktualisierungen nach 0.12.0 behoben — wer von 0.11.0 auf 0.12.0 aktualisiert, sieht den Fehler dabei noch

0.11.0

Föderation ab Werk sicher, fünf Sprachen durchgehend, mehrere Kalender — und zwei Sicherheitslücken weniger

Neu

  • Die Föderation zwischen AnnexGroup-Servern ist ab dieser Fassung standardmäßig ausgeschaltet; wer sie nutzt, schaltet sie in der Konfiguration ein und hinterlegt für jeden Partner dessen öffentlichen Schlüssel — ohne Schlüssel nimmt der Server nichts mehr an
  • Die globale Adressliste steht jetzt auch in der Weboberfläche — bis 0.10.0 war sie nur über das Adressbuch der Mail-Programme (CardDAV) zu sehen
  • Die Oberfläche spricht in allen fünf Sprachen durchgehend die Sprache des Benutzers — sieben Seiten zogen Teile ihrer Texte bis dahin fest verdrahtet auf Englisch oder Deutsch, die Begriffe folgen jetzt denen aus Outlook, und die Verwaltung spricht Deutsch statt Denglisch
  • Eine Installation meldet sich bei Suchmaschinen ab — die Anmeldeseite eines Firmenservers gehört nicht in einen Suchindex
  • Mehrere Kalender je Benutzer: anlegen, umbenennen, löschen — in der Weboberfläche und über CalDAV; Frei/Gebucht zählt alle eigenen Kalender, und der Umzug aus Exchange legt Zusatzkalender als eigene Kalender an statt alles in einen
  • Die Suche im eigenen Adressbuch filtert jetzt auf dem Server — bei 1 051 Kontakten kam bei jeder Suche bisher das ganze Adressbuch zurück (914 KB statt eines Treffers)
  • Jeder Benutzer kann für sich festlegen, wer seine Verfügbarkeit sieht — enger oder weiter als die Regel der Domäne: keine Auskunft, nur frei/belegt oder mit Betreff und Ort
  • IMAP kennt jetzt UIDPLUS und MULTIAPPEND: Mail-Programme wie mbsync ordnen hochgeladene Nachrichten eindeutig zu, und mehrere Nachrichten gehen in einem Zug hinein oder gar nicht
  • Sperrlisten nehmen jetzt auch Netzbereiche (IPv4 und IPv6) — mit Schutz vor dem Selbst-Aussperren
  • Die Zahl der Konten und der AnnexOffice-Arbeitsplätze aus dem Aktivierungscode ist eine harte Grenze; die Verwaltung zeigt, wer einen Arbeitsplatz belegt, und gibt ihn mit einem Klick frei
  • Das Terminformular plant mit: alle Eingeladenen und Räume auf einer Zeitachse, ein Klick übernimmt die Zeit, und ein Vorschlag nennt die nächste gemeinsam freie
  • Mitarbeiter sehen neben dem Posteingang ihren Tag — die Termine von heute und die fälligen Aufgaben
  • Datum und Uhrzeit stehen in den Formularen so, wie die Sprache der Oberfläche sie schreibt — auch wenn der Browser eine andere Sprache hat
  • Die Nachweiskette wird im Betrieb täglich geprüft; ein Bruch erscheint in der Systemlage — und auch das Protokoll der Verwaltungshandlungen ist jetzt verkettet
  • IMAP kennt jetzt NOTIFY: ein Kanal für viele Ordner — Evolution zeigt in der Werkseinstellung den Posteingang
  • Der Umzugs-Assistent nimmt Exchange über EWS als Quelle an, und öffentliche Ordner werden zu gemeinsamen Räumen
  • Das Firmenadressbuch ist jetzt auch eine Schnittstelle — Clients bekommen daraus Empfängervorschläge beim Verfassen

Behoben

  • Die Verbindung zwischen zwei AnnexGroup-Servern prüft jetzt das Zertifikat der Gegenstelle und verlangt eine gültige Signatur für jede eingehende Nachricht
  • Ein Wettlauf im Ereignisstrom konnte den Server abstürzen lassen, wenn sich ein Browser in dem Moment abmeldete, in dem eine Nachricht verteilt wurde
  • Wer im Browser zweimal auf „Senden" klickte, verschickte die Mail zweimal — die Sperre gegen doppeltes Senden griff dort nie
  • Auf der Startseite von Mitarbeitern stand in einer Karte dauerhaft „Laden …"
  • Die Einrichtungs-Prüfliste hakte den Umzug schon ab, wenn ein Umzug gescheitert war
  • Die Schnittstellen-Übersicht im Entwicklerbereich nannte für die Nachrichtenliste einen Pfad, den es nicht gibt
  • Eine eingehende HTML-Mail konnte Skript in der Sitzung des Empfängers ausführen; HTML-Mail erscheint jetzt in einem abgeschotteten Rahmen ohne Skripte, und ferne Bilder und Zählpixel werden nicht geladen
  • Hinter einem Vorschaltrechner ließ sich die Absenderadresse einer Anfrage fälschen und damit die Anmeldesperre und die Sperrliste umgehen; die Weiterleitungs-Kopfzeile gilt jetzt nur von eingetragenen Vorschaltrechnern (trusted_proxies) — wer AnnexGroup hinter nginx oder ähnlichem betreibt, trägt dessen Adresse ein
  • Die Detailseite einer Mail zeigt die Nachricht statt ihres Rohbaus, und eine Antwort zitiert den Text lesbar — mit „AW:" im Betreff bei deutscher Oberfläche
  • Eine verschobene Nachricht bekommt im Zielordner eine neue Kennung, nach dem Löschen stimmen die Meldungen an das Mail-Programm, und QRESYNC meldet gelöschte Nachrichten, wie der Standard es verlangt
  • Betreff und Absender mit Umlauten erscheinen lesbar — bisher standen sie als „=?utf-8?q?…" im Posteingang, auch bei Mails, die schon im Postfach liegen
  • „Antworten" in der Weboberfläche erreicht Absender, die mit Namen schreiben; Betreff und Namen mit Umlauten gehen normgerecht kodiert hinaus
  • Die Wochenansicht zeigt einen Termin als einen Block über seine Dauer, öffnet um 07:00 und zeigt die Terminfarben; die Ordner der eigenen Agenten stehen mit deren Namen für sich
  • Schreibzugriffe über CalDAV und CardDAV brauchen nur noch halb so viele Rundreisen zur Datenbank
  • Ein Konto mit der Rolle „root" ließ sich über die Schnittstelle anlegen und fiel dann aus der Zählung; Räume zählten gegen die Benutzerzahl der Lizenz — beides ist jetzt dicht
  • IMAP verträgt jetzt mehrere Mail-Programme am selben Postfach — gemessen mit drei gleichzeitigen Clients: 98 Fehler vorher, keiner danach
  • IMAP: COPY legt entweder alle Nachrichten an oder keine — nichts Bleibendes auf halbem Weg
  • Sechs Befunde aus dem Apple-Gerätedurchgang sind behoben: ORG mit Abteilung bleibt in Kontakten erhalten, CalDAV und CardDAV legen Objekte unter dem Namen ab, den das Programm gewählt hat, gelöschte Kontakte erreichen die Geräte, Frei/Gebucht zählt den gerade geplanten Termin nicht als Konflikt — und gespeicherte Termine tragen kein METHOD mehr

0.10.0

Umzug ohne Mac, Mandanten, Compliance — und eine Oberfläche, die zusammenpasst

Neu

  • Der Umzug aus Exchange im eigenen Haus läuft im Server: per EWS direkt, ohne Mac dazwischen — Post, Termine, Kontakte, Aufgaben und Notizen kommen mit
  • Viele Postfächer aus einer Liste anlegen, statt fünfzig Formulare auszufüllen
  • Mandantenfähigkeit: die Rolle „Domain-Admin“ verwaltet ihre eigene Domäne — Benutzer, Räume, Verteiler, Freigaben — und die Grenze gilt auch in Suche, Adressbuch und Frei/Gebucht
  • Compliance: Journal, Archivpostfach als eigenes IMAP-Postfach, Aufbewahrungssperre, domänenweite Suche mit Ausleitung als mbox und Prüfregeln je Mandant
  • Die Systemlage prüft das Zertifikat gegen die Auskunftsnamen und nennt die fehlenden, bevor die Einrichtung daran scheitert
  • Die Verwaltung ist geordnet: vier benannte Bereiche statt elf gleicher Knöpfe, und die Assistenten zeigen, im wievielten Schritt man steht
  • Frei/Gebucht im Terminformular der Weboberfläche — „keine Auskunft“ ist ein eigener Zustand und sieht nicht aus wie „frei“
  • In der Weboberfläche: mehrere Empfänger, Kopie und Blindkopie, und alle Zeiten in der Zone des Lesers

Behoben

  • Ein Termin wanderte bei jedem Speichern um die Zeitzonendifferenz zurück — Liste, Kalenderraster und Formular rechneten in drei verschiedenen Zonen
  • Nachricht, Kontakt, Agent und Space ließen sich nicht öffnen: die Nachricht antwortete mit 404, die drei anderen leiteten wortlos zurück auf ihre Liste
  • Der Umzugs-Assistent schickte die eingetippten Zugangsdaten nicht mit und legte sie stattdessen im Browser ab
  • Ein zweiter Klick auf „Senden“ verschickte dieselbe Mail ein zweites Mal
  • Filterregeln speicherten nicht die ausgewählte Aktion
  • Auslastung, Plattenbelegung und das Protokoll des Servers waren für jedes Postfach sichtbar; der Echtzeitstrom sogar ohne Anmeldung
  • Der Kalender mischte deutsche und englische Wochentags- und Monatsnamen
  • Die mitgelieferte Beispielkonfiguration ließ `loc=UTC` in der Datenbankverbindung weg — auf einem Rechner, der nicht auf UTC steht, wanderten damit alle Zeiten
  • Das Installationsskript sagt jetzt, wenn ein anderer Mailserver bereits Port 25 hält, statt den Dienst wortlos in eine Neustartschleife laufen zu lassen

0.9.0

Groupware komplett — und der Server aktualisiert sich selbst

Neu

  • Frei/Gebucht in den Kalendern: wer einen Termin sucht, sieht ohne Nachfrage, wer Zeit hat
  • Räume und Geräte als Kalenderteilnehmer — zugebucht, abgelehnt, ohne Flurfunk
  • Globale Adressliste in jedem Standard-Client
  • Verteilergruppen, die intern auflösen: eine Adresse schreiben, alle erreichen
  • Senden als und Senden im Auftrag — mit Freigaben statt geteilter Passwörter
  • Abwesenheit mit Zeitraum: von Anfang bis Ende, nicht nur ein- und ausgeschaltet
  • Regeln auf dem Server (Sieve): im Client eingerichtet, beim Zustellen angewendet
  • Öffentliche Ordner mit dreistufiger Hierarchie
  • Freigaben für Postfächer, Kalender und Adressbücher
  • Selbstaktualisierung mit Rückweg: der Server holt die Fassung selbst, probt sie und tauscht — schlägt etwas fehl, liegt die vorherige griffbereit

Behoben

  • Acht Verwaltungsseiten lieferten eine leere Seite bei HTTP 200 — der Aufruf des Grundgerüsts fehlte in den Vorlagen
  • macOS: Programm und Installer meinten verschiedene Datenverzeichnisse — Sicherung und Wiederherstellung meldeten zu Unrecht „keine Daten“
  • Der privilegierte Helfer der Selbstaktualisierung horchte ein Verzeichnis zu hoch und überhörte die Klingel — die Aktualisierung blieb stumm auf „bereitgestellt“ stehen
  • Ein geglückter Rückweg der Selbstaktualisierung meldete einen Fehler, wo keiner war

0.8.2

Kalender- und Kontakt-Clients kommen an

Behoben

  • CalDAV und CardDAV nehmen dieselben Zugangsdaten wie IMAP. Vorher wurden nur Token akzeptiert — Evolution, Thunderbird und die Apple-Clients bieten keine Stelle, an der man einen hinterlegen könnte, also kam gar kein Standard-Client durch
  • Die Einrichtung über die Serveradresse funktioniert: Der Diensteinstieg nennt jetzt den Principal, statt den Zugriff zu verweigern

0.8.1

Durchgehend mehrsprachig

Neu

  • Dokumentation auch auf Englisch, nicht nur auf Deutsch
  • Website in fünf Sprachen (Englisch, Deutsch, Spanisch, Französisch, Italienisch)
  • Server-Oberfläche, Fehlermeldungen und System-Mails in der Sprache des Empfängers; Sprachwahl je Benutzer
  • Lizenz-Bündel: AnnexOffice-Arbeitsplätze gehören zur Serverlizenz dazu

Behoben

  • Fünf Verstöße gegen den IMAP-Standard, durch die Thunderbird empfangene Mail falsch anzeigte
  • macOS-App: Absturz beim Start außerhalb eines App-Bündels, und TLS gegen einen Server mit eigenem Zertifikat
  • Ein Wettlauf im Ereignisstrom, an dem der Testlauf abbrach

0.8.0

Erste öffentliche Ausgabe

Enthalten

  • Mailserver mit SMTP, IMAP, Warteschlange und DKIM-Signierung
  • Kalender, Kontakte, Aufgaben, Notizen, gemeinsame Räume, Freigaben
  • KI-Agenten als Unterkonten mit Autonomiestufen und Prüfschleife
  • Weboberfläche, als Web-App installierbar, hell und dunkel
  • CalDAV und CardDAV für Apple-Geräte
  • Volltextsuche über alle Bereiche
  • Verwaltung mit Einrichtungsassistent, Selbstprüfung, Sicherung und Wiederherstellung
  • Schutz vor Anmeldeversuchen, Sperrlisten, Sicherheitsvoreinstellungen
  • Anbindung von Rspamd und ClamAV
  • Pakete für macOS (Apple Silicon und Intel, von Apple beglaubigt) und Linux (x86-64 und ARM64)

Bekannte Grenzen

  • Kein MAPI und kein EWS als Server-Protokoll — und auch kein ActiveSync. AnnexGroup setzt ausschließlich auf offene Protokolle; Exchange ist für uns die Quelle einer Migration, nicht ein Protokoll zum Nachbauen.
  • Mandantenfähigkeit war in 0.8.0 nur im Datenmodell vorbereitet — inzwischen aufgehoben: eigene Mandanten-Rolle (Domain-Admin), in der Weboberfläche und über die API
  • Kein Assistent für den automatischen Import bestehender Postfächer
  • Zertifikate über Let’s Encrypt nur über die HTTP-Prüfung — Platzhalter-Zertifikate brauchen den Weg über DNS und sind noch nicht eingebaut