Use Calendar from Thunderbird with CalDAV

I want to add my disroot calendars to Thunderbird via CalDAV. That does not work, even though there is no error message visible on the frontend.

The error console shows a HTTP 503 Service Unavailable response from https://cloud.disroot.org/[...]


LONG VERSION START


Problem Description

  • Goal: add disroot calendar to Thunderbird via Lightning addon
  • Steps to do that: Use add calendar functionality (details see below)
  • Expected behaviour: synchronization with the calendar, display appointments
  • Actual behaviour: no error message, but no appointments are displayed (even after invoking manual synchronization)

Steps to reproduce

Software

  • install thunderbird from OS repos
  • install the Lightning addon from inside thunderbird

Add Calendar

  1. menu: file > new > calendar
  2. select network
  3. select CalDAV
  4. paste URL from https://cloud.disroot.org, in my case: https://cloud.disroot.org/remote.php/dav/calendars/tropf/<calendar_name>/
  5. enter a name, set a color, and change the email to my disroot email (echo dHJvcGYgPHRyb3BmQGRpc3Jvb3Qub3JnPgo= | base64 -d)
  6. a authentication window will pop up. enter credentials (User: tropf, Password: my disroot password – see Note below)
  7. close calendar creation wizard by clicking Finish

Now I expect to see appointments, but i don’t.
To be safe, right click the new calender and hit synchronize calendar.
Still nothing happens.

Logs

Logs can be extracted by hitting Ctrl + Shift + I. Read and confirm the warning that you know what you are doing.

When hitting synchronize calendar a single request is sent.
This request is shown here.

Request Headers

Sent to https://cloud.disroot.org/remote.php/dav/calendars/tropf/<calendar_name>/.

Headers sent

PROPFIND /remote.php/dav/calendars/tropf/<calendar_name>/ HTTP/1.1
Host: cloud.disroot.org
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 Lightning/6.2.5
Accept: text/xml
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Accept-Charset: utf-8,*;q=0.1
Content-Length: 306
Content-Type: text/xml; charset=utf-8
Depth: 0
Cookie: <lots of cryptic stuff i won't tell you>
Authorization: Basic aSB3b250IHRlbGwgeW91Om15IHBhc3N3b3JkCg==
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

Request Payload

POST payload

<?xml version="1.0" encoding="UTF-8"?>
<D:propfind xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><D:resourcetype/><D:owner/><D:current-user-principal/><D:supported-report-set/><C:supported-calendar-component-set/><CS:getctag/></D:prop></D:propfind>

Reformatted

<?xml version="1.0" encoding="utf-8"?>
<D:propfind xmlns:D="DAV:" xmlns:CS="http://calendarserver.org/ns/"
xmlns:C="urn:ietf:params:xml:ns:caldav">
  <D:prop>
    <D:resourcetype />
    <D:owner />
    <D:current-user-principal />
    <D:supported-report-set />
    <C:supported-calendar-component-set />
    <CS:getctag />
  </D:prop>
</D:propfind>

Response Headers

The server responds with a 503 Service Unavailable.

HTTP/2.0 503 Service Unavailable
server: nginx
date: Fri, 05 Apr 2019 12:10:20 GMT
content-type: text/html; charset=UTF-8
expires: Thu, 19 Nov 1981 08:52:00 GMT
cache-control: no-store, no-cache, must-revalidate
pragma: no-cache
content-security-policy: default-src 'self'; script-src 'self' 'unsafe-eval' 'nonce-<more cryptic stuff>'; style-src 'self' 'unsafe-inline'; frame-src *; img-src * data: blob:; font-src 'self' data:; media-src *; connect-src *; object-src 'none'; base-uri 'self';
x-frame-options: SAMEORIGIN
set-cookie: __Host-nc_sameSiteCookielax=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=lax
__Host-nc_sameSiteCookiestrict=true; path=/; httponly;secure; expires=Fri, 31-Dec-2100 23:59:59 GMT; SameSite=strict
X-Firefox-Spdy: h2

Response Payload

The response payload is empty.

Versions

Tested on two configurations:

  • Ubuntu 16.04.6 LTS, Thunderbird 60.6.1, Lightning 6.2.5
  • Archlinux (updated today, 2019-04-05), Thunderbird 60.5.3, Lightning 6.2.5.3

LONG VERSION END


Other Programs

I could already use the same CalDAV URL with other clients.
It worked with both Evolution and on Android.
Also a fully automated script using khal can access the calendar.

Notes

  • My setup is not english, so all options are translated and might not match their english counterpart 100%.
  • Another DAV calender already works with both these Thunderbird instances.
  • My Password contains a colon :. Does this cause problems for any of the used PHP libs? (: is a special character for HTTP basic authentication)

Do you have any suggestions what else i should try? Because I ran out of ideas :frowning:
If you need any more testing data, just let me know.
Thanks for bothering to read through this!

-tropf

Thanks a lot for all the information.
I am not using lightning myself (gnome+evolution), but I will install it to test it out. At first glance, checking your information provided and having quick look at the logs nothing obvious (besides the 503) pops up.
I’ll test things out this evening and let you know if I find something.