Caldav carddav Bundles: Difference between revisions

From Open-Xchange
No edit summary
 
(74 intermediate revisions by 14 users not shown)
Line 1: Line 1:
= Installation CalDAV and CardDAV with Open-Xchange (Beta) =
This article is valid until the version 7.10.2 of the Open Xchange Server. For newer versions please visit https://documentation.open-xchange.com/latest/middleware/miscellaneous/caldav_carddav.html


OXtender for Mac OS X will be discontinued due to the fact that the latest version of Apple OS X “Lion” will no longer support Apple SyncServices, which synchronization with OXtender for Mac OS X was based on. To support future synchronization between Open-Xchange Server and Mac OS X application, Open-Xchange implements synchronization functionality that will be using CalDAV and CardDAV protocols.
<!-- = Installation and Configuration of the CalDAV- and CardDAV-bundles =


The new synchronization protocols are available for all customers with a valid Open-Xchange license of Open-Xchange Server Edition and Open- Xchange Hosting Edition.
The Open-Xchange server can be accessed via it's CalDAV- and CardDAV-interfaces to allow the synchronization of Calendar- and Contact-data with external applications like the Mac OS Calendar and Address Book clients.


'''Please note:''' As of today the Open-Xchange CalDAV and CardDAV support is „Beta“ and will be continuously enhanced. With this release only the native OS X applications are supported. The support for other clients e.g. Thunderbird is planned for a future releases. The CardDAV support only synchronizes one address book.  
CalDAV and CardDAV are standard protocols for the exchange of calendar data and address data respectively. The CalDAV interface publishes all the user's calendar folders via CalDAV so the user can subscribe to them in a client application. Similarly, the CardDAV interface publishes the user's contact folders. Depending on the used client, the user can either subscribe one or more folders, or access all available data in an aggregated way.  
Currently the global address book plus the user’s private address book or the users aggregated addressboook will get merged into one address book on the OS X device.  


Open-Xchange is eagerly interested in learning about your tests, specifically in your specific environment. Please provide us with your feedback via our Public Bugzilla
== User Guide and Client Configuration ==
[https://bugzilla.open-xchange.com/enter_bug.cgi?product=OX6%20Server%20Edition OX6 Server Edition]
Please find further information regarding the client configuration at [[CalDAVClients]] and [[CardDAVClients]].


== What are CalDAV and CardDAV? ==
== Webserver Configuration ==
 
In order to redirect DAV requests to the appropiate servlets, the webserver's configuration may need to be adjusted using one of the following alternatives. Please be aware that for a working Mavericks auto configuration setup you need to have SSL enabled on the server. The non-SSL variant described below only works if you use the advanced CalDAV configuration in Mac OS X Mavericks and enter the path by hand. If you just want to enter the hostname, SSL is required. The same applies to iOS7 where SSL is always required.
CalDAV and CardDAV are standard protocols for the exchange of calendar data and address data respectively. We currently support the Mac OS X Clients, Version 10.5 and upward with these protocols. What do they do for a user? The CalDAV interface publishes all the users calendar via CalDAV so she can subscribe to them in Mac OS X iCal program. Addressbook on the other hand is more limited, as it can only subscribe one contact folder. As an administrator you can either publish the standard contact folder plus the global addressbook or use the (equally new) contact aggregation feature to assemble and publish an aggregated folder containing all the address data visible for a given user in a context merged as best we can at this point. Depending on whether the open-xchange-contact-aggregator package is installed and activated, the first or second option is chosen. '''Note: The open-xchange-contact-aggregator bundle is optional and should be considered experimental'''
 
== User Guide and Configuration ==
'''Please find further information regarding the configuration at the [http://oxpedia.org/wiki/index.php?title=SetUpMacCalCardDAVClients User Guide]'''
 
== Preparation ==


=== Alternative 1: Apache vhost (recommended) ===
=== Alternative 1: Apache vhost (recommended) ===
Please edit your site configuration file for OX so that ''' the existing OX configuration as well as the CalDAV/CardDAV configuration are placed inside their own virtual hosts sections.'''.


Please edit your file /etc/apache2/ox6.conf so that ''' the existing configuration for ox as well as the new configuration for CalDAV and CardDav are placed inside a virtual host '''.
Please add the following entries before your existing <code>VirtualHost</code> entry. This is an <b>example</b> where <code>MYSERVER.TLD</code> is the domain-name of the ox-server:


This is an <b>example</b> where MYSERVER.TLD is the domain-name of the ox-server:
# NameVirtualHost directive no longer has any effect since Apache >=2.4
 
# uncomment only for Apache Versions <2.4
  $ vi /etc/apache2/ox6.conf
  #NameVirtualHost *:80
 
  NameVirtualHost *:80
  <VirtualHost *:80>
  <VirtualHost *:80>
         ServerName dav.MYSERVER.TLD
         ServerName dav.<MYSERVER.TLD>
         ErrorLog /tmp/dav.err.log
         ErrorLog /tmp/dav.err.log
         TransferLog /tmp/dav.access.log
         TransferLog /tmp/dav.access.log
        <Proxy />
                Order allow,deny
                Allow from all
        </Proxy>
        ProxyPass / ajp://localhost:8009/servlet/dav/ smax=0 ttl=60 retry=5
</VirtualHost>
<VirtualHost *:80>
        ServerName MYSERVER.TLD
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/
   
   
        <Directory /var/www/>
      <Proxy balancer://oxserver-sync>
                AllowOverride None
        Order deny,allow
                Order allow,deny
        Allow from all
                allow from all
                RedirectMatch ^/$ /ox6/
                Options +FollowSymLinks +SymLinksIfOwnerMatch
        </Directory>
        # deflate
      AddOutputFilterByType DEFLATE text/html text/plain text/javascript application/javascript text/css text/xml application/xml text/x-js application/x-javascript
   
   
        # pre-compressed files
        # for grizzly http service
        AddType text/javascript .jsz
        BalancerMember http://localhost:8009 timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 route=OX1
        AddType text/css .cssz
        # uncomment this entry if you have a clustered setup and want to use the other nodes too
        AddType text/xml .xmlz
        #BalancerMember http://<ip-of-other-host>:8009 timeout=100 smax=0 ttl=60 retry=60 loadfactor=50 route=OX2
         AddType text/plain .po
        SetEnv proxy-initial-not-pooled
         SetEnv proxy-sendchunked
      </Proxy>
   
   
        AddEncoding gzip .jsz .cssz .xmlz
      ProxyPass / balancer://oxserver-sync/servlet/dav/
        SetEnvIf Request_URI "\.(jsz|cssz|xmlz)$" no-gzip
   
   
        ExpiresActive On
        <Location /ox6>
                # Expires (via ExpiresByType to override global settings)
                ExpiresByType image/gif "access plus 6 months"
                ExpiresByType image/png "access plus 6 months"
                ExpiresByType image/jpg "access plus 6 months"
                ExpiresByType image/jpeg "access plus 6 months"
                ExpiresByType text/css "access plus 6 months"
                ExpiresByType text/html "access plus 6 months"
                ExpiresByType text/xml "access plus 6 months"
                ExpiresByType text/javascript "access plus 6 months"
                ExpiresByType text/x-js "access plus 6 months"
                ExpiresByType application/x-javascript "access plus 6 months"
                ExpiresDefault "access plus 6 months"
                Header append Cache-Control "private"
                Header unset Last-Modified
                Header unset Vary
                # Strip version
                RewriteEngine On
                RewriteRule v=\w+/(.+) $1 [L]
                # Turn off ETag
                Header unset ETag
                FileETag None
        </Location>
        <Location /ox6/ox.html>
                ExpiresByType text/html "now"
                ExpiresDefault "now"
                Header unset Last-Modified
                Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
                # Turn off ETag
                Header unset ETag
                FileETag None
        </Location>
        <Location /ox6/index.html>
                ExpiresByType text/html "now"
                ExpiresDefault "now"
                Header unset Last-Modified
                Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
                # Turn off ETag
                Header unset ETag
                FileETag None
        </Location>
  </VirtualHost>
  </VirtualHost>


If you use this method, you have to make sure that dav.MYSERVER.TLD is reachable, your dns configuration need an entry for this name. Take care of the the dav.* logfiles, the example writes them without logrotation to /tmp.
If you use this method, you have to make sure that <code>dav.<MYSERVER.TLD></code> is reachable, your DNS configuration needs an entry for this name. Take care of the the dav.* logfiles, the example writes them without logrotation to <code>/tmp</code>.
 
Please note the <code>NameVirtualHost</code> directive is needed to be able to specify multiple virtual hosts for the same IP. The differentiation is only done by the given <code>ServerName</code>. This implies that you need two server names, so the virtual host entry for the existing ox site configuration needs to be also enriched by a <code>ServerName</code> if not already present. If you access the system without one of the given <code>ServerName</code>s so e.g. via the IP the system will pick the corresponding one by order (in this case the DAV part first. If you want it to work differently please change the order accordingly.


=== Alternative 2: Apache useragent detection ===
=== Alternative 2: Apache useragent detection ===
For environments where it is inconvenient to setup a vhost there is the possibility to redirect to relevant servlets another way: Via useragent detection. This is not recommended for the following reason: Per definition this is a whitelist-approach and any client sending a useragent-string not explicitly listed in the configuration will not be able to connect . Useragent-strings may also change between different versions of an application or may even be actively changed into something non-standard.
For environments where it is inconvenient to setup a vhost there is the possibility to redirect to relevant servlets another way: Via useragent detection. This is not recommended for the following reason: Per definition this is a whitelist-approach and any client sending a useragent-string not explicitly listed in the configuration will not be able to connect . Useragent-strings may also change between different versions of an application or may even be actively changed into something non-standard.


   $ vi /etc/apache2/ox6.conf
   $ vi <your-ox-site-configuration-file>


  RewriteEngine On   
  RewriteEngine On
  RewriteCond %{HTTP_USER_AGENT}      AddressBook        [OR]
  RewriteCond %{HTTP_USER_AGENT}      Calendar          [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalendarStore      [OR]
  RewriteCond %{HTTP_USER_AGENT}      Reminders          [OR]
  RewriteCond %{HTTP_USER_AGENT}      CoreDAV             
  RewriteCond %{HTTP_USER_AGENT}      DataAccess        [OR]
  RewriteRule (.*)                  ajp://localhost:8009/servlet/dav$1    [P]
  RewriteCond %{HTTP_USER_AGENT}      DAVKit            [OR]
  RewriteCond %{HTTP_USER_AGENT}      DAVx5              [OR]
  RewriteCond %{HTTP_USER_AGENT}      OpenSync          [OR]
  RewriteCond %{HTTP_USER_AGENT}      "DAVdroid"        [OR]
  RewriteCond %{HTTP_USER_AGENT}      Lightning          [OR]
  RewriteCond %{HTTP_USER_AGENT}      Thunderbird        [OR]
  RewriteCond %{HTTP_USER_AGENT}      Adresboek          [OR]
  RewriteCond %{HTTP_USER_AGENT}      dataaccessd        [OR]
  RewriteCond %{HTTP_USER_AGENT}      Preferences        [OR]
   RewriteCond %{HTTP_USER_AGENT}      Adressbuch        [OR]
  RewriteCond %{HTTP_USER_AGENT}      AddressBook        [OR]
  RewriteCond %{HTTP_USER_AGENT}      Address\ Book      [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalendarStore      [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalendarAgent      [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalDAV%20Sync%20Adapter [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalDavSynchronizer [OR]
  RewriteCond %{HTTP_USER_AGENT}      accountsd          [OR]
  RewriteCond %{HTTP_USER_AGENT}      "eM Client"        [OR]
  RewriteCond %{HTTP_USER_AGENT}      "OX Sync"          [OR]
  RewriteCond %{HTTP_USER_AGENT}      CalDav            [OR]
  RewriteCond %{HTTP_USER_AGENT}      CoreDAV            [OR]
  RewriteCond %{HTTP_USER_AGENT}      remindd
  RewriteCond %{HTTP_USER_AGENT}      "!Open-Xchange Calendar Feed Client"
  RewriteRule (.*)                  http://localhost:8009/servlet/dav$1    [P] # for grizzly http service


'''Note:''' The address book app on OSX 10.6 uses a localized user-agent string. If you're expecting clients with non-english language settings, you need to add the translated user-agent string to these rewrite rules. For example: "Adressbuch" for german OSX clients.
'''Note:''' The address book app on OSX 10.6 uses a localized user-agent string. If you're expecting clients with non-english language settings, you need to add the translated user-agent string to these rewrite rules. For example: "Adressbuch" for german OSX clients.


== Which packages do I need? ==
'''Note:''' Depending on the specific configuration, such a global definition of the rewrite rules might not be appropriate. However, the rules may also be defined inside a <code>Directory</code> context. More details are available at http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule.
 
== Autodiscovery ==
 
By providing some DNS service name registrations for your domain and adding an additional rewrite-rule to the webserver's configuration, it's possible for some clients to automatically discover the account settings by just providing the user's e-mail address and password. The procedure is specified in [http://tools.ietf.org/html/rfc6764 RFC 6764].
 
The following example illustrates the DNS entries where MYSERVER.TLD would be the domain name of the ox-server, both for CalDAV and CardDAV via HTTP and HTTPS on the virtual host dav.MYSERVER.TLD:
 
_caldavs._tcp.MYSERVER.TLD.      10800 IN SRV      10 1 443 dav.MYSERVER.TLD.
_caldav._tcp.MYSERVER.TLD.      10800 IN SRV      10 1  80 dav.MYSERVER.TLD.
_carddavs._tcp.MYSERVER.TLD.    10800 IN SRV      10 1 443 dav.MYSERVER.TLD.
_carddav._tcp.MYSERVER.TLD.      10800 IN SRV      10 1  80 dav.MYSERVER.TLD.
 
Additionally, a rewrite-rule similar to the following example should be added to the webserver configuration of the virtual host to enable the bootstrapping process. The rewrite target must be the root of your DAV server.
The well-known aliases should be added for your DAV vhost and on the vhost serving the host matching the mail domain:


To get CalDAV and CardDAV up and running you need the following packages:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/\.well-known/caldav  [OR]
RewriteCond %{REQUEST_URI} ^/\.well-known/carddav
RewriteRule (.*) / [L,R]


* open-xchange-webdav-directory - Assembles the *DAV interfaces into a common tree. This is needed for publishing certain properties so clients accept the OX is a WebDAV Server.
In the case of not serving the DAV service on the vhost root additionally some DNS TXT records are recommended:
* open-xchange-webdav-acl - The WebDAV equivalent of the /ajax/user interface. Allows clients to discover the current and other users and their addressbooks and calendars.
* open-xchange-carddav - The CardDAV interface exposing the users addressbook via carddav
* open-xchange-caldav - The CalDAV inteface exposing the users calendars via caldav


and optionally
_caldavs._tcp.MYSERVER.TLD.      10800 IN TXT  path=/servlet/dav
* open-xchange-contact-aggregator - Creates (and updates daily) a folder "all my contacts" in which all contacts a user can see are aggregated. This is very '''experimental''' and should be considered alpha state.
_caldav._tcp.MYSERVER.TLD.      10800 IN TXT  path=/servlet/dav
_carddavs._tcp.MYSERVER.TLD.    10800 IN TXT  path=/servlet/dav
_carddav._tcp.MYSERVER.TLD.     10800 IN TXT  path=/servlet/dav




{{InstallPlugin|pluginname=open-xchange-caldav open-xchange-carddav open-xchange-webdav-acl open-xchange-webdav-directory |sopath=updates}}
== Installation on OX App Suite ==


== Configuration ==
=== Debian GNU/Linux 9.0 ===


'''CalDAV'''
Add the following entry to /etc/apt/sources.list.d/open-xchange.list if not already present:


deb https://software.open-xchange.com/products/appsuite/stable/backend/DebianStretch/ /
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# deb https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/stable/backend/updates/DebianStretch/ /
and run
$ apt-get update
$ apt-get install open-xchange-dav
=== Debian GNU/Linux 10.0 ===
Add the following entry to /etc/apt/sources.list.d/open-xchange.list if not already present:
deb https://software.open-xchange.com/products/appsuite/stable/backend/DebianBuster/ /
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# deb https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/stable/backend/updates/DebianBuster/ /
and run
$ apt-get update
$ apt-get install open-xchange-dav
=== SUSE Linux Enterprise Server 12 (valid until 7.10.3)===
Add the package repository using zypper if not already present:
$ zypper ar https://software.open-xchange.com/products/appsuite/7.10.3/backend/SLE_12 ox
If you have a valid maintenance subscription, please run the following command and add the ldb account data to the url so that the most recent packages get installed:
$ zypper ar https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/7.10.3/backend/updates/SLES11 ox-updates
and run
$ zypper ref
$ zypper in open-xchange-dav
=== RedHat Enterprise Linux 6 (valid until 7.10.3)===
Start a console and create a software repository file if not already present:
$ vim /etc/yum.repos.d/ox.repo
[ox]
name=Open-Xchange
baseurl=https://software.open-xchange.com/products/appsuite/7.10.3/backend/RHEL6/
gpgkey=https://software.open-xchange.com/oxbuildkey.pub
enabled=1
gpgcheck=1
metadata_expire=0m
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# [ox-updates]
# name=Open-Xchange Updates
# baseurl=https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/7.10.3/backend/updates/RHEL6/
# gpgkey=https://software.open-xchange.com/oxbuildkey.pub
# enabled=1
# gpgcheck=1
# metadata_expire=0m
and run
$ yum update
$ yum install open-xchange-dav
===RedHat Enterprise Linux 7 ===
Start a console and create a software repository file if not already present:
$ vim /etc/yum.repos.d/ox.repo
[ox]
name=Open-Xchange
baseurl=https://software.open-xchange.com/products/appsuite/stable/backend/RHEL7/
gpgkey=https://software.open-xchange.com/oxbuildkey.pub
enabled=1
gpgcheck=1
metadata_expire=0m
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# [ox-updates]
# name=Open-Xchange Updates
# baseurl=https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/stable/backend/updates/RHEL7/
# gpgkey=https://software.open-xchange.com/oxbuildkey.pub
# enabled=1
# gpgcheck=1
# metadata_expire=0m
and run
$ yum update
$ yum install open-xchange-dav
===CentOS 6 (valid until 7.10.3)===
Start a console and create a software repository file if not already present:
$ vim /etc/yum.repos.d/ox.repo
[ox]
name=Open-Xchange
baseurl=https://software.open-xchange.com/products/appsuite/7.10.3/backend/RHEL6/
gpgkey=https://software.open-xchange.com/oxbuildkey.pub
enabled=1
gpgcheck=1
metadata_expire=0m
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# [ox-updates]
# name=Open-Xchange Updates
# baseurl=https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/7.10.3/backend/updates/RHEL6/
# gpgkey=https://software.open-xchange.com/oxbuildkey.pub
# enabled=1
# gpgcheck=1
# metadata_expire=0m
and run
$ yum update
$ yum install open-xchange-dav
===CentOS 7===
Start a console and create a software repository file if not already present:
$ vim /etc/yum.repos.d/ox.repo
[ox]
name=Open-Xchange
baseurl=https://software.open-xchange.com/products/appsuite/stable/backend/RHEL7/
gpgkey=https://software.open-xchange.com/oxbuildkey.pub
enabled=1
gpgcheck=1
metadata_expire=0m
# if you have a valid maintenance subscription, please uncomment the
# following and add the ldb account data to the url so that the most recent
# packages get installed
# [ox-updates]
# name=Open-Xchange Updates
# baseurl=https://[CUSTOMERID:PASSWORD]@software.open-xchange.com/products/appsuite/stable/backend/updates/RHEL7/
# gpgkey=https://software.open-xchange.com/oxbuildkey.pub
# enabled=1
# gpgcheck=1
# metadata_expire=0m
and run
$ yum update
$ yum install open-xchange-dav
== CalDAV Configuration ==
The following configuration options are available in the configuration files <code>caldav.properties</code> and <code>caldav.yml</code>:
===com.openexchange.caldav.enabled===
The property '''com.openexchange.caldav.enabled''' governs whether a user has access to the CalDAV interface. This can be configured along the config cascade, in the default setting, everyone that has access to the infostore also has access to caldav. This is achieved in the following way:
The property '''com.openexchange.caldav.enabled''' governs whether a user has access to the CalDAV interface. This can be configured along the config cascade, in the default setting, everyone that has access to the infostore also has access to caldav. This is achieved in the following way:


/opt/open-xchange/etc/groupware/caldav.properties:
/opt/open-xchange/etc/caldav.properties:
   com.openexchange.caldav.enabled=false
   com.openexchange.caldav.enabled=false


/opt/open-xchange/etc/groupware/contextSets/caldav.yml
/opt/open-xchange/etc/contextSets/caldav.yml
   premium:
   premium:
       com.openexchange.caldav.enabled: true
       com.openexchange.caldav.enabled: true
       withTags: ucInfostore
       withTags: ucInfostore


This means: In general caldav is turned off, but using the contextSets feature of the config cascade it is turned on for everyone that has infostore access.


'''CardDAV'''
This means: In general CalDAV is turned off, but using the <code>contextSets</code> feature of the config cascade it is turned on for everyone that has infostore access.


Similarly to caldav the property '''com.openexchange.carddav.enabled''' governs whether carddav is available for a certain user. This is configured exactly like caldav with the config cascade only enabling this for users that have access to the infostore:
===com.openexchange.caldav.tree===
Configures the ID of the folder tree used by the CalDAV interface. Currently, this should be set to the default value of '0'.


The property '''com.openexchange.carddav.ignoreFolders''' contains a blacklist of folderIds that will not be served via caldav. In large contexts in enterprise installations it might make sense to disable the global addressbook in carddav:
===com.openexchange.caldav.interval.start===
Defines the minimum end time of appointments to be synchronized via the CalDAV interface, relative to the current date. Possible values are "one_month" (default), "one_year" and "six_months". 


  com.openexchange.carddav.ignoreFolders=6
===com.openexchange.caldav.interval.end===
Defines the maximum start time of appointments to be synchronized via the CalDAV interface, relative to the current date. Possible values are "one_year" (default) and "two_years". 


'''Contact Aggregation'''
===com.openexchange.caldav.url===
Tells users where to find a caldav folder. This can be displayed in frontends. You can use the variables [hostname] and [folderId]. If you chose to deploy caldav as a virtual host (say 'dav.open-xchange.com') use https://dav.open-xchange.com/caldav/[folderId] as the value. If you are using user-agent sniffing use https://[hostname]/caldav/[folderId].


The contact aggregator can be enabled by enabling the property '''com.openexchange.contact.aggregator.enabled'''. By default this is turned off. Installations in which the contact aggregation feature should be enabled, must switch this property to '''true'''.


The contact aggregator knows how to do two kinds of aggregation runs. A '''fast run''' and a '''slow run'''. The fast run will collect all contacts from all folders a user can see, the slow run will, in addition, scour all email accounts for email addresses. Whether the system does these runs, and how often can be configured with the properties:
== CardDAV Configuration ==


'''com.openexchange.contact.aggregator.fastRunInterval'''
The following configuration options are available in the configuration files carddav.properties and carddav.yml:
and
'''com.openexchange.contact.aggregator.slowRunInterval'''


The value can be a number of milliseconds or an interval specification with ms for milliseconds, s for seconds, m for minutes, h for hours, d for days and w for weeks. For example, if you want to do the fast run once a day and the slow run once a week you could configure the following:
===com.openexchange.carddav.enabled===
Similarly to CalDAV, the property '''com.openexchange.carddav.enabled''' governs whether CardDAV is available for a certain user. This is configured exactly like CalDAV with the config cascade only enabling this for users that have access to the infostore:


  com.openexchange.contact.aggregator.fastRunInterval=1d
/opt/open-xchange/etc/carddav.properties:
   com.openexchange.contact.aggregator.slowRunInterval=1w
   com.openexchange.carddav.enabled=false


By default, slow runs are deactivated, fast runs are performed once a day.
/opt/open-xchange/etc/contextSets/carddav.yml
  premium:
      com.openexchange.carddav.enabled: true
      withTags: ucInfostore


In case you allow slow runs, the number of mails per mailfolder can be configured with the property:
===com.openexchange.carddav.ignoreFolders===
A comma-separated list of folder IDs to exclude from the synchronization. Use this to disable syncing of very large folders (e.g. the global address list in large contexts, which always has ID 6). By default, no folders are excluded.


  com.openexchange.contact.aggregator.mailLimit=3000
===com.openexchange.carddav.tree===
Configures the ID of the folder tree used by the CardDAV interface. Currently, this should be set to the default value of '0'.


As for CardDAV you can configure a list of folders that should not be part of an aggregation run with the property
===com.openexchange.carddav.exposedCollections===
Controls which collections are exposed via the CardDAV interface. Possible values are '0', '1' and '2'. A value of '1' makes each visible folder available as a resource collection, while '2' only exposes an aggregated collection containing  all contact resources from all visible folders. The default value '0' exposes either an aggregated collection or individual collections for each folder, depending on the client's user-agent that is matched against the pattern in 'userAgentForAggregatedCollection'.


'''com.openexchange.contact.aggregator.folderBlacklist'''
===com.openexchange.carddav.userAgentForAggregatedCollection===
Regular expression to match against the client's user-agent to decide whether the aggregated collection is exposed or not. The default pattern matches all known varieties of the Mac OS Addressbook client, that doesn't support multiple collections. Only used if 'exposedCollections' is set to '0'. The pattern is used case insensitive.


which can contain a comma separated blacklist of folderIds.  
===com.openexchange.carddav.reducedAggregatedCollection===
Specifies if all visible folders are used to create the aggregated collection, or if a reduced set of folders only containing the global addressbook and the personal contacts folders should be used. This setting only influences the aggregated collection that is used for clients that don't support multiple collections. Possible values are 'true' and 'false. -->


To find out how to set up the Mac OS X clients, please see: [[SetUpMacCalCardDAVClients|Setting up CalDAV and CardDAV in Mac OS X]]
[[Category: Clients]]
[[Category: Administrator]]
[[Category: AppSuite]]

Latest revision as of 10:50, 8 December 2021

This article is valid until the version 7.10.2 of the Open Xchange Server. For newer versions please visit https://documentation.open-xchange.com/latest/middleware/miscellaneous/caldav_carddav.html