Z-push 2.4.4 - Autodiscover not working.

Hello,
I got a z-push 2.4.4 with zimbra backend, and everithing works when manually setup.
When I use autodiscover nothing works at all.

I tried a check with microsoft remote connectivity analyzer.

  • Microsoft Exchange ActiveSync Connectivity :
    The conectivity test is successful but when I tries to setup the account on an android outlook apps, it’s not recognised as an activeSync account an return an Imap configuration.
    With another apps like gmail selecting “exchange account” the xml isn’t send and I got to manualy set the server.

  • Microsoft Office Outlook Connectivity Tests :
    I got the following :

03/08/2018 15:50:41 [11270] [FATAL] [#unknown] Exception: (FatalException) - Request for a responseschema that is not supported (only mobilesync is supported): http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a
03/08/2018 15:50:41 [11270] [ERROR] [#unknown] Unable to complete autodiscover because of ZPushException. Error: Request for a responseschema that is not supported (only mobilesync is supported): http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a

I would assume that your Outlook client is looking for an Outlook Web Access type connection rather than an ActiveSync connection. That type of connection is not supported by Z-Push

what worked for me is create another nginx block or another virtual host on apache. then create a letsencrypt subdomain autodiscover.mydomain.com
then on the autodiscover config
What i cannot get it working is for the autodiscover to only use username instead of the whole email. I tried use full email as false but no luck but besides that everything is great

    // Replace zpush.example.com with your z-push's host name and uncomment the line below.
     define('ZPUSH_HOST', 'mail.mydomain.com');

    // Defines the default time zone, change e.g. to "Europe/London" if necessary
    define('TIMEZONE', 'America/Bogota');

    // Defines the base path on the server
    define('BASE_PATH', dirname($_SERVER['SCRIPT_FILENAME']). '/');

    /*
     * Whether to use the complete email address as a login name
     * (e.g. user@company.com) or the username only (user).
     * Possible values:
     * false - use the username only (default).
     * true - use the complete email address.
     */
    define('USE_FULLEMAIL_FOR_LOGIN', false);
/*
     * AutoDiscover requires the username to match either the email address
     * or the local part of the email address.
     * This is not always possible as the username might have a different
     * schema than email address. Configure this parameter to match your
     * username settings.
     * @see https://wiki.z-hub.io/display/ZP/Configuring+Z-Push+Autodiscover#ConfiguringZ-PushAutodiscover-Configuration
     * @see https://jira.z-hub.io/browse/ZP-1209
     *
     * Possible values:
     * AUTODISCOVER_LOGIN_EMAIL             - uses the email address as provided when setting up the account
     * AUTODISCOVER_LOGIN_NO_DOT            - removes the '.' from email address:
     *                                          email: first.last@domain.com -> resulting username: firstlast
     * AUTODISCOVER_LOGIN_F_NO_DOT_LAST     - cuts the first part before '.' after the first letter and
     *                                          removes the '.' from email address:
     *                                          email: first.last@domain.com -> resulting username: flast
     * AUTODISCOVER_LOGIN_F_DOT_LAST        - cuts the part before '.' after the first letter and
     *                                          leaves the part after '.' as is:
     *                                          email: first.last@domain.com -> resulting username: f.last
     */
    define('AUTODISCOVER_LOGIN_TYPE', AUTODISCOVER_LOGIN_EMAIL);

/**********************************************************************************
 *  Logging settings
 *  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.
 */

    define('LOGBACKEND', 'filelog');

    define('LOGFILEDIR', '/var/log/z-push/');
    define('LOGFILE', LOGFILEDIR . 'autodiscover.log');
    define('LOGERRORFILE', LOGFILEDIR . 'autodiscover-error.log');
    define('LOGLEVEL', LOGLEVEL_INFO);
    define('LOGUSERLEVEL', LOGLEVEL);
    $specialLogUsers = array();

    // 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-autodiscover');
    // Syslog facility - use LOG_USER when running on Windows
    define('LOG_SYSLOG_FACILITY', LOG_LOCAL0);
/**********************************************************************************
 *  Backend settings
 */
    // the backend data provider
    define('BACKEND_PROVIDER', 'BackendCombined');