Navigation

    Kopano
    • Register
    • Login
    • Search
    • Categories
    • Get Official Kopano Support
    • Recent
    Statement about z-hub.io

    Caldav and carddav with nextcloud

    Z-Push when using other backends
    3
    10
    379
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • alu64
      alu64 last edited by

      I have been trying to run z-push with caldav and carddav backend against nextcloud.
      Imap backend with dovecot runs flawlessly for me, but caldav and carddav are no go.
      If your setup is a success, would you please post your config files?
      If it didn’t work for you, please let me know too.
      Thanks for your feedback.

      maedball 1 Reply Last reply Reply Quote 0
      • maedball
        maedball @alu64 last edited by maedball

        @alu64

        Here are my configs ->

        Please be noted calendar and contacts are working fine for me. I am more fighting against mailing.

        caldav.php

        <?php
        /***********************************************
        * File      :   config.php
        * Project   :   Z-Push
        * Descr     :   CalDAV backend configuration file
        *
        * Created   :   27.11.2012
        *
        * Copyright 2012 - 2014 Jean-Louis Dupond
        *
        * Jean-Louis Dupond released this code as AGPLv3 here: https://github.com/dupondje/PHP-Push-2/issues/93
        *
        * This program is free software: you can redistribute it and/or modify
        * it under the terms of the GNU Affero General Public License, version 3,
        * as published by the Free Software Foundation.
        *
        * This program is distributed in the hope that it will be useful,
        * but WITHOUT ANY WARRANTY; without even the implied warranty of
        * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        * GNU Affero General Public License for more details.
        *
        * You should have received a copy of the GNU Affero General Public License
        * along with this program.  If not, see <http://www.gnu.org/licenses/>.
        *
        * Consult LICENSE file for details
        ************************************************/
        
        // ************************
        //  BackendCalDAV settings
        // ************************
        
        // Server protocol: http or https
        define('CALDAV_PROTOCOL', 'https');
        
        // Server name
        define('CALDAV_SERVER', 'randomservername.net');
        
        // Server port
        define('CALDAV_PORT', '443');
        
        // Path
        define('CALDAV_PATH', '/remote.php/dav/calendars/%u/');
        
        // Default CalDAV folder (calendar folder/principal). This will be marked as the default calendar in the mobile
        define('CALDAV_PERSONAL', 'personal');
        
        // If the CalDAV server supports the sync-collection operation
        // DAViCal, SOGo and SabreDav support it
        // SabreDav version must be at least 1.9.0, otherwise set this to false
        // Setting this to false will work with most servers, but it will be slower
        define('CALDAV_SUPPORTS_SYNC', true);
        
        
        // Maximum period to sync.
        // Some servers don't support more than 10 years so you will need to change this
        define('CALDAV_MAX_SYNC_PERIOD', 2147483647);
        

        carddav.php

        <?php
        /***********************************************
        * File      :   config.php
        * Project   :   Z-Push
        * Descr     :   CardDAV backend configuration file
        *
        * Created   :   16.03.2013
        *
        * Copyright 2013 - 2016 Francisco Miguel Biete
        *
        * This program is free software: you can redistribute it and/or modify
        * it under the terms of the GNU Affero General Public License, version 3,
        * as published by the Free Software Foundation.
        *
        * This program is distributed in the hope that it will be useful,
        * but WITHOUT ANY WARRANTY; without even the implied warranty of
        * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
        * GNU Affero General Public License for more details.
        *
        * You should have received a copy of the GNU Affero General Public License
        * along with this program.  If not, see <http://www.gnu.org/licenses/>.
        *
        * Consult LICENSE file for details
        ************************************************/
        
        // ************************
        //  BackendCardDAV settings
        // ************************
        
        // Server protocol: http or https
        define('CARDDAV_PROTOCOL', 'https');
        
        // Server name
        define('CARDDAV_SERVER', 'randomservername.net');
        
        // Server port
        define('CARDDAV_PORT', '443');
        
        // Server path to the addressbook, or the principal with the addressbooks
        //  If your user has more than 1 addressbook point it to the principal.
        //  Example: user test@domain.com will have 2 addressbooks
        //      http://localhost/caldav.php/test@domain.com/addresses/personal
        //      http://localhost/caldav.php/test@domain.com/addresses/work
        //      You set the CARDDAV_PATH to '/caldav.php/%u/addresses/' and personal and work will be autodiscovered
        // %u: replaced with the username
        // %d: replaced with the domain
        //   Add the trailing /
        define('CARDDAV_PATH', '/remote.php/dav/addressbooks/users/%u/');
        
        
        // Server path to the default addressbook
        //  Mobile device will create new contacts here. It must be under CARDDAV_PATH
        // %u: replaced with the username
        // %d: replaced with the domain
        //   Add the trailing /
        define('CARDDAV_DEFAULT_PATH', '/remote.php/dav/addressbooks/users/%u/contacts/');
        
        // Server path to the GAL addressbook. This addressbook is readonly and searchable by the user, but it will NOT be synced.
        // If you don't want GAL, comment it
        // %u: replaced with the username
        // %d: replaced with the domain
        //  Add the trailing /
        //define('CARDDAV_GAL_PATH', '/caldav.php/%d/GAL/');
        
        // Minimal length for the search pattern to do the real search.
        #define('CARDDAV_GAL_MIN_LENGTH', 5);
        
        // Addressbook display name, the name showed in the mobile device
        // %u: replaced with the username
        // %d: replaced with the domain
        define('CARDDAV_CONTACTS_FOLDER_NAME', '%u Addressbook');
        
        
        // If the CardDAV server supports the sync-collection operation
        // DAViCal and SabreDav support it, but Owncloud, SOGo don't
        // SabreDav version must be at least 1.9.0, otherwise set this to false
        // Setting this to false will work with most servers, but it will be slower: 1 petition for the href of vcards, and 1 petition for each vcard
        define('CARDDAV_SUPPORTS_SYNC', true);
        
        
        // If the CardDAV server supports the FN attribute for searches
        // DAViCal supports it, but SabreDav, Owncloud and SOGo don't
        // Setting this to true will search by FN. If false will search by sn, givenName and email
        // It's safe to leave it as false
        define('CARDDAV_SUPPORTS_FN_SEARCH', false);
        
        
        // If your carddav server needs to use file extension to recover a vcard.
        //    Davical needs it
        //    SOGo official demo online needs it, but some SOGo installation don't need it, so test it
        define('CARDDAV_URL_VCARD_EXTENSION', '.vcf');
        
        
        1 Reply Last reply Reply Quote 0
        • alu64
          alu64 last edited by alu64

          @maedball
          Your configs looks very much like mine.
          Could you please also post your z-push.conf.php?
          imap.conf.php It works for me with https://github.com/docker-mailserver/docker-mailserver
          Thank you very much for your kind reply.

          /***********************************************
          * File      :   config.php
          * Project   :   Z-Push
          * Descr     :   IMAP backend configuration file
          *
          * Created   :   27.11.2012
          *
          * Copyright 2007 - 2016 Zarafa Deutschland GmbH
          *
          * This program is free software: you can redistribute it and/or modify
          * it under the terms of the GNU Affero General Public License, version 3,
          * as published by the Free Software Foundation.
          *
          * This program is distributed in the hope that it will be useful,
          * but WITHOUT ANY WARRANTY; without even the implied warranty of
          * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
          * GNU Affero General Public License for more details.
          *
          * You should have received a copy of the GNU Affero General Public License
          * along with this program.  If not, see <http://www.gnu.org/licenses/>.
          *
          * Consult LICENSE file for details
          ************************************************/
          
          // ************************
          //  BackendIMAP settings
          // ************************
          
          // Defines the server to which we want to connect
          define('IMAP_SERVER', 'imap.server.net');
          
          // connecting to default port (143)
          define('IMAP_PORT', 993);
          
          // best cross-platform compatibility (see http://php.net/imap_open for options)
          define('IMAP_OPTIONS', '/ssl/norsh/novalidate-cert');
          
          
          // Mark messages as read when moving to Trash.
          //      BE AWARE that you will lose the unread flag, but some mail clients do this so the Trash folder doesn't get boldened
          define('IMAP_AUTOSEEN_ON_DELETE', false);
          
          
          // IMPORTANT: BASIC IMAP FOLDERS [ask your mail admin]
                  // We can have diferent cases (case insensitive):
                  // 1.
                  //      inbox
                  //      sent
                  //      drafts
                  //      trash
                  // 2.
                  //      inbox
                  //      common.sent
                  //      common.drafts
                  //      common.trash
                  // 3.
                  //      common.inbox
                  //      common.sent
                  //      common.drafts
                  //      common.trash
                  // 4.
                  //      common
                  //      common.sent
                  //      common.drafts
                  //      common.trash
                  //
                  // gmail is a special case, where the default folders are under the [gmail] prefix and the folders defined by the user are under INBOX.
                  // This configuration seems to work:
                  //      define('IMAP_FOLDER_PREFIX', '');
                  //      define('IMAP_FOLDER_PREFIX_IN_INBOX', false);
                  //      define('IMAP_FOLDER_INBOX', 'INBOX');
                  //      define('IMAP_FOLDER_SENT', '[Gmail]/Sent');
                  //      define('IMAP_FOLDER_DRAFT', '[Gmail]/Drafts');
                  //      define('IMAP_FOLDER_TRASH', '[Gmail]/Trash');
                  //      define('IMAP_FOLDER_SPAM', '[Gmail]/Spam');
                  //      define('IMAP_FOLDER_ARCHIVE', '[Gmail]/All Mail');
          
          // Since I know you won't configure this, I will raise an error unless you do.
          // When configured set this to true to remove the error
          define('IMAP_FOLDER_CONFIGURED', true);
          
          // Folder prefix is the common part in your names (3, 4)
          define('IMAP_FOLDER_PREFIX', '');
          
          // Inbox will have the preffix preppend (3 & 4 to true)
          define('IMAP_FOLDER_PREFIX_IN_INBOX', false);
          
          // Inbox folder name (case doesn't matter) - (empty in 4)
          define('IMAP_FOLDER_INBOX', 'Inbox');
          
          // Sent folder name (case doesn't matter)
          define('IMAP_FOLDER_SENT', 'Sent');
          
          // Draft folder name (case doesn't matter)
          define('IMAP_FOLDER_DRAFT', 'Drafts');
          
          // Trash folder name (case doesn't matter)
          define('IMAP_FOLDER_TRASH', 'Trash');
          
          // Spam folder name (case doesn't matter). Only showed as special by iOS devices
          define('IMAP_FOLDER_SPAM', 'Junk');
          
          // Archive folder name (case doesn't matter). Only showed as special by iOS devices
          define('IMAP_FOLDER_ARCHIVE', 'Archive');
          
          
          
          // forward messages inline (default true - inlined)
          define('IMAP_INLINE_FORWARD', true);
          
          // list of folders we want to exclude from sync. Names, or part of it, separated by |
          // example: dovecot.sieve|archive|spam
          define('IMAP_EXCLUDED_FOLDERS', '');
          
          
          
          // overwrite the "from" header with some value
          // options:
          //        ''              - do nothing, use the From header
          //        'username'      - the username will be set (usefull if your login is equal to your emailaddress)
          //        'domain'        - the value of the "domain" field is used
          //        'sql'           - the username will be the result of a sql query. REMEMBER TO INSTALL PHP-PDO AND PHP-DATABASE
          //        'ldap'          - the username will be the result of a ldap query. REMEMBER TO INSTALL PHP-LDAP!!
          //        '@mydomain.com' - the username is used and the given string will be appended
          define('IMAP_DEFAULTFROM', '');
          
          // DSN: formatted PDO connection string
          //    mysql:host=xxx;port=xxx;dbname=xxx
          // USER: username to DB
          // PASSWORD: password to DB
          // OPTIONS: array with options needed
          // QUERY: query to execute
          // FIELDS: columns in the query
          // FROM: string that will be the from, replacing the column names with the values
          define('IMAP_FROM_SQL_DSN', '');
          define('IMAP_FROM_SQL_USER', '');
          define('IMAP_FROM_SQL_PASSWORD', '');
          define('IMAP_FROM_SQL_OPTIONS', serialize(array(PDO::ATTR_PERSISTENT => true)));
          define('IMAP_FROM_SQL_QUERY', "select first_name, last_name, mail_address from users where mail_address = '#username@#domain'");
          define('IMAP_FROM_SQL_FIELDS', serialize(array('first_name', 'last_name', 'mail_address')));
          define('IMAP_FROM_SQL_EMAIL', '#mail_address');
          define('IMAP_FROM_SQL_FROM', '#first_name #last_name <#mail_address>');
          define('IMAP_FROM_SQL_FULLNAME', '#first_name #last_name');
          
          // SERVER_URI: ldap server
          // USER: dn to use for connecting
          // PASSWORD: password
          // QUERY: query to execute
          // FIELDS: columns in the query
          // FROM: string that will be the from, replacing the field names with the values
          define('IMAP_FROM_LDAP_SERVER_URI', 'ldap://127.0.0.1:389/');
          define('IMAP_FROM_LDAP_USER', 'cn=zpush,ou=servers,dc=zpush,dc=org');
          define('IMAP_FROM_LDAP_PASSWORD', 'password');
          define('IMAP_FROM_LDAP_BASE', 'dc=zpush,dc=org');
          define('IMAP_FROM_LDAP_QUERY', '(mail=#username@#domain)');
          define('IMAP_FROM_LDAP_FIELDS', serialize(array('givenname', 'sn', 'mail')));
          define('IMAP_FROM_LDAP_EMAIL', '#mail');
          define('IMAP_FROM_LDAP_FROM', '#givenname #sn <#mail>');
          define('IMAP_FROM_LDAP_FULLNAME', '#givenname #sn');
          
          
          
          // Method used for sending mail
          // mail => mail() php function
          // sendmail => sendmail executable
          // smtp => direct connection against SMTP
          define('IMAP_SMTP_METHOD', 'smtp');
          
          global $imap_smtp_params;
          // SMTP Parameters
          //      mail : no params
          $imap_smtp_params = array('host' => 'tls://mail.server.net', 'port' => 587, 'auth' => true, 'username' => 'imap_username', 'password' => 'imap_password', 'verify_peer' => false);
          //      sendmail
          //$imap_smtp_params = array('sendmail_path' => '/usr/bin/sendmail', 'sendmail_args' => '-i');
          //      smtp
          //          "host"              - The server to connect. Default is localhost.
          //          "port"              - The port to connect. Default is 25.
          //          "auth"              - Whether or not to use SMTP authentication. Default is FALSE.
          //          "username"          - The username to use for SMTP authentication. "imap_username" for using the same username as the imap server
          //          "password"          - The password to use for SMTP authentication. "imap_password" for using the same password as the imap server
          //          "localhost"         - The value to give when sending EHLO or HELO. Default is localhost
          //          "timeout"           - The SMTP connection timeout. Default is NULL (no timeout).
          //          "verp"              - Whether to use VERP or not. Default is FALSE.
          //          "debug"             - Whether to enable SMTP debug mode or not. Default is FALSE.
          //          "persist"           - Indicates whether or not the SMTP connection should persist over multiple calls to the send() method.
          //          "pipelining"        - Indicates whether or not the SMTP commands pipelining should be used.
          //          "verify_peer"       - Require verification of SSL certificate used. Default is TRUE.
          //          "verify_peer_name"  - Require verification of peer name. Default is TRUE.
          //          "allow_self_signed" - Allow self-signed certificates. Requires verify_peer. Default is FALSE.
          //$imap_smtp_params = array('host' => 'localhost', 'port' => 25, 'auth' => false);
          // If you want to use SSL with port 25 or port 465 you must preppend "ssl://" before the hostname or IP of your SMTP server
          // IMPORTANT: To use SSL you must use PHP 5.1 or later, install openssl libs and use ssl:// within the host variable
          // IMPORTANT: To use SSL with PHP 5.6 you should set verify_peer, verify_peer_name and allow_self_signed
          //$imap_smtp_params = array('host' => 'ssl://localhost', 'port' => 465, 'auth' => true, 'username' => 'imap_username', 'password' => 'imap_password');
          // If you want to use STARTTLS when the server is supporting it, you just need to enable authentication on a non SSL host variable.
          //$imap_smtp_params = array('host' => 'localhost', 'port' => 587, 'auth' => true, 'username' => 'imap_username', 'password' => 'imap_password');
          
          
          // If you are using IMAP_SMTP_METHOD = mail or sendmail and your sent messages are not correctly displayed you can change this to "\n".
          //   BUT, it doesn't comply with RFC 2822 and will break if using smtp method
          define('MAIL_MIMEPART_CRLF', "\r\n");
          
          
          // A file containing file mime types->extension mappings.
          //  SELINUX users: make sure the file has a security context accesible by your apache/php-fpm process
          define('SYSTEM_MIME_TYPES_MAPPING', '/etc/mime.types');
          
          
          // Use BackendCalDAV for Meetings. You cannot hope to get that functionality working without a caldav backend.
          define('IMAP_MEETING_USE_CALDAV', false);
          
          // If your IMAP server allows authenticating via GSSAPI, php-imap will not fall back properly to other authentication
          // methods and you will be unable to log in. Uncomment the following line to disable that authentication method.
          // Multiple methods can be specified as a comma-separated string.
          // define('IMAP_DISABLE_AUTHENTICATOR', 'GSSAPI');
          
          // Specify Which Charset the IMAP Search is going to use, Default is 'UTF-8' but you could use 'US-ASCII'
          define('IMAP_SEARCH_CHARSET', 'UTF-8');
          
          
          maedball 1 Reply Last reply Reply Quote 0
          • maedball
            maedball last edited by

            sure here you go:
            my mail issues are most likely related to my dovecot (i am sporting very old mails from 1996 + smime encrypted mails. So this is most likely the issue

            <?php
            /***********************************************
            * File      :   config.php
            * Project   :   Z-Push
            * Descr     :   Main configuration file
            *
            * Created   :   01.10.2007
            *
            * Copyright 2007 - 2016 Zarafa Deutschland GmbH
            *
            * This program is free software: you can redistribute it and/or modify
            * it under the terms of the GNU Affero General Public License, version 3,
            * as published by the Free Software Foundation.
            *
            * This program is distributed in the hope that it will be useful,
            * but WITHOUT ANY WARRANTY; without even the implied warranty of
            * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
            * GNU Affero General Public License for more details.
            *
            * You should have received a copy of the GNU Affero General Public License
            * along with this program.  If not, see <http://www.gnu.org/licenses/>.
            *
            * Consult LICENSE file for details
            ************************************************/
            
            /**********************************************************************************
             *  Default settings
             */
                // Defines the default time zone, change e.g. to "Europe/London" if necessary
                define('TIMEZONE', 'Europe/Berlin');
            
                // Defines the base path on the server
                define('BASE_PATH', dirname($_SERVER['SCRIPT_FILENAME']). '/');
            
                // Try to set unlimited timeout
                define('SCRIPT_TIMEOUT', 0);
            
                // This should be solved on THE webserver level if there are proxies
                // between mobile client and Z-Push.
                // IMPORTANT: This setting will be deprecated in Z-Push 2.7.0.
                // Use a custom header to determinate the remote IP of a client.
                // By default, the server provided REMOTE_ADDR is used. If the header here set
                // is available, the provided value will be used, else REMOTE_ADDR is maintained.
                // set to false to disable this behaviour.
                // common values: 'HTTP_X_FORWARDED_FOR', 'HTTP_X_REAL_IP' (casing is ignored)
                define('USE_CUSTOM_REMOTE_IP_HEADER', false);
            
                // When using client certificates, we can check if the login sent matches the owner of the certificate.
                // This setting specifies the owner parameter in the certificate to look at.
                define("CERTIFICATE_OWNER_PARAMETER", "SSL_CLIENT_S_DN_CN");
            
                /*
                 * Whether to use the complete email address as a login name
                 * (e.g. user@company.com) or the username only (user).
                 * This is required for Z-Push to work properly after autodiscover.
                 * Possible values:
                 *   false - use the username only.
                 *   true  - string the mobile sends as username, e.g. full email address (default).
                 */
                define('USE_FULLEMAIL_FOR_LOGIN', false);
            
            /**********************************************************************************
             * StateMachine setting
             *
             * These StateMachines can be used:
             *   FILE  - FileStateMachine (default). Needs STATE_DIR set as well.
             *   SQL   - SqlStateMachine has own configuration file. STATE_DIR is ignored.
             *           State migration script is available, more informations: https://wiki.z-hub.io/x/xIAa
             */
                define('STATE_MACHINE', 'FILE');
                define('STATE_DIR', '/var/lib/z-push/');
            
            /**********************************************************************************
             *  IPC - InterProcessCommunication
             *
             *  Is either provided by using shared memory on a single host or
             *  using the memcache provider for multi-host environments.
             *  When another implementation should be used, the class can be set here explicitly.
             *  If empty Z-Push will try to use available providers.
            
             *  Possible values:
             *  IpcSharedMemoryProvider - default. Requires z-push-ipc-sharedmemory package.
             *  IpcMemcachedProvider    - requires z-push-ipc-memcached package. It is necessary to set up
             *                            memcached server before (it won't be installed by z-push-ipc-memcached).
             *  IpcWincacheProvider     - for windows systems.
             */
                define('IPC_PROVIDER', 'IpcSharedMemoryProvider');
            
            /**********************************************************************************
             *  Logging settings
             *
             *  The LOGBACKEND specifies where the logs are sent to.
             *  Either to file ("filelog") or to a "syslog" server or a custom log class in core/log/logclass.
             *  filelog and syslog have several options that can be set below.
             *  For more information about the syslog configuration, see https://wiki.z-hub.io/x/HIAT
            
             *  Possible LOGLEVEL and LOGUSERLEVEL values are:
             *  LOGLEVEL_OFF            - no logging
             *  LOGLEVEL_FATAL          - log only critical errors
             *  LOGLEVEL_ERROR          - logs events which might require corrective actions
             *  LOGLEVEL_WARN           - might lead to an error or require corrective actions in the future
             *  LOGLEVEL_INFO           - usually completed actions
             *  LOGLEVEL_DEBUG          - debugging information, typically only meaningful to developers
             *  LOGLEVEL_WBXML          - also prints the WBXML sent to/from the device
             *  LOGLEVEL_DEVICEID       - also prints the device id for every log entry
             *  LOGLEVEL_WBXMLSTACK     - also prints the contents of WBXML stack
             *
             *  The verbosity increases from top to bottom. More verbose levels include less verbose
             *  ones, e.g. setting to LOGLEVEL_DEBUG will also output LOGLEVEL_FATAL, LOGLEVEL_ERROR,
             *  LOGLEVEL_WARN and LOGLEVEL_INFO level entries.
             *
             *  LOGAUTHFAIL is logged to the LOGBACKEND.
             */
                define('LOGBACKEND', 'filelog');
                //define('LOGLEVEL', LOGLEVEL_DEBUG);
                //    define('LOGLEVEL', LOGLEVEL_WBXMLSTACK);
                define('LOGLEVEL', LOGLEVEL_WARN);
                define('LOGAUTHFAIL', true);
            
                // To save e.g. WBXML data only for selected users, add the usernames to the array
                // The data will be saved into a dedicated file per user in the LOGFILEDIR
                // Users have to be encapusulated in quotes, several users are comma separated, like:
                //   $specialLogUsers = array('info@domain.com', 'myusername');
                define('LOGUSERLEVEL', LOGLEVEL_DEVICEID);
                $specialLogUsers = array();
            
                // Filelog settings
                define('LOGFILEDIR', '/var/log/z-push/');
                define('LOGFILE', LOGFILEDIR . 'z-push.log');
                define('LOGERRORFILE', LOGFILEDIR . 'z-push-error.log');
            
                // Syslog settings
                // false will log to local syslog, otherwise put the remote syslog IP here
                define('LOG_SYSLOG_HOST', false);
                // Syslog port
                define('LOG_SYSLOG_PORT', 514);
                // Program showed in the syslog. Useful if you have more than one instance login to the same syslog
                define('LOG_SYSLOG_PROGRAM', 'z-push');
                // Syslog facility - use LOG_USER when running on Windows
                define('LOG_SYSLOG_FACILITY', LOG_LOCAL0);
            
                // Location of the trusted CA, e.g. '/etc/ssl/certs/EmailCA.pem'
                // Uncomment and modify the following line if the validation of the certificates fails.
                // define('CAINFO', '/etc/ssl/certs/EmailCA.pem');
            
            /**********************************************************************************
             *  Mobile settings
             */
                // Device Provisioning
                define('PROVISIONING', false);
            
                // This option allows the 'loose enforcement' of the provisioning policies for older
                // devices which don't support provisioning (like WM 5 and HTC Android Mail) - dw2412 contribution
                // false (default) - Enforce provisioning for all devices
                // true - allow older devices, but enforce policies on devices which support it
                define('LOOSE_PROVISIONING', false);
            
                // The file containing the policies' settings.
                // Set a full path or relative to the z-push main directory
                define('PROVISIONING_POLICYFILE', 'policies.ini');
            
                // Default conflict preference
                // Some devices allow to set if the server or PIM (mobile)
                // should win in case of a synchronization conflict
                //   SYNC_CONFLICT_OVERWRITE_SERVER - Server is overwritten, PIM wins
                //   SYNC_CONFLICT_OVERWRITE_PIM    - PIM is overwritten, Server wins (default)
                define('SYNC_CONFLICT_DEFAULT', SYNC_CONFLICT_OVERWRITE_PIM);
            
                // Global limitation of items to be synchronized
                // The mobile can define a sync back period for calendar and email items
                // For large stores with many items the time period could be limited to a max value
                // If the mobile transmits a wider time period, the defined max value is used
                // Applicable values:
                //   SYNC_FILTERTYPE_ALL (default, no limitation)
                //   SYNC_FILTERTYPE_1DAY, SYNC_FILTERTYPE_3DAYS, SYNC_FILTERTYPE_1WEEK, SYNC_FILTERTYPE_2WEEKS,
                //   SYNC_FILTERTYPE_1MONTH, SYNC_FILTERTYPE_3MONTHS, SYNC_FILTERTYPE_6MONTHS
                define('SYNC_FILTERTIME_MAX', SYNC_FILTERTYPE_ALL);
            
                // Interval in seconds before checking if there are changes on the server when in Ping.
                // It means the highest time span before a change is pushed to a mobile. Set it to
                // a higher value if you have a high load on the server.
                define('PING_INTERVAL', 30);
            
                // Set the fileas (save as) order for contacts in the webaccess/webapp/outlook.
                // It will only affect new/modified contacts on the mobile which then are synced to the server.
                // Possible values are:
                // SYNC_FILEAS_FIRSTLAST    - fileas will be "Firstname Middlename Lastname"
                // SYNC_FILEAS_LASTFIRST    - fileas will be "Lastname, Firstname Middlename"
                // SYNC_FILEAS_COMPANYONLY  - fileas will be "Company"
                // SYNC_FILEAS_COMPANYLAST  - fileas will be "Company (Lastname, Firstname Middlename)"
                // SYNC_FILEAS_COMPANYFIRST - fileas will be "Company (Firstname Middlename Lastname)"
                // SYNC_FILEAS_LASTCOMPANY  - fileas will be "Lastname, Firstname Middlename (Company)"
                // SYNC_FILEAS_FIRSTCOMPANY - fileas will be "Firstname Middlename Lastname (Company)"
                // The company-fileas will only be set if a contact has a company set. If one of
                // company-fileas is selected and a contact doesn't have a company set, it will default
                // to SYNC_FILEAS_FIRSTLAST or SYNC_FILEAS_LASTFIRST (depending on if last or first
                // option is selected for company).
                // If SYNC_FILEAS_COMPANYONLY is selected and company of the contact is not set
                // SYNC_FILEAS_LASTFIRST will be used
                define('FILEAS_ORDER', SYNC_FILEAS_LASTFIRST);
            
                // Maximum amount of items to be synchronized per request.
                // Normally this value is requested by the mobile. Common values are 5, 25, 50 or 100.
                // Exporting too much items can cause mobile timeout on busy systems.
                // Z-Push will use the lowest provided value, either set here or by the mobile.
                // MS Outlook 2013+ request up to 512 items to accelerate the sync process.
                // If you detect high load (also on subsystems) you could try a lower setting.
                // max: 512 - value used if mobile does not limit amount of items
                define('SYNC_MAX_ITEMS', 100);
            
                // The devices usually send a list of supported properties for calendar and contact
                // items. If a device does not includes such a supported property in Sync request,
                // it means the property's value will be deleted on the server.
                // However some devices do not send a list of supported properties. It is then impossible
                // to tell if a property was deleted or it was not set at all if it does not appear in Sync.
                // This parameter defines Z-Push behaviour during Sync if a device does not issue a list with
                // supported properties.
                // See also https://jira.z-hub.io/browse/ZP-302.
                // Possible values:
                // false - do not unset properties which are not sent during Sync (default)
                // true  - unset properties which are not sent during Sync
                define('UNSET_UNDEFINED_PROPERTIES', false);
            
                // ActiveSync specifies that a contact photo may not exceed 48 KB. This value is checked
                // in the semantic sanity checks and contacts with larger photos are not synchronized.
                // This limitation is not being followed by the ActiveSync clients which set much bigger
                // contact photos. You can override the default value of the max photo size.
                // default: 5242880 - 5 MB default max photo size in bytes
                define('SYNC_CONTACTS_MAXPICTURESIZE', 5242880);
            
                // Over the WebserviceUsers command it is possible to retrieve a list of all
                // known devices and users on this Z-Push system. The authenticated user needs to have
                // admin rights and a public folder must exist.
                // In multicompany environments this enable an admin user of any company to retrieve
                // this full list, so this feature is disabled by default. Enable with care.
                define('ALLOW_WEBSERVICE_USERS_ACCESS', false);
            
                // Users with many folders can use the 'partial foldersync' feature, where the server
                // actively stops processing the folder list if it takes too long. Other requests are
                // then redirected to the FolderSync to synchronize the remaining items.
                // Device compatibility for this procedure is not fully understood.
                // NOTE: THIS IS AN EXPERIMENTAL FEATURE WHICH COULD PREVENT YOUR MOBILES FROM SYNCHRONIZING.
                define('USE_PARTIAL_FOLDERSYNC', false);
            
                // The minimum accepted time in second that a ping command should last.
                // It is strongly advised to keep this config to false. Some device
                // might not be able to send a higher value than the one specificied here and thus
                // unable to start a push connection.
                // If set to false, there will be no lower bound to the ping lifetime.
                // The minimum accepted value is 1 second. The maximum accepted value is 3540 seconds (59 minutes).
                define('PING_LOWER_BOUND_LIFETIME', false);
            
                // The maximum accepted time in second that a ping command should last.
                // If set to false, there will be no higher bound to the ping lifetime.
                // The minimum accepted value is 1 second. The maximum accepted value is 3540 seconds (59 minutes).
                define('PING_HIGHER_BOUND_LIFETIME', false);
            
                // Maximum response time
                // Mobiles implement different timeouts to their TCP/IP connections. Android devices for example
                // have a hard timeout of 30 seconds. If the server is not able to answer a request within this timeframe,
                // the answer will not be recieved and the device will send a new one overloading the server.
                // There are three categories
                //   - Short timeout  - server has up within 30 seconds - is automatically applied for not categorized types
                //   - Medium timeout - server has up to 90 seconds to respond
                //   - Long timeout   - server has up to 4 minutes to respond
                // If a timeout is almost reached the server will break and sent the results it has until this
                // point. You can add DeviceType strings to the categories.
                // In general longer timeouts are better, because more data can be streamed at once.
                define('SYNC_TIMEOUT_MEDIUM_DEVICETYPES', "SAMSUNGGTI");
                define('SYNC_TIMEOUT_LONG_DEVICETYPES',   "iPod, iPad, iPhone, WP, WindowsOutlook, WindowsMail");
            
                // Time in seconds the device should wait whenever the service is unavailable,
                // e.g. when a backend service is unavailable.
                // Z-Push sends a "Retry-After" header in the response with the here defined value.
                // It is up to the device to respect or not this directive so even if this option is set,
                // the device might not wait requested time frame.
                // Number of seconds before retry, to disable set to: false
                define('RETRY_AFTER_DELAY', 300);
            
            /**********************************************************************************
             *  Backend settings
             */
                // The backend data provider.
                // Leave this value empty and Z-Push will autoload a backend. The sequence of autoload is:
                // BackendKopano, BackendCombined, BackendIMAP, BackendVCardDir, BackendMaildir.
                // If BackendKopano is not installed, Z-Push will load BackendCombined. If BackendCombined
                // also is not installed, Z-Push will load BackendIMAP and so on.
                // If you prefer explicitly configure a backend provider, currently possible values are:
                // BackendKopano     -  to use with the Kopano groupware. Syncs emails, calendar items,
                //                      contacts, tasks and notes or any combination of the listed items.
                // BackendCombined   -  combine multiple backends for different items, e.g.
                //                      BackendIMAP for emails, BackendCalDAV for calendar items,
                //                      BackendCardDAV for contacts etc. You can configure what backend
                //                      syncs which items in /etc/combined.conf.php.
                // BackendIMAP       -  to sync emails with an IMAP server.
                // BackendCalDAV     -  to sync calendar items and / or tasks with a CalDAV server.
                // BackendCardDAV    -  to sync contacts with a CardDAV server.
                // BackendMaildir    -  to sync emails from a Maildir.
                // BackendStickyNote -  to sync notes with a Postgres server.
                // BackendVCardDir   -  to sync contacts with vcard folder.
                define('BACKEND_PROVIDER', 'BackendCombined');
            //    define('BACKEND_PROVIDER', 'BackendIMAP');
            /**********************************************************************************
             *  Search provider settings
             *
             *  Alternative backend to perform SEARCH requests (GAL search)
             *  By default the main Backend defines the preferred search functionality.
             *  If set, the Search Provider will always be preferred.
             *  Use 'BackendSearchLDAP' to search in a LDAP directory (see backend/searchldap/config.php)
             */
                define('SEARCH_PROVIDER', '');
                // Time in seconds for the server search. Setting it too high might result in timeout.
                // Setting it too low might not return all results. Default is 10.
                define('SEARCH_WAIT', 10);
                // The maximum number of results to send to the client. Setting it too high
                // might result in timeout. Default is 10.
                define('SEARCH_MAXRESULTS', 10);
            
            /**********************************************************************************
             *  Kopano Outlook Extension - Settings
             *
             *  The Kopano Outlook Extension (KOE) provides MS Outlook 2013 and newer with
             *  functionality not provided by ActiveSync or not implemented by Outlook.
             *  For more information, see: https://wiki.z-hub.io/x/z4Aa
             */
                // Global Address Book functionality
                define('KOE_CAPABILITY_GAB', false);
                // Synchronize mail flags from the server to Outlook/KOE
                define('KOE_CAPABILITY_RECEIVEFLAGS', false);
                // Encode flags when sending from Outlook/KOE
                define('KOE_CAPABILITY_SENDFLAGS', false);
                // Out-of-office support
                define('KOE_CAPABILITY_OOF', false);
                // Out-of-office support with start & end times (superseeds KOE_CAPABILITY_OOF)
                define('KOE_CAPABILITY_OOFTIMES', false);
                // Notes support
                define('KOE_CAPABILITY_NOTES', false);
                // Shared folder support
                define('KOE_CAPABILITY_SHAREDFOLDER', false);
                // Send-As support for Outlook/KOE and mobiles
                define('KOE_CAPABILITY_SENDAS', false);
                // Secondary Contact folders (own and shared)
                define('KOE_CAPABILITY_SECONDARYCONTACTS', false);
                // Copy WebApp signature into KOE
                define('KOE_CAPABILITY_SIGNATURES', false);
                // Delivery receipt requests
                define('KOE_CAPABILITY_RECEIPTS', false);
                // Impersonate other users
                define('KOE_CAPABILITY_IMPERSONATE', false);
            
                // To synchronize the GAB KOE, the GAB store and folderid need to be specified.
                // Use the gab-sync script to generate this data. The name needs to
                // match the config of the gab-sync script.
                // More information here: https://wiki.z-hub.io/x/z4Aa (GAB Sync Script)
                define('KOE_GAB_STORE', 'SYSTEM');
                define('KOE_GAB_FOLDERID', '');
                define('KOE_GAB_NAME', 'Z-Push-KOE-GAB');
            
            /**********************************************************************************
             *  Synchronize additional folders to all mobiles
             *
             *  With this feature, special folders can be synchronized to all mobiles.
             *  This is useful for e.g. global company contacts.
             *
             *  This feature is supported only by certain devices, like iPhones.
             *  Check the compatibility list for supported devices:
             *      http://z-push.org/compatibility
             *
             *  To synchronize a folder, add a section setting all parameters as below:
             *      store:      the ressource where the folder is located.
             *                  Kopano users use 'SYSTEM' for the 'Public Folder'
             *      folderid:   folder id of the folder to be synchronized
             *      name:       name to be displayed on the mobile device
             *      type:       supported types are:
             *                      SYNC_FOLDER_TYPE_USER_CONTACT
             *                      SYNC_FOLDER_TYPE_USER_APPOINTMENT
             *                      SYNC_FOLDER_TYPE_USER_TASK
             *                      SYNC_FOLDER_TYPE_USER_MAIL
             *                      SYNC_FOLDER_TYPE_USER_NOTE
             *      flags:      sets additional options on the shared folder. Supported are:
             *                      DeviceManager::FLD_FLAGS_NONE
             *                          No flags configured, default flag to be set
             *                      DeviceManager::FLD_FLAGS_SENDASOWNER
             *                          When replying in this folder, automatically do Send-As
             *                      DeviceManager::FLD_FLAGS_CALENDARREMINDERS
             *                          If set, Outlook shows reminders for these shares with KOE
             *                      DeviceManager::FLD_FLAGS_NOREADONLYNOTIFY
             *                          If set, Z-Push won't send notification emails for changes
             *                          if the folder is read-only
             *
             *  Additional notes:
             *  - on Kopano systems use backend/kopano/listfolders.php script to get a list
             *    of available folders
             *
             *  - all Z-Push users must have at least reading permissions so the configured
             *    folders can be synchronized to the mobile. Else they are ignored.
             *
             *  - this feature is only partly suitable for multi-tenancy environments,
             *    as ALL users from ALL tenents need access to the configured store & folder.
             *    When configuring a public folder, this will cause problems, as each user has
             *    a different public folder in his tenant, so the folder are not available.
            
             *  - changing this configuration could cause HIGH LOAD on the system, as all
             *    connected devices will be updated and load the data contained in the
             *    added/modified folders.
             */
            
                $additionalFolders = array(
                    // demo entry for the synchronization of contacts from the public folder.
                    // uncomment (remove '/*' '*/') and fill in the folderid
            /*
                    array(
                        'store'     => "SYSTEM",
                        'folderid'  => "",
                        'name'      => "Public Contacts",
                        'type'      => SYNC_FOLDER_TYPE_USER_CONTACT,
                        'flags'     => DeviceManager::FLD_FLAGS_NONE,
                    ),
            */
                );
            
            1 Reply Last reply Reply Quote 0
            • maedball
              maedball @alu64 last edited by

              @alu64 said in Caldav and carddav with nextcloud:

              // Use BackendCalDAV for Meetings. You cannot hope to get that functionality working without a caldav backend.
              define(‘IMAP_MEETING_USE_CALDAV’, false);

              by the way you should change this to true as you most likely will use nextcloud for meeting invites ;-)

              alu64 1 Reply Last reply Reply Quote 0
              • alu64
                alu64 @maedball last edited by

                @maedball
                Sadly, I am still having sync issues, so I am testing one backend at a time.
                This is the reason ‘IMAP_MEETING_USE_CALDAV’ is disabled.
                Could you please let me know which z-push revision are you running and your PHP version?
                I tested develop, 2.6.4 and ZP 1571 with 7.3 and 7.4 from this repo https://github.com/Z-Hub/Z-Push
                Thank you very much for your time.

                maedball 1 Reply Last reply Reply Quote 0
                • maedball
                  maedball @alu64 last edited by maedball

                  @alu64

                  Well it is
                  Z-push: 2.6.4
                  Nextcloud 22.2.3
                  Php: 7.4
                  Ubuntu 20.04.3 lts

                  Did you already try with an empty account? Maybe you have some broken calendar /contact entries. I have the same with emails.

                  Also i used the repo from the webpage -> if you use the tarball, than maybe you are missing some dependencies.

                  alu64 1 Reply Last reply Reply Quote 0
                  • alu64
                    alu64 @maedball last edited by

                    @maedball
                    My nextcloud is version 23.
                    I will spin a test container with version 22 and see.
                    Thank you very much for your kind support.

                    maedball 1 Reply Last reply Reply Quote 0
                    • maedball
                      maedball @alu64 last edited by

                      @alu64 you are welcome. Good luck ;-)

                      1 Reply Last reply Reply Quote 0
                      • Luke1982
                        Luke1982 last edited by

                        @maedball Any luck? I’ve been running this setup succesfully for a while now.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post