Dovecot CalDAV server
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
- Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.)
- Timo Sirainen <dovecot@dovecot.org>:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Well CalDAV/CardDAV is just another protocol you put in front of your storage engine, right? (Besides the tweaks it will take…)
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
Have you had a look at http://radicale.org/? I haven't used it myself, but heard good things about it.
p@rick
- Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.)
-- [*] sys4 AG
https://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München
Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Marc Schiffbauer Aufsichtsratsvorsitzender: Florian Kirstein
On Fri, 11 Sep 2015 00:04:29 +0200 Patrick Ben Koetter <p@sys4.de> wrote:
Have you had a look at http://radicale.org/? I haven't used it myself, but heard good things about it.
Thanks for sharing. This really looks interesting.
--
Niklaas
On 09/10/2015 11:43 PM, Timo Sirainen wrote:
- Maybe there is already some code out there that could be used to implement it faster?
As I know Cyrus IMAP has this feature, but I didn't try it nor see the code. -- Aleksander 'A.L.E.C' Machniak Kolab Groupware Developer [http://kolab.org] Roundcube Webmail Developer [http://roundcube.net] --------------------------------------------------- PGP: 19359DC1 @@ GG: 2275252 @@ WWW: http://alec.pl
On 10/09/2015 22:43, Timo Sirainen wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be: a simple method for handling calender permissions. ie, private calenders, public calenders, and limited access calenders radical is easy to install, but working out permissions for editing/viewing I found less than simple. having permissions, or at least login tied with dovecot reduces password admin.
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails) It may be able to be implemented in a text file or sql table, but I'm not sure how the mua's handle adding entries/calenders/changing permissions etc. If it would work for thunderbird and ms outlook, it would cover a large section of the local userbase that may use it, and working with squirrelmail and roundcube would cover most of the webmail based users
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
- Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.)
On Sep 10, 2015, at 5:43 PM, Timo Sirainen <tss@iki.fi> wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions?
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
I have used davical and was pretty happy with it. My biggest complaint is that it requires a web server and PHP. It uses Postgresql as a storage backend, which I think is a bit heavy for small applications.
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
I think keeping it in C is the way to go.
On Fri, 11 Sep 2015 00:43:16 +0300 Timo Sirainen <tss@iki.fi> wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Have you heard about SOGo yet?
It is an entire groupware server but its focus lies on scalability implemented through open standards. For an overview check
http://www.sogo.nu/english/about/technology.html
I haven't used it myself yet but I am planning to do so.
--
Niklaas
- Niklaas Baudet von Gersdorff <niklaas@kulturflatrate.net>:
On Fri, 11 Sep 2015 00:43:16 +0300 Timo Sirainen <tss@iki.fi> wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Have you heard about SOGo yet?
It is an entire groupware server but its focus lies on scalability implemented through open standards. For an overview check
SOGo is good groupware. It is rock solid and runs stable. But it won't scale for what Timo is after. At least that's what I was told a while ago.
p@rick
-- [*] sys4 AG
https://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München
Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Marc Schiffbauer Aufsichtsratsvorsitzender: Florian Kirstein
Am Freitag, 11. September 2015, 12:26:25 schrieb Patrick Ben Koetter:
- Niklaas Baudet von Gersdorff <niklaas@kulturflatrate.net>:
On Fri, 11 Sep 2015 00:43:16 +0300
Timo Sirainen <tss@iki.fi> wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon.
Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some
key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just
local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Have you heard about SOGo yet?
It is an entire groupware server but its focus lies on scalability implemented through open standards. For an overview check
SOGo is good groupware. It is rock solid and runs stable. But it won't scale for what Timo is after. At least that's what I was told a while ago.
Scaling is done with loadbalancers nowadays. Network-based or application- based. Both work depending which one is better in which situation.
Mit freundlichen Grüßen,
Michael Schwartzkopff
-- [*] sys4 AG
http://sys4.de, +49 (89) 30 90 46 64, +49 (162) 165 0044 Franziskanerstraße 15, 81669 München
Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Marc Schiffbauer Aufsichtsratsvorsitzender: Florian Kirstein
On Fri, 11 Sep 2015 00:43:16 +0300, Timo Sirainen stated:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
- Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.)
The RFCs 6352 & 4791 are all ready in place. As long as everything stays in compliance, I think it would be a wonderful idea. And yes I would stick with "C".
-- Jerry
Am 10.09.2015 um 23:43 schrieb Timo Sirainen:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key-value dbs, maybe storing as emails)
- efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed)
- have it work with dsync (= replication & migration)
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster?
- Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult.
- Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.)
Hi Timo, caldav / carddav in dovecot will be an ultimate nice feature.
I remember Kolab with imap file storage backend, storing vcard, ics in imap folders. ( which should be hidden )
There was a thunderbird plugin for this, but i had no good performance. Advantage of this solution might be the exist imap acl system can be used for all kind of addressbook , kalendar sharing. Perhaps public addressbooks and calendars are possible too this way ( and at last anonymous read only ones ).
All other servers i know use some db backend. I guess you will have hard times with clients, cause there are all kind of known bugs.
Specially serial appointment with/and different timezones over summertime and wintertime changes seems difficult to code. Best way all in UTC and let the client convert it in its local timezone.
Also there are two ways of invitations notices via mail , let the client send it, or the server has to do it ( or perhaps combinate ).
So resources calenders are needed too ,for auto booking calenders you need some kind of scripting. For the first releases mark as higly beta , its very bad for user if they trust in calenders which might have bugs.
the new thunderbird carddav addressbook seems to stuck since years
https://github.com/mikeconley/thunderbird-ensemble
Of course i am willing to test your code and report.
Best Regards MfG Robert Schetterer
-- [*] sys4 AG
http://sys4.de, +49 (89) 30 90 46 64 Franziskanerstraße 15, 81669 München
Sitz der Gesellschaft: München, Amtsgericht München: HRB 199263 Vorstand: Patrick Ben Koetter, Marc Schiffbauer Aufsichtsratsvorsitzender: Florian Kirstein
On Friday 11 September 2015 17:55:12 Robert Schetterer wrote:
Am 10.09.2015 um 23:43 schrieb Timo Sirainen:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key- value dbs, maybe storing as emails) - efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed) - have it work with dsync (= replication & migration)
Some things I wonder about: think I still have too much other work that I won't spend a lot of time
- Maybe there is already some code out there that could be used to implement it faster? - Maybe even use something else besides C to implement it.. Then again that makes integration to Dovecot more difficult. - Is anybody interested in helping to develop this? :) I
coding it..> One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest design mistakes. (There are a couple of reasons why they'd want to replace that.) Hi Timo, caldav / carddav in dovecot will be an ultimate nice feature.
I remember Kolab with imap file storage backend, storing vcard, ics in imap folders. ( which should be hidden )
In fact with metadata support (which is now mainstream in dovecot) you can store arbitrary data in imap. The folder is simply marked as: addressbook, calendar or whatever you want . I think there is nothing more to implement in dovecot (well, is enough place for improuvement) ;
There was a thunderbird plugin for this, but i had no good performance. Advantage of this solution might be the exist imap acl system can be used for all kind of addressbook , kalendar sharing. Perhaps public addressbooks and calendars are possible too this way ( and at last anonymous read only ones ).
Thunderbird is stagnant; I think we don't have an IMAP client dovecot deserve :) But IMHO all the rest ( storing, parsing) should be implemented client side via plugins.
All other servers i know use some db backend. I guess you will have hard times with clients, cause there are all kind of known bugs.
Best Regards MfG Robert Schetterer--
Mihai Badici[1]
On Fri, 11 Sep 2015 00:43:16 +0300 Timo Sirainen <tss@iki.fi> wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions?
Perhaps support for LDAP as a backend for retrieving contact information (CardDAV) and/or a way to sync the contacts between Dovecot and LDAP in some sane way. This could end-up being more trouble than worth, though.
Best regards
-- Branko Majic Jabber: branko@majic.rs Please use only Free formats when sending attachments to me.
Бранко Мајић Џабер: branko@majic.rs Молим вас да додатке шаљете искључиво у слободним форматима.
On Friday 11 September 2015 00:43:16 Timo Sirainen wrote:
I've been once in a while over the years thinking about implementing CalDAV (and CardDAV) to Dovecot. It might be time to start that soon. Does anyone have any suggestions? So far my main goals would be:
- scalable, of course
- configurable storage (object storage, regular fs, maybe some key- value dbs, maybe storing as emails) - efficient indexes (potentially using key-value dbs? or maybe just local files. not sure yet what kind of indexing is needed) - have it work with dsync (= replication & migration)
The kolab project already store calendars and cards as e-mails. I use dovecot from few years using part of this project. They use libkolabxml who provide binding for encoding/decoding objects ; this is an approach with advandages and disadvantages ( an external library can be upgraded to reflect changes in object format) but i think compatibility is a good thing at the end. Maybe this could be pluggable to allow different xml formats, but I think all should be more or less similar.
Some things I wonder about:
- Maybe there is already some code out there that could be used to implement it faster? - Maybe even use something else besides C to
implement
it.. Then again that makes integration to Dovecot more difficult. - Is anybody interested in helping to develop this? :) I think I still have too much other work that I won't spend a lot of time coding it..
One thing that makes this easier is that Open-Xchange has already implemented a CalDAV server, so they can help to avoid the biggest
mistakes. (There are a couple of reasons why they'd want to replace
design that. I think there are two parts of the project: object storage and protocol implementation. If you choose the kolab approach, the object storage part is already done :)
-- Mihai Badici[1]
participants (11)
-
A.L.E.C
-
Admin
-
Branko Majic
-
Jerry
-
Michael Schwartzkopff
-
Mihai Badici
-
Niklaas Baudet von Gersdorff
-
Patrick Ben Koetter
-
Robert Schetterer
-
Tim Dickson
-
Timo Sirainen