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






martes, 15 de abril de 2014

Zimbra - Usuario administrador sin permiso de visualizar correos

Siguiendo los pasos de la fuente, realice esto en mi servidor Zimbra

Crear un usuario que tenga permisos de administrador en el Zimbra, pero que no pueda ver los correos de los usuarios(admin can't view email), es como un administrador de segundo nivel.

Datos:

Dominio: dominio.local
Otro dominios que estan en el servidor: dominio2.com
Version Zimbra: 8.0.7

Ingresamos a la consola del zimbra por terminal


[root@mail ~]# su - zimbra
[zimbra@mail ~]$

Creamos una lista de distribucion al cual llamaremos admins

[zimbra@mail ~]$ zmprov cdl admins@dominio.local zimbraIsAdminGroup TRUE


Modificamos la lista de dsitrubucion


[zimbra@mail ~]$ zmprov mdl admins@dominio.local zimbraAdminConsoleUIComponents accountListView zimbraAdminConsoleUIComponents DLListView zimbraAdminConsoleUIComponents aliasListView zimbraAdminConsoleUIComponents resourceListView zimbraAdminConsoleUIComponents COSListView zimbraAdminConsoleUIComponents domainListView zimbraAdminConsoleUIComponents serverListView zimbraAdminConsoleUIComponents zimletListView zimbraAdminConsoleUIComponents adminZimletListView zimbraAdminConsoleUIComponents globalConfigView zimbraAdminConsoleUIComponents globalServerStatusView zimbraAdminConsoleUIComponents helpSearch zimbraAdminConsoleUIComponents saveSearch zimbraAdminConsoleUIComponents mailQueue zimbraAdminConsoleUIComponents backupsView zimbraAdminConsoleUIComponents certsView zimbraAdminConsoleUIComponents softwareUpdatesView zimbraAdminConsoleUIComponents bulkProvisionTasksView zimbraAdminConsoleUIComponents perServerStatisticsView zimbraAdminConsoleUIComponents globalPermissionView zimbraAdminConsoleUIComponents rightListView


Le asignamos todos los permisos, menos la caracteristica de "view mail".

[zimbra@mail ~]$ zmprov grr global grp admins@dominio.local +domainAdminRights ; zmprov grr global grp admins@dominio.local +adminConsoleAliasRights ; zmprov grr global grp admins@dominio.local +adminConsoleDomainRights ; zmprov grr global grp admins@dominio.local +adminConsoleCOSRights ; zmprov grr global grp admins@dominio.local +adminConsoleServerStatusRights ; zmprov grr global grp admins@dominio.local +adminConsoleResourceRights ; zmprov grr global grp admins@dominio.local +adminConsoleSoftwareUpdatesRights ; zmprov grr global grp admins@dominio.local +adminConsoleServerStatisticRights ; zmprov grr global grp admins@dominio.local +adminConsoleExtensionRights ; zmprov grr global grp admins@dominio.local +adminConsoleBackupRights ; zmprov grr global grp admins@dominio.local +adminConsoleMigrationRights ; zmprov grr global grp admins@dominio.local +adminConsoleMailQueueRights ; zmprov grr global grp admins@dominio.local +adminConsoleSavedSearchRights ; zmprov grr global grp admins@dominio.local +adminConsoleDLRights ; zmprov grr global grp admins@dominio.local +adminConsoleCertificateRights ; zmprov grr global grp admins@dominio.local +adminConsoleGlobalRights ; zmprov grr global grp admins@dominio.local +adminConsoleGlobalACLTabRights ; zmprov grr global grp admins@dominio.local +adminConsoleServerRights ; zmprov grr global grp admins@dominio.local +adminConsoleAccountRights ; zmprov grr global grp admins@dominio.local +adminConsoleZimletRights


Ya sea para dominios nuevos o existentes ejecutamos lo siguiente:

[zimbra@mail ~]$ zmprov grr domain dominio.local grp admins@dominio.local +domainAdminRights ; zmprov grr domain dominio.local grp admins@dominio.local -adminLoginAs


Como tambien tenemos el dominio dominio2.com, ejecutamos lo siguiente:

[zimbra@mail ~]$ zmprov grr domain dominio2.com grp admins@dominio.local +domainAdminRights ; zmprov grr domain dominio2.com grp admins@aruntnet.local -adminLoginAs


Crearemos un usuario administrador y lo agregaremos a la lista creada
- Usuario: adminzimbra@dominio.local
- Clave: mxpassw0rd

[zimbra@mail ~]$ zmprov ca adminzimbra@dominio.local mxpassw0rd zimbraIsDelegatedAdminAccount TRUE ; zmprov adlm admins@dominio.local adminzimbra@dominio.local


Finalmente, limpiamos la cache

[zimbra@mail ~]$  zmprov fc all

Ya podemos loguearnos con el nuevo usuario y verificaremos que este ya no puede leer los correos de los usuarios


Fuente: http://wiki.zimbra.com/wiki/Restrict_Admin_'View_Mail'