miércoles, 16 de abril de 2014

Zimbra - Install Z-push

En esta ocasion vamos a instalar Z-push en el mismo servidor zimbra, esto nos permitira sincronizar los correos tanto en el Outlook, webmail y Mobiles.

Datos:

Dominio: aruntnet.local
Servidor: zt.aruntnet.local
IP: 172.16.0.106

Comenzamos cambiando de puertos del Zimbra

http -> 8888
https -> 8889

[root@zt ~]#
[root@zt ~]# su - zimbra
[zimbra@zt ~]$ zmprov
prov> ms zt.aruntnet.local zimbraMailPort 8888 zimbraMailSSLPort 8889

Reiniciamos el servidor y verificamos que podemos acceder

https://172.16.0.106:8889


Ahora vamos a instalar los siguientes paquetes

[root@zt ~]# yum -y install mod_ssl openssl httpd php  php-cli php-soap php-process


Iniciamos el servicio httpd ...


[root@zt ~]# service httpd start
Starting httpd:                                            [  OK  ]
[root@zt ~]# chkconfig httpd on



Creamos los certificados digitales, las llaves y seguimos los siguientes pasos:

[root@zt ~]# openssl genrsa -out ca.key 1024

Generating RSA private key, 1024 bit long modulus
.++++++
.......................++++++
e is 65537 (0x10001)
[root@zt ~]# openssl req -new -key ca.key -out ca.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:PE
State or Province Name (full name) []:Lima
Locality Name (eg, city) [Default City]:Lima
Organization Name (eg, company) [Default Company Ltd]:TEST
Organizational Unit Name (eg, section) []:TIC
Common Name (eg, your name or your server's hostname) []:zt
Email Address []:fruiz@aruntnet.local

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

[root@zt ~]# openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt 
Signature ok
subject=/C=PE/ST=Lima/L=Lima/O=TEST/OU=TIC/CN=zt/emailAddress=fruiz@aruntnet.local
Getting Private key
[root@zt ~]# cp ca.key /etc/pki/tls/private/
[root@zt ~]# cp ca.csr /etc/pki/tls/private/
[root@zt ~]# cp ca.crt /etc/pki/tls/certs/


Ahora vamos por Z-push

[root@zt ~]# mkdir /var/www/html/zpush
[root@zt ~]# mkdir /var/log/z-push


Editamos el archivo httpd.conf, agregamos al final lo siguiente:

[root@zt ~]# vim /etc/httpd/conf/httpd.conf
[...]
NameVirtualHost *:443
Alias /Microsoft-Server-ActiveSync /var/www/html/zpush/index.php
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key
<Directory /var/www/html/zpush>
AllowOverride All
php_flag magic_quotes_gpc off
php_flag register_globals off
php_flag magic_quotes_runtime off
php_flag short_open_tag on
</Directory>
DocumentRoot /var/www/html/zpush
ServerName zt.aruntnet.local
</VirtualHost>
[...]



Descargamos el z-push y realizamos los pasos siguientes:


cd /tmp/
[root@zt tmp]# wget http://download.z-push.org/final/2.1/z-push-2.1.0a-1776.tar.gz
[root@zt tmp]# cd z-push-2.1.0a-1776
[root@zt z-push-2.1.0a-1776]# cp -R * /var/www/html/zpush/.
[root@zt z-push-2.1.0a-1776]# mkdir /var/www/html/zpush/state

[root@zt z-push-2.1.0a-1776]# mkdir /var/www/html/zpush/mail
[root@zt z-push-2.1.0a-1776]# mkdir /var/www/html/zpush/zimbra
[root@zt z-push-2.1.0a-1776]# mkdir /var/www/html/zpush/backend/zimbra


Editamos lo siguiente...

[root@zt z-push-2.1.0a-1776]# vim /var/www/html/zpush/config.php


[...]
    define('STATE_DIR', '/var/www/html/zpush/state/');
[...]

[root@zt z-push-2.1.0a-1776]# vim /var/www/html/zpush/lib/core/zpush.php
[...]
                date_default_timezone_set('America/Lima');
[...]

[root@zt z-push-2.1.0a-1776]# cd /tmp/
[root@zt tmp]# wget http://downloads.sourceforge.net/project/zimbrabackend/Release59/zimbra59.tgz
[root@zt tmp]# tar xzf zimbra59.tgz
[root@zt tmp]# cd zimbra59/z-push-2/
[root@zt z-push-2]# cp -R * /var/www/html/zpush/backend/zimbra/.
[root@zt z-push-2]# chown -R apache:apache /var/www/html/zpush /var/log/z-push
[root@zt z-push-2]# chmod -R 775 /var/www/html/zpush /var/log/z-push
[root@zt z-push-2]# vim /var/www/html/zpush/backend/zimbra/config.php
[...]

    // **********************
    //  BackendZimbra settings
    // **********************
        define('ZIMBRA_URL', 'https://zt.aruntnet.local:8889');
        define('ZIMBRA_DISABLE_URL_OVERRIDE', false);
        define('ZIMBRA_RETRIES_ON_HOST_CONNECT_ERROR',5);
        define('ZIMBRA_USER_DIR', 'zimbra');
        define('ZIMBRA_TIMEZONE', 'America/Lima');
        define('ZIMBRA_VIRTUAL_APPOINTMENTS',true);
        define('ZIMBRA_VIRTUAL_TASKS',true);
        define('ZIMBRA_VIRTUAL_CONTACTS',true);
        define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
        define('ZIMBRA_SYNC_CONTACT_PICTURES', true);
   
        define('ZIMBRA_ENFORCE_VALID_EMAIL', true);
        define('ZIMBRA_HTML',true);

        define('ZIMBRA_SMART_FOLDERS',true);

        define('ZIMBRA_DEBUG',true);
        define('MBSTRING_OVERLOAD', (extension_loaded('mbstring') ? ini_get('mbstring.func_overload') : false));

[...]


Copiamos la seccion de Backend anterior y lo pegamos en el siguiente archivo

[root@zt z-push-2]# vim /var/www/html/zpush/config.php
[...]

 *  Backend settings
 */
        define('BACKEND_PROVIDER', 'BackendZimbra');

    // **********************
    //  BackendZimbra settings
    // **********************
        define('ZIMBRA_URL', 'https://zt.aruntnet.local:8889');
        define('ZIMBRA_DISABLE_URL_OVERRIDE', false);
        define('ZIMBRA_RETRIES_ON_HOST_CONNECT_ERROR',5);
        define('ZIMBRA_USER_DIR', 'zimbra');
        define('ZIMBRA_TIMEZONE', 'America/Lima');
        define('ZIMBRA_VIRTUAL_APPOINTMENTS',true);
        define('ZIMBRA_VIRTUAL_TASKS',true);
        define('ZIMBRA_VIRTUAL_CONTACTS',true);
        define('ZIMBRA_IGNORE_EMAILED_CONTACTS',true);
        define('ZIMBRA_SYNC_CONTACT_PICTURES', true);
   
        define('ZIMBRA_ENFORCE_VALID_EMAIL', true);
        define('ZIMBRA_HTML',true);

        define('ZIMBRA_SMART_FOLDERS',true);

        define('ZIMBRA_DEBUG',true);
        define('MBSTRING_OVERLOAD', (extension_loaded('mbstring') ? ini_get('mbstring.func_overload') : false));

    // the backend data provider
    define('BACKEND_PROVIDER', '');


[...]

Ojo: Se copia "define('BACKEND_PROVIDER', '');" encima de la seccion "//  BackendZimbra settings" copiada del anterior archivo

Seguimos ...

[root@zt z-push-2]# vim /etc/logrotate.d/z-push
[...]

/var/log/z-push/*.log{
daily
missingok
rotate 14
compress
delaycompress
notifempty
}
[...]


Reiniciamos y cruzamos los dedos ...


Luego de que el servidor cargue, configuramos una cuenta usando protocolo exchange en un IPAD por ejemplo ...

Hice las pruebas y confirme que sincroniza correo(recibido, enviados), calendario y contactos






1 comentario:

  1. Actualmente ya no funciona de esta forma. Podrias ayudarnos haciendo uno actualizado?

    ResponderEliminar