Avainsana-arkisto: z-push

Zimbra + MFE (osa 2)

Päivitin Z-Pushin versioon 2.2.1-1939

Oma asennukseni on /opt/z-push -hakemistossa Zimbra -palvelimella, mutta asennuksen voi tehdä periaatteessa mille vaan palvelimelle, jolta on pääsy Zimbraan.

config.php -tiedostoon muuttamani kohdat:
define(’TIMEZONE’, ’Europe/Helsinki’);
define(’USE_FULLEMAIL_FOR_LOGIN’, true);
define(’BACKEND_PROVIDER’, ’BackendZimbra’);

Tämän jälkeen haetaan tuo zimbra backend vaikka täältä.

Jälkimmäinen paketti puretaan z-pushin backend -hakemistoon ja siirretään syntyneestä hakemistosta z-push-2 -hakemisto nimelle zimbra (minun tapauksessa siis /opt/z-push/backend/zimbra/).

Muokkaamani kohta config.php -tiedostossa:
define(’ZIMBRA_URL’, ’http[s]://<zimbra url>’);

Muuten mennään oletuksilla.

Tämän jälkeen z-push onkin kunnossa. 🙂

Seuraava osa riippuukin sitten siitä mihin z-push on asennettu.

Jos Z-Push on asennettu Zimbran kanssa samalle palvelimelle ja sitä on tarkoitus käyttää Zimbran Jetty:n kanssa, niin seuraavilla ohjeilla se onnistunee 🙂

* Luo linkki jettyn hakemistoon:
ln -s /opt/z-push /opt/zimbra/jetty/webapps/z-push

* Luo shell -ohjelma php-cgi-fix.sh hakemistoon /usr/bin:
#/usr/bin/sh
export SCRIPT_FILENAME=$1
/usr/bin/php-cgi

* Luo WEB-INF hakemisto /opt/z-push -hakemistoon

* Luo /opt/z-push/WEB-INF -hakemistoon tiedosto web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app
      xmlns="http://java.sun.com/xml/ns/j2ee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
      version="2.4"
    >

     <display-name>php</display-name>

     <servlet>
       <servlet-name>PHP</servlet-name>
       <servlet-class>org.eclipse.jetty.servlets.CGI</servlet-class>
       <load-on-startup>1</load-on-startup>

       <init-param>
            <param-name>commandPrefix</param-name>
            <param-value>/usr/bin/php-cgi-fix.sh</param-value>
       </init-param>

          <init-param>
              <param-name>Path</param-name>
              <param-value>/bin:/usr/bin:/usr/local/bin</param-value>
          </init-param>
        
     </servlet>

     <servlet-mapping>
       <servlet-name>PHP</servlet-name>
       <url-pattern>*.php</url-pattern>
     </servlet-mapping>

     <!--
     <welcome-file-list>
       <welcome-file>index.php</welcome-file>
     </welcome-file-list>
     -->

<Call name="addAliasCheck">
    <Arg>
      <New class="org.eclipse.jetty.server.handler.ContextHandler$ApprovePathPrefixAliases"/>
    </Arg>
  </Call>

<security-constraint>
        <web-resource-collection>
            <web-resource-name>deny</web-resource-name>
            <url-pattern>/backend/*</url-pattern>
	    <url-pattern>/include/*</url-pattern>
            <url-pattern>/lib/*</url-pattern>
	    <url-pattern>/WEB-INF/*</url-pattern>
            <url-pattern>/config.php</url-pattern>
            <url-pattern>/z-push-top.php</url-pattern>
            <url-pattern>/z-push-admin.php</url-pattern>
            <url-pattern>/INSTALL</url-pattern>
            <url-pattern>/LICENSE</url-pattern>
        </web-resource-collection>
	<auth-constraint>
       <role-name>deny</role-name>
    	</auth-constraint>
       </security-constraint>
</web-app>

* Muokkaa /opt/zimbra/jetty/etc/jetty.xml.in muuttaen rivi:

<Set name="replacement">/service/extension/zimbrasync</Set>

muotoon:

<Set name="replacement">/z-push/index.php</Set>

Lisää samaan tiedostoon:

<Call name="addRule">
	    <Arg>        
		<New class="org.eclipse.jetty.rewrite.handler.RewritePatternRule">
		    <Set name="pattern">/z-push/*</Set>
		    <Set name="replacement">/z-push</Set>
		    <Set name="terminating">true</Set>
		</New>
	    </Arg>
        </Call>

Lisää myös:

<New id="z-push" class="org.eclipse.jetty.webapp.WebAppContext">
      <Arg><Ref id="Contexts"/></Arg>
      <Arg><SystemProperty name="jetty.home" default="."/>/webapps/z-push</Arg>
      <Arg>/z-push</Arg>
      <Set name="configurationClasses"><Ref id="plusConfig"/></Set>
      <Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
      <Set name="tempDirectory"><SystemProperty name="jetty.home" default="."/>/work/z-push</Set>
      <Set name="compactPath">true</Set>
      <Get name="errorHandler">
        <Call name="setShowStacks">
          <Arg type="boolean">false</Arg>
        </Call>
      </Get>
      <Call name="setAttribute">
        <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
		<Arg>.*/.*jsp-api-[^/]*\.jar$|.*/.*jsp-[^/]*\.jar$|.*/.*taglibs[^/]*\.jar$</Arg>
      </Call> 
    </New>

* Muuta php.ini:ä (minulla /etc/php5/cli/php.ini, koska käytän Ubuntu -jakelua, jossa web php:lle ja cli php:lle on omat php.ini:t):

magic_quotes_gpc off
register_globals off
magic_quotes_runtime off
short_open_tag on
cgi.force_redirect = 0
max_execution_time = 120
memory_limit = 128M

* Uudelleenkäynnistä jetty:
su – zimbra
zmmailboxdctl restart

Outlook 2013 & Zimbra

Netissä löytyy ohjeita, miten Outlook 2013 kytketään Zimbraan.
z-push/lib/core/zpush.php:
static private $supportedASVersions = array(
/*
self::ASV_1,
self::ASV_2,
self::ASV_21,
*/
self::ASV_25,
self::ASV_12,
self::ASV_121,
self::ASV_14
);

Outlookin tili konfiguroidaan manuaaliset asetukset -valinnan kautta ja sietä ActiveSync -vaihtoehdolla.

Ohjeet toimivat omalla palvelimellanikin muuten, mutta…

Outlookin asetusten jälkeen alkoi z-push:in virhelokiin
(/var/log/z-push/z-push-error.log) tulemaan virheitä:
NotImplementedException: Folderid ’f14642′ is saved to be of type ’18’ but this type is not implemented – code: 0

Löysin lopulta syyllisen kääntämällä Googlen translatorin avulla yhden saksalaisen sivuston (https://blog.bartlweb.net/2015/02/outlook-synchronisation-mit-zimbra-uber-activesync-via-z-push-streikt-aufgrund-von-nicht-implementierten-ordnertypen/).

Korjaamiseen tarvitaan:
1) Zimbran Webclient
2) IMAP -client (itse käytin Thunderbirdiä)
3) Outlook 2013 🙂

Tarvittavat toimenpiteet:
1) Zimbran Webclientistä otetaan ”Näytä lähdekoodi” (Ctrl-U)
2) Lähdekoodista haetaan tuota folderin ID:tä (itselläni siis 14642)
– Tuo löytyi koodista ja osoitti kansioon Comments
3) Thunderbirdillä tilataan IMAP -konsio Comments listaan ja poistetaan se
4) Tyhjennetään Thunderbirdin Roskakori
5) Käynnistetään Outlook ja odotetaan postilaatikon päivittyminen