Avainsana-arkisto: ActiveSync

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

Zimbra + mfe

mfe -tuki (Mail For Exchange tai ActiveSync) olikin melkomoisen taistelun tulos, mutta toimii nyt omassa postipalvelimessa. Nyt toimii siis mobiililaitteilla postien, kalenterin ja yhteystietojen synkronointi.

Aikalailla on voittajafiilis. 🙂

Näitä ohjeita seurasin, sillä erotuksella, että asensin näitä ohjeita mukaillen tuon z-push:in.

Käytössäni on siis hieman vanhempi versio z-push:sta, mutta tuo uudempi synkronoi postista vain kansiorakenteen, ei lainkaan sähköposteja. Minulta puuttunee joku paketti, mutta kun mistään en löydä, että mikä. Synkronointi toimii nätisti tuolla vanhemmallakin versiolla, joten en jaksa enää (toistaiseksi) tuunata enempää.