theHacker's Blog
– It's just a glitch in the Matrix –
22

Synology-Kalender: Termin lässt sich nicht ändern

Seit langer Zeit benutze ich den Kalender von Synology und bin bis heute eigentlich sehr zufrieden. Bis auf die Tatsache, dass sich manchmal Termine nicht mehr nachträglich ändern lassen.

Heute gehe ich diesem Problem auf den Grund…

Mein Setup

Bevor wir richtig einsteigen, skizziere ich kurz mein Setup.

Mein Kalender befindet sich in meiner Cloud auf einer Synology-NAS. Hierzu ist auf der NAS das Calendar-Paket installiert. Das Paket stellt den Kalendar dann via CalDAV im Netzwerk bzw. Internet bereit.

Unterwegs kann ich mit meinem Android-Handy dann über die normale Kalender-App auf diesen Kalender zugreifen. Ein Kalender-Adapter ist hier noch im Spiel, aber das würde jetzt zu stark ins Detail gehen…

Zu Hause verwende ich Thunderbird mit der Lightning-Extension, um auf den Kalender zuzugreifen.

Damit habe ich alle meine Termine zentral gespeichert, sie befinden sich nicht bei Google & Co zum automatischen Analysieren für nutzer-spezifische Werbung, und ich kann von überall drauf zugreifen.

Das Problem

Kommen wir nun zum Problem. Dank der immer noch anhaltenden Corona-Panik habe ich öfters den Fall, dass ich einen Termin, der schon vor langer Zeit in den Kalender gelegt wurde, jetzt absagen muss.

Eigentlich ist das keine große Sache. Man öffnet den Termin im Thunderbird und klickt im Menü "Einstellungen / Status" den Punkt "Abgesagt". Danach kann man den Termin speichern und ist fertig.

Das Problem ist nun, dass – ohne eine visuelle Information – der geänderte Termin nicht gespeichert wurde. Bei einer Änderung des Status oder der Beschreibung merkt man das nicht direkt. Es fällt nur auf, wenn man den Titel oder den Zeitpunkt ändert.

Interessant ist auch, dass es nicht wirklich 100%ig reproduzierbar ist. Ich habe alle Felder schon einmal erfolgreich ändern können. An bestimmten Feldern liegt es also nicht.

Merke ich, dass eine Änderung nicht funktioniert hat, so kann ich bestätigen, dass man den Termin dann gar nicht ändern kann. Dabei ist es egal, in welchem Feld ich eine Änderung mache.

Das Problem im Detail

Die Ursache, warum die Änderung nicht greift, kann man relativ schnell ermitteln: Startet man Thunderbird über die Konsole, findet man die Information direkt. Ein anderer Weg ist im Menü "Extras / Entwickler-Werkzeuge" die Fehlerkonsole zu öffnen. Hier bekommt man sogar noch die genaue Codestelle in der Kalender-Extension, wo der Fehler aufgetreten ist: Lightning: CalDAV: Unexpected status modifying item to (Kalendername): 405 in calDavCalendar.js:863.

Das bedeutet erstmal, dass Thunderbird, also Lightning unschuldig scheint und der Übeltäter wohl die Synology-NAS ist. – Ich bin mit einer konkreten Schuldzuweisung an dieser Stelle noch vorsichtig, da ich nicht weiß, welche Daten zwischen den beiden ausgetauscht werden. Fakt ist jedoch, dass sich die NAS weigert, den Termin im Kalender zu speichern.

Datenfluss zwischen Lightning und Synology-NAS im Detail

Um etwas tiefer in das Problem zu gucken, müssen wir nun den Traffic untersuchen, der zwischen Client und Server fließt. D. h. welche Daten werden zwischen Lightning und Synology-NAS ausgetauscht?

Kurzer Exkurs: CalDAV ist eine Erweiterung von WebDAV, welches wiederum auf HTTP basiert.

Normalerweise ist HTTP einfach zu debuggen, weil alles schön in Textform lesbar ist. Etwas schwierig ist das Debugging in diesem Fall, da nicht direkt HTTP benutzt wird, sondern HTTPS. Der Traffic zwischen Client und der NAS ist verschlüsselt und man sieht im Wireshark absolut gar nichts.

Aber auch das ist einfach gelöst, indem man für die Debugging-Session kurzfristig mit SSLKEYLOGFILE arbeitet. Damit werden die Schlüssel für sämtliche SSL-Kommunikation in eine Datei geschrieben und Wireshark kann diese lesen und den Traffic entschlüsseln.

Ich möchte an dieser Stelle auch noch kurz ergänzen, dass ich bei der Fehleranalyse in Thunderbird bewusst HTTP2 deaktiviert habe, um mir das Leben leichter zu machen. HTTP2 optimiert die Kommunikation und bündelt mehrere Requests in einem Stream. Auch machen die Binärdaten zwischendrin das Lesen schwieriger.

Der Request sieht normal aus. Wir sehen einen PUT-Request mit dem geänderten Termin.

Die Response sieht etwas komisch aus, da der Body nur eine "0" enthält (und keinen Content-Length-Header). Ich habe auch kurz mit HTTP2 ausprobiert, da haben wir eine leere Response.

D. h. hier keine Informationen, was nun das Problem ist. Allerdings bekommen wir einen kleinen Einblick in den Synology-Kalender: X-DAViCal-Version: DAViCal/1.1.9; DB/1.2.12 zeigt uns, dass Synology hier den freien Kalender-Server DAViCal einsetzt und welche Version verwendet wird.

Auf der Suche nach der Problemlösung

Wir wissen bereits, dass der Server bei bestimmten Terminen HTTP 405 antwortet. Ich sehe hier zwei Möglichkeiten:

  • Der Termin ist "kaputt". In diesem Fall ist das Problem in der Server-Programmlogik und ich kann als Client nichts dagegen machen. Egal, welche Daten ich für den Termin schicke, die Antwort wird immer HTTP 405 bleiben.
  • Der Server akzeptiert bestimmte Daten nicht, die sich aktuell im Termin befinden. In diesem Fall kann ich den Termin "reparieren", indem ich jene Daten entferne, die dem Server Probleme machen.

Falls die erste Möglichkeit zutrifft, hab ich keine Lösung. Die DAViCal-Version ist minimal out-of-date (aktuelle Version 1.1.9.3), aber das bringt mir nichts, solange Synology kein Update für das Calendar-Paket anbietet. Also selbst bei einem Bug in der Server-Software hab ich verloren.

Trial & Error: Manuelles Senden von Requests an den Synology-Kalender

Nur die zweite Möglichkeit bietet mir überhaupt eine Erfolgsaussicht. Hierzu werde ich nun manuell verschiedene Requests an den Server schicken und solange an den Daten rumschrauben, bis der Server den Termin akzeptiert.

Aus den Informationen von Wireshark über den Request habe ich alles, was ich brauche:

  • die URL, unter der der Termin auf dem Server abgespeichert ist
  • die Zugangsdaten (die hab ich sowieso, aber in Form eines HTTP-Authorization-Headers ist das angenehmer)
  • das ETag des Termins (siehe der If-Match-Header)

Zum Senden des Requests verwende ich curl.

Als ersten Schritt möchte ich überhaupt erstmal wissen, was auf dem Server zu diesem Termin gespeichert ist. Damit kann ich den Ist-Stand sehen.

thehacker@ares:~$ curl -k -H "Authorization: Basic XXXXXX" https://iris:5001/caldav/admin/home/ome/20200311T004651-fe7e189b%40192.168.178.20.ics
Resource Not Found.

Das ist schon mal extrem interessant. Der Server meldet 404, den Termin gibt es überhaupt nicht! Damit ist es auch logisch, dass der Server sich beschwert, wenn man ihn versucht zu ändern. Entsprechend folgern wir auch, dass die Daten des Termins irrelevant sind.

Als nächsten Schritt möchte ich die echte URL des Termins rausfinden. Der Termin existiert ja irgendwo, nur nicht da, wo ihn Thunderbird ändern möchte.

Ich lege eine Datei report.xml an und sende einen REPORT-Request:

<c:calendar-query xmlns:d="DAV:" xmlns:c="urn:ietf:params:xml:ns:caldav">
    <d:prop>
        <d:getetag />
        <c:calendar-data />
    </d:prop>
    <c:filter>
            <c:comp-filter name="VCALENDAR" />
    </c:filter>
</c:calendar-query>
thehacker@ares:~$ curl -k -X REPORT -H "Authorization: Basic XXXXXX" -d @report.xml https://iris:5001/caldav/admin/home/ > output.txt

Damit lade ich sämtliche Termine aus dem Kalender in die Datei output.txt. Diese Datei kann ich nun mit einem Text-Editor nach dem Termin durchsuchen. Ich werde auch fündig:

<response>
  <href>/caldav.php/admin/home/20200311T004651-fe7e189b%40192.168.178.20.ics</href>
  <propstat>
   <prop>
    <getetag>"a36c58a79f2b49c970c2f993c7e99670"</getetag>
    <C:calendar-data>BEGIN:VCALENDAR^M
VERSION:2.0^M
PRODID:+//IDN bitfire.at//DAVx5/3.1.1-gplay ical4j/3.0.19^M
BEGIN:VEVENT^M
UID:20200311T004651-fe7e189b@192.168.178.20^M
...
</C:calendar-data>
   </prop>
   <status>HTTP/1.1 200 OK</status>
  </propstat>
 </response>

Die URLs unterscheiden sich doch etwas. Der grundsätzliche ID-Part am Ende ist zwar identisch, aber am Anfang hat der Server noch eine .php-Endung am caldav stehen. Ausprobieren zeigt, dass es egal ist, ob man die .php-Endung anfügt oder nicht. Der Server reagiert auf beides gleichermaßen.

Interessant ist aber das /ome/ in der falschen URL. Die Kalender-Objekte erwarte ich flach im Kalender (keine Ahnung, ob CalDAV Verzeichnisstrukturen innerhalb eines Kalenders überhaupt erlaubt). Vergleicht man falsche und korrekte URL genauer, erkennt man, dass der Unterschied an beiden Stellen gleich lang ist. .php ist genauso lang wie /ome. Und /ome ist ein Teil von home.

falsche URL /caldav/admin/home/ome/20200311T004651-fe7e189b%40192.168.178.20.ics
korrekte URL /caldav.php/admin/home/20200311T004651-fe7e189b%40192.168.178.20.ics

Es sieht so aus, als ob hier eine String-Ersetzung mächtig schiefgelaufen ist. Und diese muss dann wohl in der Lightning-Extension von Thunderbird liegen!

Debugging von Lightning

Ich habe nun zwar das Problem und die Ursache, aber noch keine Lösung. Hierzu muss ich nun den Quellcode der Lightning-Extension weiter untersuchen und ermitteln, wie die URL zusammengebaut wird, die später zum Senden des PUT-Requests verwendet wird.

Debugging mit den Entwicklerwerkzeugen

Thunderbird bietet zwar einen Punkt "Add-ons debuggen" im Menü Entwickler-Werkzeuge, der genau richtig zu sein scheint. Allerdings, wenn man dann auf "Debuggen" klickt und der Debugger sich öffnet, muss man zur Ernüchterung feststellen, dass keine Sourcen verfügbar sind. D. h. hier kommen wir nicht weiter.

Was hingegen funktioniert, ist der Punkt "Entwickler-Werkzeugkasten", auch im Entwickler-Werkzeuge-Menü zu finden. Hier kommt vorher eine Sicherheitsabfrage, dass Ports zum Debugging geöffnet werden. Nach Bestätigung öffnet sich der Debugger und wir sehen alle Sourcen, inklusive der Lightning-Extension. Auch das Anlegen von Haltepunkten ist hier ohne Probleme möglich.

Ich kann das Problem auf einen ungültigen Eintrag in der Cache-Struktur mItemInfoCache zurückführen, wo der falsche ome/-Pfadausdruck enthalten ist. Eine Suche nach dieser Variable findet 30 Treffer in der JavaScript-Datei. Interessant ist besonders eine Stelle (in Zeile 334), weil hier ein Aufruf an substr() gemacht wird. Ich denke, wir stehen dem Übeltäter hier von Angesicht zu Angesicht gegenüber.

Dummerweise greift ein Haltepunkt hier nicht. Ich vermute, der Code wird einmalig beim Start aufgerufen. Um mich nicht tiefer in die Materie "Wie debugge ich eine Thunderbird-Extension?" einlesen zu müssen, greife ich auf einen altbewährten Trick zurück: printf-Debugging :-)

printf-Debugging

Die Erweiterung ist im Thunderbird-Profil unter extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}.xpi zu finden. Das ist eine Zip-Datei, die man vorher auspacken kann. Thunderbird kann sowohl mit gezippten, als auch mit ausgepackten Erweiterungen umgehen, was die Sache für mich einfacher macht.

Beim ersten Start nach dem Auspacken hat er sich zwar beschwert und die Erweiterung nicht geladen. Ein weiterer Start hat die Situation dann normalisiert. Ich habe in die Methode fetchCachedMetaData(), wo ich den Bug vermute, eine Zeile mit cal.ERROR("Test...") reingeschrieben und, siehe da, beim Start sehe ich diese Ausgabe:

console.log: WebExtensions: Loading unpacked extension from /home/thehacker/Thunderbird-Profil/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}
console.log: WebExtensions: Loading add-on preferences from  /home/thehacker/Thunderbird-Profil/extensions/{e2fda1a4-762b-4020-b5ad-a41df1933103}
console.log: WebExtensions: Firing profile-after-change listeners for {e2fda1a4-762b-4020-b5ad-a41df1933103}
[calBackendLoader] Using Thunderbird's builtin libical backend
console.error: Lightning:
  TEST - diese Meldung kommt vom Debugging
console.error: Lightning:
  TEST - diese Meldung kommt vom Debugging

Nun prüfe ich konkret die Variablen, wo ich den Fehler vermute.

In den cacheValues haben alle URLs die korrekte Form. Keine Spur von /ome/-Artefakten. Nach dem ominösen substr() sind die URLs aber wie erwartet kaputt.

Bug bestätigt! 😎

Zusammenfassung des Problems und seiner Ursache

Das Problem hier ist, dass Synology intern seine Termine mit /caldav.php/ speichert, aber nach außen hin gerne mit /caldav/ angesprochen werde möchte. Und entsprechend habe ich auch Letzteres im Thunderbird (in der Lightning-Extension) eingestellt.

Die Lightning-Extension fängt den Fall nicht ab, dass sich die URLs unterscheiden können und wendet blind eine String-Ersetzung an. Damit korrumpiert sie ihren Cache-Eintrag. Beim Ändern des Termins schlägt sie die kaputte URL aus dem Cache-Eintrag nach und bekommt vom Server dann eine Abfuhr in Form von HTTP 405.

Lösung

Ich habe lange recherchiert, ob der Bug bereits bekannt ist und bin schließlich auf Bug 605201 gestoßen, der seit knapp 10 Jahren offen ist. Hier beschweren sich Leute über das merkwürdige URL-Rewriting in Lightning, allerdings bezogen auf die Funktion addTargetCalendarItem(). Ich bin mir also nicht sicher, ob das mein Bug ist oder noch ein weiterer, der in dieselbe Kerbe schlägt.

In den Bug-Reports von Debian findet man den Bug 908249, welcher sich auf obigen Lightning-Bug bezieht, aber von den gleichen Problemen berichtet, die ich hab: Nämlich beim Ändern von Terminen, betroffen hier die Funktion doModifyItem().

Grundsätzlich sollte ein CalDAV-Client nicht an der URL manipulieren, sondern diese einfach akzeptieren. Wenn der Server sagt, der Termin wurde unter der URL who-cares abgelegt, so muss sich der Client einfach nur diese URL merken und Änderungen später wieder an dieselbe URL PUTen. Manipulation ist nicht erforderlich!

Sicher für mich ist, dass ich von Seiten der Lightning-Erweiterung nicht wirklich mit einem Fix rechne.

Selber werde ich wohl keinen Fix schreiben, da mir das zu aufwändig ist, in diesem Code weiter zu verschlimmbessern, ohne dabei noch mehr kaputt zu machen. Außerdem müsste ich idealerweise für einen korrekten Fix den kompletten Thunderbird-Buildprozess durchlaufen, da das Lightning-Extension-JavaScript, das den Bug enthält, auch nur generiert wurde aus weiterem Quellcode.

Abhilfe

Ich werde jetzt die Kalender-Einstellung im Lightning ändern und - entgegen Synologys vorgeschlagener URL - die URL mit dem .php verwenden. Damit sollten die Cache-Einträge von der Länge her wieder zusammenpassen und das Problem wäre "gelöst" (= umgangen).

Kalender aus Lightning entfernt, Kalender mit .php in der URL wieder ergänzt und Termin geändert… funktioniert :-)

Happy End.


Verwendest du auch eine eigene Kalender-Lösung? Welche Server- und Client-Anwendungen hast du in Verwendung?

Hat dir dieser Beitrag geholfen, so hinterlass gerne einen Kommentar.

Kommentare zu diesem Artikel

  • Hi thehacker,

    vielen Dank dass du dich dieses Problems annimmst!
    Leider ist die Regung der Thunderbird-Comunity in dieser Sache recht verhalten.
    Das ".php" hat bei mir ebenfalls geholfen.
    Doch ich habe noch ein weiteres Problem mit TB:
    Wenn ich einen Termin mit TB erstelle doppelt er immer die Benachrichtigungszeit.
    Beispiel: ich erstelle einen Termin und trage als Alarm "0 min. vor Beginn" ein, dann ist dieser Alarm 2 mal vorhanden.
    Wenn ich den Termin danach bearbeite und wieder speichere dann ist er bereits 4 mal vorhanden; usw. usw.
    Diese Problem besteht nur mit TB, alle anderen Clients arbeiten ganz normal.
    Das blöde ist, dass dann z.B. 4 oder 8 mal auf meinem Handy gemeldet wird je nachdem wie oft er geändert wurde.
    Wenn man im TB-Forum nach diesem Problem sucht wird man sehr schnell und auch oft fündig.
    Ist dieser Fehler bei dir auch vorhanden?
    Beste Grüße und mach wieter so
    starbyte

    • Hi. Erstmal vielen Dank für deinen Kommentar!

      Ich benutze normal keine Erinnerungsfunktion.

      Ich hab das eben aber mal schnell ausprobiert und kanns bestätigen, allerdings seh ich zusätzlich noch was:

      • Direkt nach Anlage des Termins im Thunderbird ist der VALARM-Block 2x vorhanden mit TRIGGER;VALUE=DURATION:PT0S.
      • Ändere ich den Termin im Thunderbird, so habe ich den VALARM-Block nun 4x. Zusätzlich befindet sich jetzt aber noch eine Zeile X-LIC-ERROR;X-LIC-ERRORTYPE=PARAMETER-VALUE-PARSE-ERROR:Got a VALUE parameter with an illegal type for property: VALUE=DURATION innerhalb jedes dieser Blöcke.
      • Bei nochmaligem Speichern duplizieren sich die VALARM-Blöcke auf 8x und alle enthalten die obige Zusatzzeile.

      Googlet man nach der merkwürdigen Zeile, stößt man auch wieder auf einen lang (diesmal nur ein Jahr) bekannten Bug: Bug 1560151 bzw. Bug 1846423 im Ubuntu-Tracker.

      • Hi, danke für die Rückmeldung.
        Das hört sich an als würde hierfür so schnell keine Lösung vorhanden sein.
        Es gibt wohl zu wenige die diese Konstellation (Syno-Calendar mit TB) einsetzen.
        Aber was nicht ist kann ja noch werden.
        Dennoch vielen Dank für deine Mühe.
        Beste Grüße, starbyte

  • Also bei mir und Thunderbird 83.0b das gleiche Problem. Allerdings hat das mit dem .php nicht funktioniert. Ich habe aber gesehen, dass das integrierte Kalender Tool anscheinend die iCal Erweiterung nutzt. Nachdem ich nicht den Link für Thunderbird nutzte und den für iCal nahm, funktionierte auch das Schreiben auf dem Kalender in der Syn wieder.

  • ich bin ja schwer beeindruckt von Deinen Recherchen, deshalb wage ich hier mein Problem noch zu schreiben:
    Über die Thunderbird-eigene Routine (Kalender + Netzwerk caldav ... ) bekomme ich zwar meinen Synology-Kalender eingebunden, das "Aktivieren" danach schlägt jedoch ohne Fehlermeldung fehl. Sowohl mit .php als auch ohne bekomme ich den Kalender über ICalendar (ics) in Thunderbird eingebunden, in beiden Fällen bekomme bei Änderungen des Termins die Fehlermeldung im Debugger:

    Lightning: Fehler beim Lesen von Daten für Kalender: Eberhard. Fehlercode: DAV_PUT_ERROR. Beschreibung: Publishing the calendar file failed
    Status code: 0
    

    Möchte ich meinen Synology-Kalender über tbSync und caldav einbinden, kann der CalDav-Server nicht gefunden werden (die gleiche Adresse wie mit ics). Auf dem gleichen Rechner habe ich den Kalender über Synology direkt geöffnet und die URI rauskopiert.

    Ich weiß nicht, ob beide Fälle etwas miteinander zu tun haben. Hättest Du noch einen Tipp, was hier falsch läuft, bzw. ich ausprobieren könnte ?

    Thunderbird-Version 78.5.1 (64 bit) auf Windows 64 bit.

    • Danke für deinen Kommentar :-D

      TbSync kannte ich bis jetzt nicht, da kann ich null helfen. Ausgehend von deinen Problembeschreibungen würd ich mal die folgenden Schlüsse ziehen bzw. ausprobieren:

      • Du bekommst bei einer WebDAV-Operation einen "Status code: 0". Würde ich jetzt schlussfolgern, dass du gar nicht richtig kommunizierst hast. Mögliche Ursachen wären da DNS, Firewall, Routing und sowas, also alles, was vor HTTP passiert.
      • TbSync findet den CalDAV-Server nicht. Das schlägt in dieselbe Kerbe.
      • Ansonsten kannst du denselben Weg gehen, wie ich im Artikel beschrieben habe. Du weißt, die Fehlermeldung kommt von Lightning (ignorier TbSync erstmal). Du weißt, dass die Fehlermeldung die Strings Fehler beim Lesen von Daten für Kalender:, DAV_PUT_ERROR und Publishing the calendar file failed enthält. Such nach diesen Strings und dann setz an den betreffenden Stellen an, um die Ursache rauszufinden. Die Lösung ist dann oft schnell gefunden.
      • Lightning ist sehr komplex. Ich kenne TbSync nicht, aber vermutlich hast du hier weniger Code und kannst leichter debuggen. Wenn du dir sicher bist (bist du eigentlich nicht), dass beide Probleme dieselbe Ursache haben, kannst du mit TbSync anfangen, um schneller was rausfinden zu können.

      Wenn du was rausgefunden hast, kannst du gerne hier nochmal antworten (oder neuen Kommentar erstellen; im Moment ist die Funktion kaputt 🤫) bzw. vielleicht hat ja noch jemand das Problem.

    • @Eberhard
      Ich habe eine Weile probiert, da ich das selbe Problem mit TbSync und CalDav. Adressbuch lies sich syncronisieren und Kalender nicht.
      Ich habe ein neues Konto eingerichtet und bei Kalender nur folgendes eingegeben: https://xxx.de:5001/caldav/USERNAME und bei Carddav https://xxx.de:5001/carddav/USERNAME und siehe da es ging und es wurden auch alle Kalender und Kontakte gefunden (Nutze die CalendarApp und die ContactsApp auf der Synology.)
      Scheinbar funktioniert es nicht mit der genauen Kalenderadresse. Und da TbSync noch keinen Push kann, solltest du die Syncronisationszeit so klein wie möglich stellen. Ansonsten gibt es bei Terminänderungen Fehler, wenn du ihn änderst bevor er syncronisiert wurde.

      Wenn du den Kalender über die "normale" Lightning-Einbindung einbindest kannst du nicht "iCal" wählen, da dies nur ein Abo ist und du keine Daten eintragen kannst. Wähle Caldav, wenn du Termine eintragen und ändern willst.

  • Top Recherche und toller Workaround! Vielen Dank!

    @starbyte: Das Problem mit den doppelten Erinnerungen war ein Bug bei Synology und ist mit dem Update auf 2.4.0-0761 (April oder März 2021) behoben.

    Wenn der Workaround mit dem .php sich jetzt auf Dauer bewährt, haben wir ja mit TB und NAS wieder eine richtig schöne Lösung!

    • Danke für deinen Kommentar!

      Mein Blog ist eher klein und ich schreibe nur alle 1-2 Monate mal einen Artikel, drum freuts mich um so mehr, wenn ich seh, dass meine Artikel gelesen werden und helfen. 😊

  • Vielen Dank für diese detaillierte Analyse des Problems.

    Der Umweg über das Abbestellen und neu Einrichten der Kalender ist nicht notwendig. Thunderbird Einstellungen (im Burger-Menü) aufrufen, oben "about:config" eingeben, Garantieverlust bestätigen, dann "calendar" eingeben (oder "caldav"). Dann die URL des Kalenders suchen, doppelklicken, aus "caldav" "caldav.php" machen und die nächste Kalender-URL auswählen und korrigieren. Aus den Einstellungen raus und Thunderbird neu starten.

    Bei mir geht's dann.

  • Vielen, vielen Dank! Deine Arbeit hat auch mein Synology CALENDAR-Sync-Problem gelöst.

    Ein vergleichbares Problem habe ich bei Synology CONTACTS. Nachträgliche Editierungen von Kontakten auf clients (iPhone, iPad und Thunderbird CardBook) werden nur sporadisch/unsystematisch auf den Server (Synology NAS, CONTACTS) übertragen und genauso unsystemantisch an die weiteren clients verteilt - auch beim Löschen.
    Und nein, ein ".php" an "carddav" in der URL anzuhängen löst das Problem nicht (wäre zu schön gewesen, wenn es der gleicher Fehler gewesen wäre ...).
    tom

  • Ganz ganz herzlichen dank für den Artikel. Hab es auch auf '.php' geändert - gelöst. Auf dein Wohl. Hab es über die 'about:config' in TB geändert - passt.
    Zuerst hatte ich den Import von Synology WebDAV auf Synology-Calendar in Verdacht, weil die Probleme nur bei alten (also importierten) Records auftraten. Dann habe ich festgestellt, dass eben diese sich via iPhone ohne Probleme ändern lassen, und so kam TB in Verdacht. Aber für diese Tiefe der Analyse hab ich nicht das KnowHow.
    Ganz herzlichen Dank dafür.

  • Vielen Dank für diese sehr gute Analyse - hab wieder mal was gelernt und das Problem wurde durch die URL-Erweiterung mit .php auch behoben. Super!

    Mein setup ist ähnlich. Ich verwende ein iOS mobile device, Thunderbird 78.11.0 (64-Bit), Kalender auf NAS unter Synolgy Calendar 2.4.1 - 0817

  • Vielen Dank für die ausführliche Analyse des Problems und die wirklich hilfreiche Lösung. Jetzt habe ich endlich ein Problem weniger. Schön, dass es Leute wie Dich gibt! Vielen Dank!

  • Wow, was für eine geballte Kompetenz. Ich habe die ganze Zeit den Workaround "1x direkt im Syno-Kalender editieren" damit der Termin auch in Thunderbird wieder editierbar wird, benutzt. Aber das war sehr nervig. Leider scheint es aber nicht die Ursache für mein 2. Problem zu lösen: Bei der Annahme von Termineinladungen erscheinen die Syno-Kalender nicht in der Auswahl um den Termin dort zu speichern. Trotzdem ganz herzlichen Dank für Deine ausgezeichnete Arbeit. Gruß Jörg

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.