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'




viernes, 22 de noviembre de 2013

Error durante actualizacion de Alfresco con locale LATIN1


Estaba actualizando la version del Alfresco que tengo instalado, para ello estuve siguiendo estos pasos:

http://www.fossoffice.com/en/2012/10/31/alfresco-community-upgrade/

En ese proceso me sale el siguiente mensaje de error:

Error: Se ha producido un error.
initdb.bin: encoding mismatch
The encoding you selected (UTF8) and the encoding that the
selected locale uses (LATIN1) do not match.  This would lead to
misbehavior in various character string processing functions.
Rerun initdb.bin and either do not specify an encoding explicitly,
or choose a matching combination.

Estos es debido a los locales del SO, en mi caso tengo un CentOS 6.3 , para corregir ello realizamos lo siguiente:

# vi /etc/environment
...
LANG=en_US.utf-8
LC_ALL=en_US.utf-8
...

Guardamos los cambios y reinicio la PC ... fue lo que hice, no se si hay forma de cargar eso sin reiniciar ...

martes, 22 de octubre de 2013

Mejorando el filtrado del spamassassin en Zimbra

En este resumen vamos a ver los pasos para poder agregar herramientas ya conocidas que nos permitan mejorar la capacidad del filtrado del spam en Zimbra.

Datos:
Version de Zimbra: 8.0.4
SO: CentOS 6.2

Se asume que ya tenemos nuestro servidor Zimbra corriendo ...

A continuacion un breve resumen de lo que se usara...

- SPF(Sender Policy Framework)
Cuando un correo ingresa a nuestro servidor, el SPF revisa los datos de origen(IP), luego realiza una consulta a los servidores DNS(registro TXT para SPF) del dominio origen, comprueba si dicha IP esta autorizada a enviar o no.

- Razor
Es una red colaborativa de detección/notificación de spam. Cuando se recibe un spam nuevo, se informa a esa red de ese mensaje y a partir de ese momento, los servidores que reciban ese mismo mensaje y utilicen razor, lo detectará también como spam sin tener que configurar nada.

- Pyzor
Similar a Razor, se complementan de manera mutua.

Procedemos a instalar

1. SPF

# rpm -Uvh http://mirror.as24220.net/pub/epel/6/i386/epel-release-6-8.noarch.rpm
yum install perl-Mail-SPF -y

Nos aseguramos que dentro del archivo /opt/zimbra/conf/spamassassin/init.pre tenga descomentado la linea
loadplugin Mail::SpamAssassin::Plugin::SPF


2. Razor

# yum install -y perl-Razor-Agent razor-agents

Configuramos Razor

# mkdir /opt/zimbra/amavisd/.razor
# chown -Rf zimbra:zimbra /opt/zimbra/amavisd/.razor
# su - zimbra
$ razor-admin -home=/opt/zimbra/amavisd/.razor -create
$ razor-admin -home=/opt/zimbra/amavisd/.razor -discover
$ razor-admin -home=/opt/zimbra/amavisd/.razor -register

Nos aseguramos que en el archivo /opt/zimbra/conf/spamassassin/v310.pre tenga descomentado la linea
loadplugin Mail::SpamAssassin::Plugin::Razor2

3. Pyzor

# yum -y install pyzor python

Configuramos pyzor

mkdir /opt/zimbra/amavisd/.pyzor
# chown zimbra:zimbra /opt/zimbra/amavisd/.pyzor
# su - zimbra
$ pyzor --homedir /opt/zimbra/amavisd/.pyzor discover


Nos aseguramos que en el archivo /opt/zimbra/conf/spamassassin/v310.pre tenga descomentado la linea
loadplugin Mail::SpamAssassin::Plugin::Pyzor

Adicionalmente instalaremos DCC, el cual tambien es una base de datos colaborativa com el Razor..

# wget http://rhyolite.com/anti-spam/dcc/source/dcc.tar.Z
# tar xzf dcc.tar.Z
# cd dcc-1.3.152
# ./configure --with-uid=zimbra
# make
# make install
# chown -R zimbra:zimbra /var/dcc

Hecho lo de arriba, ahora vamos al archivo /opt/zimbra/conf/spamassassin/local.cf y le agregamos al final

# vim /opt/zimbra/conf/spamassassin/local.cf
...

ok_languages en es 
ok_locales en es 
trusted_networks 127. 172.16.
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
use_dcc 1
dcc_path /usr/local/bin/dccproc
dns_available yes 
score DCC_CHECK 4.000
score SPF_FAIL 10.000  
score SPF_HELO_FAIL 10.000
score RAZOR2_CHECK 2.500
score PYZOR_CHECK 2.500
score BAYES_99 4.300
score BAYES_90 3.500
score BAYES_80 3.000
bayes_ignore_header Received: from localhost
bayes_ignore_header Received: from mail.dominiolocal.com
...


Habilitamos el DCC en el archivo /opt/zimbra/conf/spamassassin/v310.pre

# vim /opt/zimbra/conf/spamassassin/v310.pre
...
loadplugin Mail::SpamAssassin::Plugin::DCC
...


Tambien habilitaremos el DSPAM, esto examina el contenido de cada mensaje y aprende qué tipo de contenido el usuario considera como spam...

Para ello, hacemos lo siguiente:
# su - zimbra
$ zmlocalconfig -e amavis_dspam_enabled=true

Finalmente reiniciamos el zimbra...

# su - zimbra
$ zmcontrol restart








viernes, 18 de octubre de 2013

Zimbra - zmstat-fd.pid not running

En un momento dado cuando veo el estado del servidor Zimbra, el estado del stats esta detenido

Ingresamos a la consola del Zimbra y vemos que un proceso no esta corriendo...

# su - zimbra

$ zmstatctl status
Running: zmstat-df
Running: zmstat-mtaqueue
Running: zmstat-mysql
process 4579 in /opt/zimbra/zmstat/pid/zmstat-fd.pid not running
Running: zmstat-io
Running: zmstat-allprocs
Running: zmstat-vm
Running: zmstat-cpu
Running: zmstat-proc
Running: zmstat-io-x
Running: zmstat-ldap

Este es un problema de permisos, para corregir ello ejecutamos el siguiente comando de zimbra como root

/opt/zimbra/libexec/zmfixperms

Claro, tambien debemos asegurarnos que el usuario y grupo propietario sea zimbra y finalmente reiniciamos el servicio

# su - zimbra
$ zmcontrol restart

Nos fijamos el status del stat y vemos que ya esta corriendo ...

$ zmcontrol status 
Host mail.dominio.com.pe
 antispam                Running
 ldap                    Running
 logger                  Running
 mailbox                 Running
 mta                     Running
 opendkim                Running
 snmp                    Running
 spell                   Running
 stats                   Running
 zmconfigd               Running


Espero le sirva a alguie mas ...!!!

miércoles, 16 de octubre de 2013

Reenvio en Postfix usando archivo aliases

Este es un pequeño recordatorio para hacer reenvio de correo en Postfix usando el archivo /etc/aliases

En este caso en particular se tiene un dominio virtual, aqui los datos para el ejemplo:

Dominio local: dominiolocal.com.pe
Dominio virtual: dominiovirtual.com.ec


Las cuentas de correo para el dominio local son:
useruno
userdos


Las cuentas de correo para el dominio virtual son:
e_useruno
e_userdos

Dato: el nombre del servidor es mail.dominiolocal.com.pe

Ahora si queremos hacer un reenvio de una cuenta local a otra seria sel siguiente modo:

Dentro del archivo /etc/aliases ponemos del siguiente modo

# vim /etc/aliases
...
#reenvio sin copia, el correo enviado a useruno llegara solo a la cuenta userdos
useruno: userdos@dominiolocal.com.pe
#reenvio con copia, el correo enviado a useruno llegara a ambas cuentas
useruno: useruno@dominiolocal.com.pe,userdos@dominiolocal.com.pe

#Para el caso de las cuentas virtuales seria del siguiente modo

#reenvio sin copia, el correo enviado a useruno llegara solo a la cuenta userdos
e_useruno: userdos@dominiovirtual.com.ec
#reenvio con copia, el correo enviado a e_useruno llegara a ambas cuentas
e_useruno: e_useruno@mail.dominiolocal.com.pe,userdos@dominiovirtual.com.ec
...

Luego de de guardar los cambios ejecutamos

# newaliases

Listo !





viernes, 10 de mayo de 2013

Zimbra - Enabled services read from cache. Service list may be inaccurate

En un momento dado el servidor Zimbra no estaba operativo, cuando trate de reniciar me salia el siguiente mensaje de "error".


# su - zimbra
# zmcontrol start
Host mail.dominio.com
Unable to determine enabled services from ldap.
Enabled services read from cache. Service list may be inaccurate.
Starting logger...Failed.
Starting logswatch...ERROR: service.FAILURE (system failure: ZimbraLdapContext) (cause: javax.net.ssl.SSLHandshakeException sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed)
zimbra logger service is not enabled! failed.

Buscando en la web, encontre que esto sucede porque los certificados han expirado. 

Para ello se puede verificar ejecutando lo siguiente:

/opt/zimbra/bin/zmcertmgr viewdeployedcrt all


Para "corregir" lo mencionado, realice lo siguiente:

Generar un nuevo CA

# /opt/zimbra/bin/zmcertmgr createca -new # /opt/zimbra/bin/zmcertmgr createcrt -new -days 365 # /opt/zimbra/bin/zmcertmgr deploycrt self # /opt/zimbra/bin/zmcertmgr deployca # /opt/zimbra/bin/zmcertmgr viewdeployedcrt

Luego

# /opt/zimbra/java/bin/keytool -import -alias root -keystore /opt/zimbra/java/jre/lib/security/cacerts -storepass changeit -file /opt/zimbra/conf/ca/ca.pem
Trust this certificate? [no]:  yes
Certificate was added to keystore


Finalmente reiniciamos el servicio


# su - zimbra
# zmcontrol restart

Espero le sirva a alguien mas ...