Avainsana-arkisto: Zimbra

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

Zimbra LDAP

Käytössäni on siis Zimbra -postipalvelin.
Jokin aika sitten asensin sen kylkeen OpenERP:n, OwnCloud:in ja SchoolTool:in. Kaikki nuo ovat mielenkiintoisia projekteja jo ihan itsenänsäkin, mutta minäpä kytkin nuo kaikki käyttämään Zimbran LDAP -kantaa autentikointiin.

Nyt on siis jokaisella Zimbran käyttäjällä verkkolevy (OwnCloud) käytettävissä samalla tunnuksella. Tunnus käy myös noihin tutkimiini työkaluihin (OpenERP ja SchoolTool), mutta niillä ei liene suurempaa käyttöä… itsellänikään.

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ää.