Navigation

    Kopano
    • Register
    • Login
    • Search
    • Categories
    • Get Official Kopano Support
    • Recent
    Statement regarding the closure of the Kopano community forum and the end of the community edition

    Z-Push connection fails on IMAP and combined backend

    Z-Push when using other backends
    2
    6
    3116
    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.
    • kitserve
      kitserve last edited by

      Hi there! We use Z-Push on Debian with the combined backend. It was manually installed from a tarball on Debian Jessie and worked fine. After upgrading our server to Debian Stretch it stopped working, so we tried switching to the packaged version from the official repositories. It still doesn’t work, and it doesn’t seem to produce any debugging information.

      We set up the repositories as per https://wiki.z-hub.io/display/ZP/Installation. The packages currently installed are:
      root@host:~# dpkg -l | grep z-push
      ii z-push-backend-caldav 2.3.7+0 all Z-Push caldav backend
      ii z-push-backend-carddav 2.3.7+0 all Z-Push carddav backend
      ii z-push-backend-combined 2.3.7+0 all Z-Push combined backend
      ii z-push-backend-imap 2.3.7+0 all Z-Push imap backend
      ii z-push-common 2.3.7+0 all open source implementation of the ActiveSync protocol
      ii z-push-ipc-sharedmemory 2.3.7+0 all Z-Push ipc shared memory provider

      To rule out complications with the combined backend I have tested it with the IMAP, Caldav and Carddav backends each separately. In each case the result is the same: testing the ActiveSync URL in a browser works fine, but setting up an iOS device to access an account always results in this error:

      Exchange Account
      Unable to verify account information

      The error log z-push-error.log is empty. Here are the entries in the main z-push.log from a test access from a browser:

      05/09/2017 22:19:46 [25671] [DEBUG] [user] -------- Start
      05/09/2017 22:19:46 [25671] [DEBUG] [user] cmd='' devType='' devId='' getUser='user' from='1.2.3.4' version='2.3.7+0' method='GET'
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Used timezone 'Europe/London'
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/imap/imap.php'
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/caldav/caldav.php'
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/carddav/carddav.php'
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Combined 3 backends loaded.
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Request::ProcessHeaders() ASVersion: 14.0
      05/09/2017 22:19:46 [25671] [DEBUG] [user] ZPush::CommandNeedsAuthentication(0): true
      05/09/2017 22:19:46 [25671] [DEBUG] [user] Combined->Logon('user', '',***))
      05/09/2017 22:19:46 [25671] [DEBUG] [user] BackendIMAP->Logon(): User 'user' is authenticated on '{example.com:993/imap/ssl/norsh}'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] BackendCalDAV->Logon(): User 'user' is authenticated on CalDAV 'https://example.com:443/owncloud/remote.php/caldav/calendars/user/'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] BackendCardDAV->Logon(): User 'user' is authenticated on 'https://example.com:443/owncloud/remote.php/carddav/addressbooks/user/'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] BackendCardDAV::discoverAddressbooks() Found addressbook 'https://example.com:443/owncloud/remote.php/carddav/addressbooks/user/contacts/'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] Combined->Logon() success
      05/09/2017 22:19:47 [25671] [DEBUG] [user] NoPostRequestException: This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices - code: 2 - file: /usr/share/z-push/index.php:90
      05/09/2017 22:19:47 [25671] [ INFO] [user] User-agent: 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] ZPush::PrintZPushLegal()
      05/09/2017 22:19:47 [25671] [ INFO] [user] cmd='' memory='1.70 MiB/2.00 MiB' time='0.50s' devType='' devId='' getUser='user' from='1.2.3.4' idle='0s' version='2.3.7+0' method='GET' httpcode='200'
      05/09/2017 22:19:47 [25671] [DEBUG] [user] -------- End
      

      And here are the entries from an attempt to activate an account on an iOS device:

      05/09/2017 22:23:20 [27718] [DEBUG] [user] -------- Start
      05/09/2017 22:23:20 [27718] [DEBUG] [user] cmd='' devType='' devId='' getUser='user' from='1.2.3.4' version='2.3.7+0' method='OPTIONS'
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Used timezone 'Europe/London'
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/imap/imap.php'
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/caldav/caldav.php'
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Including backend file: '/usr/share/z-push/backend/carddav/carddav.php'
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Combined 3 backends loaded.
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Request::ProcessHeaders() ASVersion: 14.0
      05/09/2017 22:23:20 [27718] [DEBUG] [user] Combined->Logon('user', '',***))
      05/09/2017 22:23:21 [27718] [DEBUG] [user] BackendIMAP->Logon(): User 'user' is authenticated on '{example.com:993/imap/ssl/norsh}'
      05/09/2017 22:23:21 [27718] [DEBUG] [user] BackendCalDAV->Logon(): User 'user' is authenticated on CalDAV 'https://example.com:443/owncloud/remote.php/caldav/calendars/user/'
      05/09/2017 22:23:21 [27718] [DEBUG] [user] BackendCardDAV->Logon(): User 'user' is authenticated on 'https://example.com:443/owncloud/remote.php/carddav/addressbooks/user/'
      05/09/2017 22:23:21 [27718] [DEBUG] [user] BackendCardDAV::discoverAddressbooks() Found addressbook 'https://example.com:443/owncloud/remote.php/carddav/addressbooks/user/contacts/'
      05/09/2017 22:23:21 [27718] [DEBUG] [user] Combined->Logon() success
      05/09/2017 22:23:21 [27718] [DEBUG] [user] NoPostRequestException: Options request - code: 1 - file: /usr/share/z-push/index.php:66
      05/09/2017 22:23:21 [27718] [DEBUG] [user] ZPush::GetSupportedProtocolVersions(): 12.0,12.1,14.0
      05/09/2017 22:23:21 [27718] [DEBUG] [user] ZPush::GetSupportedCommands(): Sync,SendMail,SmartForward,SmartReply,GetAttachment,GetHierarchy,CreateCollection,DeleteCollection,MoveCollection,FolderSync,FolderCreate,FolderDelete,FolderUpdate,MoveItems,GetItemEstimate,MeetingResponse,ResolveRecipients,ValidateCert,Provision,Search,Ping,Notify,ItemOperations,Settings
      05/09/2017 22:23:21 [27718] [ INFO] [user] Options request
      05/09/2017 22:23:21 [27718] [ INFO] [user] cmd='' memory='1.70 MiB/2.00 MiB' time='0.54s' devType='' devId='' getUser='user' from='1.2.3.4' idle='0s' version='2.3.7+0' method='OPTIONS' httpcode='200'
      05/09/2017 22:23:21 [27718] [DEBUG] [user] -------- End
      

      At this point I am completely stumped. The iOS device and all the server-side software packages are up to date. There are no errors in the Apache logs or IMAP server (dovecot). I can’t find anyone else with the same problem. There don’t seem to be any tutorials online even on the basic setup of the IMAP backend. Before the upgrade to Stretch everything was working fine. Can anyone shed any light on this?

      Thanks in advance!

      1 Reply Last reply Reply Quote 0
      • Sebastian
        Sebastian Kopano last edited by

        How does your apache vhost config look like? It could be that there is some incompatible configuration.
        Are you using mod_php?
        Have a look at the z-push-config-apache that installs a vhost config.

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

          Hi Sebastian, thanks for your response. Below is the snippet from our Apache config. As you can see, it’s virtually identical to the one that comes with the z-push-config-apache package (that’s where we copied it from). We’re using mod_php7 from Debian Stretch.

          # Z-Push / ActiveSync
          Alias /Microsoft-Server-ActiveSync /usr/share/z-push/index.php
          <Directory /usr/share/z-push>
          	Require all granted
          </Directory>
          
          <Directory /usr/share/z-push>
          	# Don't list a directory index, follow symlinks (maybe state dir is somewhere linked)
          	DirectoryIndex index.php
          	Options -Indexes +FollowSymLinks
          
          	# Z-push requirements
          	<IfModule mod_php7.c>
          		php_value magic_quotes_gpc off
          		php_value magic_quotes_runtime off
          		php_value register_globals off
          		php_value short_open_tag on
          
          		# Optional
          		# php_value display_errors off
          
          		# Setting memory limit higher (larger attachments)
          		php_value memory_limit 128M
          	</IfModule>
          
          	# Security
          	# Don't allow .htaccess Overrides, disallow access to files
          	AllowOverride none
          	<IfModule !mod_authz_core.c>
          		Order allow,deny
          		allow from all
          	</IfModule>
          	<IfModule mod_authz_core.c>
          		Require all granted
          	</IfModule> 
          
          	<Files "config.php">
          		<IfModule !mod_authz_core.c>
          			Deny from All
          		</IfModule>
          		<IfModule mod_authz_core.c>
          			Require all denied
          		</IfModule>
          	</Files>
          </Directory>
          
          1 Reply Last reply Reply Quote 0
          • kitserve
            kitserve last edited by

            I’ve made a small discovery on this: we used

            define('IMAP_DEFAULTFROM', 'sql');
            

            If I switch this back to the default of

            define('IMAP_DEFAULTFROM', '');
            

            then I’m able to set the account up. Here’s the SQL config:

            define('IMAP_FROM_SQL_DSN', 'mysql:host=localhost;dbname=db;charset=utf8');
            define('IMAP_FROM_SQL_USER', 'user');
            define('IMAP_FROM_SQL_PASSWORD', 'pass');
            define('IMAP_FROM_SQL_OPTIONS', serialize(array(PDO::ATTR_PERSISTENT => true)));
            define('IMAP_FROM_SQL_QUERY', "SELECT identities.name, identities.email FROM identities, users WHERE users.username = '#username' AND identities.del = 0 AND identities.standard = 1 AND identities.user_id = users.user_id ORDER BY identities.identity_id LIMIT 1");
            define('IMAP_FROM_SQL_FIELDS', serialize(array('name', 'email')));
            define('IMAP_FROM_SQL_FROM', '#name <#email>');
            define('IMAP_FROM_SQL_FULLNAME', '#name');
            

            This configuration looks up information from a Roundcube identities table. I don’t know why it stopped working, as it worked before the upgrade to Stretch, and I’ve verified both the SQL login and query using phpMyAdmin. Unfortunately this makes BackendIMAP pretty much unusable on anything other than the most basic server that only handles email for one domain, as we need a way of automatically setting the from address for users sending mail.

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

              Okay, a bit more news. For reasons unknown, PHP no longer automatically sets the default port in the DSN. If I change the line to the one below then it works again:

              define('IMAP_FROM_SQL_DSN', 'mysql:host=localhost;port=3306;dbname=db;charset=utf8');
              

              Annoying, but it’s not Z-Push’s fault I suppose.

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

                Looks like I spoke too soon about this one. On one Debian Stretch server running PHP-FPM, I was able to get Z-Push working with the IMAP/combined backend. On the original server, running mod_php, it still doesn’t work. I’ve tried switching to just the IMAP backend and leaving IMAP_DEFAULTFROM blank, and it still fails with ‘Unable to verify account information’. A GET request to the ActiveSync URL in browser works. Nothing appears in /var/log/z-push.log, /var/log/z-push-error.log, /var/log/auth.log, /var/log/syslog or /var/log/mail.*.

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