viernes, diciembre 20, 2013

Mapa del Software Libre y Open Source (FLOSS)

Publico a continuación una diapositiva en Impress en la cual resumo en líneas generales los programas que existen en Software Libre y Open source (FLOSS) orientados a diferentes usuarios: Usuario de escritorio, empresas, programadores y sector educación

jueves, diciembre 19, 2013

Curso de Zimbra - Capítulo IV (Comandos en consola en Zimbra)

Mis manuales actualizados de Zimbra (2017)
https://cloudperu.pe/manuales/listado

Si Ud. desea llevar un curso de Zimbra; puede ver mi Curso en Aula Útil https://aulautil.com/curso/online/zimbra. Clases con Videoconferencia y asistencia en tiempo real con Anydesk. Incluye Gratis 2 Servidores VPS Cloud (Firewall UTM+Zimbra) + 1 IP pública y dominio real por alumno.

1.- Comandos de servicio
##########################################################################

$> su - zimbra

verificar el estado de todos los  servicios en zimbra
$> zmcontrol status 

detener todos los servicios
$> zmcontrol stop

iniciar todos los servicios
$> zmcontrol start

reiniciar todos los servicios
$> zmcontrol restart

ver la versión de zimbra
$> zmcontrol -v


2.- Comandos individuales de servicio (start, stop, restart, status)
##########################################################################
Ej: detenemos todos los servicios e iniciaremos uno a uno

$> zmcontrol stop

$> zmcontrol status

Iniciar LDAP server
$> ldap start

$> zmcontrol status

Iniciar MySQL Server
$> mysql.server start

Iniciar zmconfigd
$> zmconfigdctl start

Iniciar MTA (postfix, saslauthd)
$> zmmtactl start

Iniciar Amavis, Antivirus y AntiSpam (amavis, spamassassin, clamav)
$> zmamavisdctl start

$> zmcontrol status

Iniciar Mailbox (webmail, panel de administracion, servidores imap y pop3, servidores de filtros)
$> zmmailboxdctl start

Iniciar spell (servidor de ortografía)
$> zmapachectl start

Iniciar monitoreo
$> zmswatchctl start

Iniciar estadísticas
$> zmstatctl start

Iniciar Logger (logs del sistema)
$> zmlogswatchctl start

Reiniciar solo el antivirus
$> zmantivirusctl restart

Reiniciar solo el antispam
$> zmantispamctl restart


3.- zmprov: comando de administración de zimbra
############################################################################

Loguearse primero como usuario zimbra

$> su - zimbra

Lista la ayuda general de zmprov
$> zmprov help

Listar la ayuda para gestionar las cuentas
$> zmprov help acount

Consola Interactiva
$> zmprov
prov> 

Ver ayuda de cuentas
prov> help account

Salir de la consola interactiva
prov> quit

4.- Cuentas
############################################

Obtener listado de todas las cuentas del servidor (todos los dominios)
$> zmprov -l gaa

Obtener todas las cuentas de administración
$> zmprov -l gaaa

Obtener información de una sola cuenta
$> zmprov -l ga tuxito@dominio.com 

Cuentas de un dominio específico
$> zmprov -l gaa dominio.com

Detalle de cuentas de un dominio especifico
$> zmprov -l gaa -v dominio.com

Detalle de cuentas de un dominio especifico con Cuenta, Nombre y Quota
$> zmprov -l gaa -v dominio0.com | grep -e zimbraMailDeliveryAddress -e displayName -e zimbraMailQuota |sed -e "s/zimbraMailDeliveryAddress/Cuenta/" -e "s/displayName/Nombre/" -e "s/zimbraMailQuota/Quota/"   

Crear una cuenta, con cos default
$> zmprov ca pepito@dominio.com pepitopass displayName "Pepito Pérez"

Crear un usuario con un cos específico ej: gerente
$> cos=`zmprov gc gerente | grep zimbraId:|cut -d ' ' -f2`
$> zmprov ca juanito@dominio.com juanitopass displayName "Juanito Martinez" zimbraCOSId $cos 

Crear una cuenta con detalle
$> zmprov ca windozero@dominio.com passwinbugs cn 'Nombre(s) ApMaterno ApPaterno' displayName 'Nombre(s) ApMaterno ApPaterno' givenName 'Nombre(s)' zimbraCOSId $cos

5.- Modificar opciones de una cuenta
#########################################################

Cambiar de password de una cuenta
$> zmprov sp usuario1@dominio.com passnuevo

Modificar un atributo de una cuenta
$> zmprov ma usuario1@dominio.com displayName "Luser Noob 1"

Nota: se puede modificar cualquier atributo del usuario
para la lista de atributos ejecutar
$> zmprov -l ga usuario1@dominio.com


6.- Busqueda de cuentas 
##########################################################

* Búsqueda por atributos
Se puede buscar las cuentas por un atributo en común
$> zmprov sa parametro=cadena

Buscar todas las cuentas activas
$> zmprov sa zimbraAccountStatus=active

Buscar todas las cuentas bloqueadas
$> zmprov sa zimbraAccountStatus=locked

Buscar en cuales listas se encuentra una cuenta
$> zmprov gam cuenta@dominio.com


7.- Borrar una cuenta
##########################################################
$> zmprov da usuario3@dominio.com

8.- Creación de Cuentas en forma masiva
######################################################################################################
Nos logueamos como root
$> su -

Creamos nuestro directorio de scrips
$> mkdir /opt/zimbra/scripts

Entramos al directorio
$> cd /opt/zimbra/scripts

Primero creamos un archivo con la lista de cuentas y sus respectivos cos
$> vim usuarios.txt
--------------------------------------------
usuario1@dominio.com,userpass1,Usuario Prueba 1,default
usuario2@dominio.com,userpass2,Usuario Prueba 2,default
usuario3@dominio.com,userpass3,Usuario Prueba 3,gerente
--------------------------------------------

Creamos ahora un script que genere un archivo para la creación de usuario
$> vim crea_usuarios.php
#!/usr/bin/php

<?php 

// Obteniendo los COS del sistema y sus Ids 

exec("/opt/zimbra/bin/zmprov gac",$arrcos); 

$cos = array(); 

foreach($arrcos as $cos_name){ 

        $cos_name  = chop ($cos_name); 

        $cosid=`/opt/zimbra/bin/zmprov gc $cos_name | grep ^zimbraId:`; 

        $cosid = trim(str_replace("zimbraId: ","",$cosid)); 

        $cos[$cos_name]=$cosid; 

} 

//print_r($cos); 

// Leyendo los archivos de Usuarios 

$userfile=file("usuarios.txt"); 

// Recorriendo array de usuarios y creando las cuentas 

foreach($userfile as $userline){ 

    $userline=trim(chop($userline)); 

    if(!empty($userline)){

        $user = explode(",",$userline);
    echo("ca $user[0] $user[1] displayName '$user[2]' zimbraCOSId ".$cos[$user[3]]."\n"); 
    } 
} 
?>
Ejecutamos el script, para eso necesitamos php
$> yum -y install php php-cli
$> chmod 755 crea_usuarios.php
$> ./crea_usuarios.php> cuentas.zm


Creamos los usuarios con zmprov
$> /opt/zimbra/bin/zmprov < cuentas.zm


9.- Listas de correo
###############################################################
Buscar todas las listas, y por dominio

$> zmprov gadl

$> zmprov gadl dominio.com

Crear una lista
$> zmprov cdl lista@dominio.com

Ver una lista específica
$> zmprov gdl lista@dominio.com

Encontrar todas las listas de un dominio y sus miembros
$> for i in $( zmprov gadl dominio.com | grep -v abuse | grep -v postmaster | sort ) ; do echo
 `zmprov gdl $i | grep -e 'mail: ' -e 'zimbraMailForwardingAddress: ' | sed 's/mail/Lista/' | sed

's/zimbraMailForwardingAddress: //'` ; done ;


agregar un miembro a la lista
$> zmprov adlm lista@dominio.com cuenta@dominio.com

Remover un miembro de la lista
$> zmprov rdlm lista@dominio.com cuenta@dominio.com

Borrar una lista
$ zmprov ddl lista@dominio.com


10.- Buzones (zmmailbox)
##################################################################

Entrar a la consola interactiva
$> zmmailbox
mbox> 

Ver ayuda general del comando
$> zmmailbox help

Ver ayuda de las cuentas 
$> zmmailbox help account

Ver ayuda de los mensajes
$> zmmailbox help message


* Tamaño de un buzón
Ver tamaño ocupado del buzón
$> zmmailbox -z -m cuenta@dominio.com gms

Ver el tamaño de las quotas asignadas y ocupadas de todos los buzones
$> zmprov gqu `zmhostname`|awk {'print " "$3" "$2" "$1'}

Revisar mensajes por carpetas en el buzón
$> zmmailbox -z -m cuenta@dominio.com gaf

Borrar una carpeta completa de un buzón
$> zmmailbox -z -m cuenta@dominio.com emptyFolder Junk

Importar mensajes de una carpeta Maildir existente en el INBOX 
$> echo addMessage /INBOX /path/to/Maildir/cur | /opt/zimbra/bin/zmmailbox -z -m cuenta@dominio.com

Buscar un mensaje
$> zmmailbox -z -m cuenta@dominio.com search -t message "prueba"

Buscar un mensaje en todas las cuentas
$> zmprov -l gaa |awk '{print "zmmailbox -z -m "$1" search \"linux\" "}' |sh -v
linux es la palabra de búsqueda

Buscar correos anteriores a una fecha: (formato mes/dia/año)
$> zmmailbox -z -m cuenta@dominio.com search -t message "in:INBOX (before: 12/19/13)"

Obtener contenido de un correo
$> zmmailbox -z -m cuenta@dominio.com  gm  21940
21940 es el ID del mensaje

Ver contactos:
$> zmmailbox -z -m cuenta@dominio.com gact | less

Vaciar casilla usuario:  
$> zmmailbox -z -m accoun@domain.com ef "/Inbox"

Ver correos de una carpeta
$> zmmailbox -z -m cuenta@dominio.com search -l 100 "in:Inbox"

Ver metadata de un correo:
$> zmmetadump -m cuenta@dominio.com -i 26747

Borrar un mensaje
$> zmmailbox -z -m cuenta@dominio.com dm 4543
4543 es el id del mensaje

lunes, diciembre 16, 2013

Curso de Phalcon PHP - Capítulo I: (Primeros Pasos ¿Qué es Phalcon?)

Phalcon PHP es un framework de alto rendimiento desarrollado como un módulo nativo de C para el núcleo de PHP, convirtiéndolo en el framework más rápido de todos, siendo hasta 10 veces más rápido que symfony 2 y zend framework 2.
Phalcon es un framework full stack para el desarrollo de aplicaciones complejas.

Cuenta con los siguientes módulos y funcionalidades:
- Desarrollo con uso de PHP 5.3 y namespaces
- Patrón de arquitectura MVC para el desarrollo de aplicaciones (Módulo Simple, Multi Módulos y Micro Aplicaciones)
- Motor de ORM (Transacciones, Comportamientos, Relaciones, PHQL, Eventos, Validaciones, Hydration, Logging, Profiling, Sharding)
- Motor de ODM ( Mongo DB)
- Encriptación
- HTTP Request/Response/Cookies
- ODM para la base de datos documental Mongo DB
- Motor de Templates (Volt)
- Inyección de Dependencias DI/IOC
- Gestión de Eventos
- Cifrado
- Filtrado y Saneamiento
- Constructor de Formularios y Validación
- Mensajes Instantáneos
- Cache
- Paginación
- Anotaciones
- Seguridad
- Traducción
- Gestión de Assets (despliegue de archivos públicos: js,css)
- Auto-Loader Universal
- Logging
- Interfaz de comandos CLI

Instalación de Phalcon 
Usaremos Ubuntu como distribución base de preferencia una versión LTS 12.04 o release superior
Logueandose como root
$> sudo su -

Actualizando la lista de paquetes
$> apt-get -y update

Instalamos vim para como editor de texto
$> apt-get -y install vim

Instalando los paquetes de desarrollo de php y el compilador de c
$> apt-get -y install php5-dev php5-mysql gcc

Instalando el sistema de control de versiones git
$> apt-get -y install git

Haciendo un checkout del proyecto; desde github
$> git clone git://github.com/phalcon/cphalcon.git

Compilando el framework
$> cd cphalcon/build

Ubuntu de 32 bits
$> ./install 32bits

Ubuntu de 64 bits
$> ./install 64bits

Habilitando la extensión phalcon en la configuración de php
$> vim /etc/php5/conf.d/20-phalcon.ini
extension=phalcon.so

Verificando la carga de la exensión phalcon
$> php -r "print_r(get_loaded_extensions());"  | grep phalcon

Plataforma de despliegue (LAMP o LEMP) 
* Instalación de Apache, extensiones de PHP y MySQL (LAMP) 
Apache es el servidor web más popular en la internet y su combinación con Linux, PHP y MySQL lo convierten en la plataforma más importante en el despliegue de aplicaciones web. Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl)

$> apt-get install apache2 php5 mysql-server php5-mysql \
php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl

* Instalación de Ngnix, PHP y MySQL (Linux EngineX: LEMP) 
Ngix es un servidor web muy ligero, de gran performance y cada vez gana más aceptación; su uso con PHP, PHP-FPM y MySQL lo convierten en una interesante alternativa a Apache Instalación de apache, php, librería gráfica (gd), depurador (xdbug), interfaz de comandos (cli), ldap, cifrado (mcrypt), download manager (curl) y php-fpm (fast cgi)

$> apt-get install nginx php5 mysql-server php5-mysql \
php5-gd php5-xdebug php5-cli php5-ldap php5-mcrypt php5-curl php5-fpm

Primera Aplicación: holamundo

Estructura base de directorios
tutorial/
 app/
   controllers/
   models/
   views/
 public/
   css/
   img/
   js/

Creación de la estructura base de directorios
$> cd /var/www
$> mkdir holamundo
$> mkdir holamundo/app
$> mkdir holamundo/app/controllers
$> mkdir holamundo/app/models
$> mkdir holamundo/app/views
$> mkdir holamundo/public
$> mkdir holamundo/public/css
$> mkdir holamundo/public/img
$> mkdir holamundo/public/js
Creación del archivo .htaccess del directorio public para habilitar el uso de URLs Limpias
$> vim holamundo/public/.htaccess
AddDefaultCharset UTF-8
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?_url=/$1 [QSA,L]
</IfModule>
Definiendo el BootStrap principal (Front Controller)
$> vim holamundo/public/index.php
<?php
try{
    //Register an autoloader
    $loader = new \Phalcon\Loader();
    $loader->registerDirs(array(
        '../app/controllers/',
        '../app/models/'
    ))->register();


    //Creando una instancia de Inyección de Dependencias
    $di = new Phalcon\DI\FactoryDefault();

    //Definiendo el directorio de vistas de la aplicacion, con el uso de una función lamba (función anónima)
    $di->set('view', function(){
        $view = new \Phalcon\Mvc\View();
        $view->setViewsDir('../app/views/');
        return $view;
    });

    //Gestionando la petición y desplegando la aplicación
    $application = new \Phalcon\Mvc\Application();
    $application->setDI($di);
    echo $application->handle()->getContent();

} catch(\Phalcon\Exception $e) {
    echo "PhalconException: ", $e->getMessage();
}

Creando el controlador IndexController
$> vim holamundo/app/controllers/IndexController.php
<?php
class IndexController extends \Phalcon\Mvc\Controller
{

    // método para la acción index
    public function indexAction()
    {

    }

}
Creando el directorio la vista para el controlador index
$> mkdir holamundo/app/views/index
Creando el archivo de vista para la acción index
$> vim holamundo/app/views/index/index.phtml

Hola Mundo desde Phalcon :)

Despliegue y prueba de la Aplicación Crearemos un dominio ficticio en el /etc/hosts Agregar en la última línea
$> vim /etc/hosts
127.0.1.1  www.holamundo.com

Despliegue en Apache 
Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz /var/www/holamundo/public

Reemplazar el contenido
$> vim /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/holamundo/public
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /var/www/holamundo/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>
        ErrorLog ${APACHE_LOG_DIR}/error.log
        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Reiniciamos Apache
$> /etc/init.d/apache2 restart

Comprobamos nuestro hola mundo con el navegador http://www.holamundo.com

Despliegue en Nginx 
Creamos el virtualhost para la resolución de www.holamundo.com tomando como directorio raíz /var/www/holamundo/public
Reemplazar el contenido
$> vim /etc/nginx/sites-enabled/default
server {
    listen   80;
    server_name www.holamundo.com;
    index index.php index.html index.htm;
    set $root_path '/var/www/holamundo/public';
    root $root_path;
    try_files $uri $uri/ @rewrite;
    location @rewrite {
        rewrite ^/(.*)$ /index.php?_url=/$1;
    }
    location ~ \.php {
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index /index.php;
        include /etc/nginx/fastcgi_params;
        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
        root $root_path;
    }
    location ~ /\.ht {
        deny all;
    }
}
Reiniciamos Nginx
$> /etc/init.d/nginx restart

Comprobamos nuestro hola mundo con el navegador http://www.holamundo.com

Curso de Zend Framework 2 - Capítulo I (Configuración del Entorno LAMP)

1.- Introducción
Zend framework 2 es el framework de los creadores del núcleo de PHP (Zend); la versión 2 de este popular framework refleja los cambios introducidos en PHP 5.3 como son los espacios de nombres (namespaces), closures y un mejor uso de la Programación Orientada a Objetos; así como de los patrones de diseño.
El objetivo de Zend Framework 2 es apoyar al programador en el desarrollo de aplicaciones web empresariales y complejas.
Zend Framework 2 puede ser usado para el desarrollo de aplicaciones de cualquier tamaño; por tanto su uso no es tan sencillo como otros frameworks; como Code Igniter o Cake PHP. Zend Framework 2 fue publicado en setiembre de este año y en el corto periodo que tiene ha generado gran espectativa en la comunidad de desarrolladores de PHP y de aquellos que han estado trabajando con ZendFramework.

2.- Características Nuevas
Zend Framework 2 fue desarrollado con la idea de mejorar el framework; adaptándolo a la evolución del lenguaje y tomando las mejores ideas de los frameworks de desarrollo; el resultado fue un framework moderno y muy fexible que brinda al programador característica muy importantes para el desarrollo de aplicaciones empresariales. Las principales novedades de Zend 2 respecto a la versión anterior son las siguientes:
- Desarrollo basado en Pruebas Unitarias con PHPUnit
- Un nuevo sistema de módulos para organizar el código
- Una nueva arquitectura basada en servicios mediante Inyección de Dependencias
- Un gestor de eventos para olvidarse de los hooks y poder ejecutar código propio en cualquier punto de la ejecución de las aplicaciones

3.- Instalación de Zend Framework 

3.1.- Pre Requisitos
Zend Framework 2 requiere una adecuada compresión y uso de la Programación Orientada a Objetos de PHP, así como de Apache; en cuanto al uso de VirtualHost, mod_rewrite, y los archivos .htaccess; y del manejo de un servidor de base de datos (MySQL). Con la finalidad de comprender un entorno de desarrollo profesional; aparte de los requisitos mencionados, usaremos Ubuntu Linux como Sistema Operativo para el servidor y desplegaremos el primer hola mundo en el Framework.

3.2.- Instalación de Ubuntu Linux
Podemos instalar Ubuntu Linux de manera física en una máquina virtual; para quienes tengan instalada una máquina física con Ubuntu pueden obviar este paso y para quienes solo tengan Windows, pueden instalarlo fácilmente con Virtualbox

3.2.1.- Instalación de VirtualBox 
Descargamos VirtualBox para widows de http://www.virtualbox.org y lo instalamos  

3.2.2.- Instalación de Ubuntu Linux en una Máquina Virtual de VirtualBox
  • Le damos click al icono de Nueva y le damos nombre a la máquina virtual "Ubuntu LAMP Server", se va seleccionar  Tipo: Linux Versión: Ubuntu
  • Seleccionamos 1024MB de RAM para la nueva máquina Virtual
  • Creamos una nueva unidad de disco duro de y seleccionamos "Crear un disco Virtual Ahora" - Tipo de unidad de disco duro: VDI - Reservado Dinámicamente - Ubicación y Tamaño por defecto se guarda en la carpeta VirtualBox VMs en la carpeta del usuario; - tamaño 6GB - Crear
  • Ahora le damos click en Configuración - Seleccionamos Red y elejimos Adaptador Puente Nombre: Poner la tarjeta de Red - Dar click en Almacenamiento y donde dice a la derecha Unidad CD/DVD dar click al ícono de CD y seleccionar la unidad de CD donde está el disco instalador de Ubuntu; tambien se puede seleccionar el archivo iso; luego dar clik en Aceptar - Dar click en la flecha verde "Iniciar" para arrancar la máquina virtual
  • Ahora iniciará el CD de Ubuntu; despues de un momento nos saldrá un diálogo para - elegir el idioma y a la izquierda le damos click en "Instalar Ubuntu", le damos
    - click en "Continuar"
    - Borrar el disco e Instalar Ubuntu
    - Instalar Ahora
    - Donde se Encuentra "Lima"
    - Distribución del Teclado "Español Latinoamericano"
    - ¿Quién es Usted?
    Su nombre: alumno
    El nombre de su equipo: serverlamp
    Nombre de usuario: alumno
    Contraseña: alumno
    Confirme su Contraseña: alumno
    Al final de la instalación nos pide Reiniciar
Notas:
        - Podemos hacer la instalación con la pantalla completa
        - Para sacar el puntero del mouse de la máquina virtual, presionar el ctrl de la derecha
        - Si se demora en "Descargar fichero" o en "Descargar paquetes de idioma" dar click en la flecha de despliegue y luego "skip"

3.2.3.- Configuracion de la Red
Para nuestro curso usaremos una red hipotética 192.168.1.0/24 con asignación de IP de nuestro equipo linux 192.168.1.10, router 192.168.1.1 y DNS 8.8.8.8

- Dar click a las flechas opuestas que está en la barra superior y elegir "Editar las conexiones"
- Seleccionar Conexión Cableada 1 y click en Editar
- Pestaña "Ajustes Ipv4"
- Método manual
- click en añadir:
                      Dirección: 192.168.1.10
                      Mascara de Red: 24
                      Puerta de Enlace: 192.168.1.1
                      Servidores DNS: 8.8.8.8
                      Guardar y Cerrar.

3.3.- Instalación de SSH, Apache, PHP y MySQL
- Dar click en el icono Ubuntu y escribir en la barra de comandos terminal
- La terminal de Linux nos permite ejecutar comandos para administrar el sistema operativo; al abrir la terminal iniciamos con el usuario alumno

- Para loguearnos como root (el superusuario de Linux) ejecutamos:  
$> sudo su - 

clave: alumno

- Actualizamos la lista de paquetes instalables
$> apt-get update 

- Ahora instalamos el servidor SSH para poder administrar remotamente nuestro servidor
$> apt-get -y install ssh 

- Ahora para probar la conexión desde windows descargamos el programa putty
     http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
     
     descargar el archivo putty.exe, ejecutarlo y conectarse al IP del 
     servidor linux
usar el usuario: alumno clave: alumno

3.3.1.- Instalación de PHP, MySQL y Apache (Entorno de Desarrollo)
$> sudo su -
$> apt-get update
$> apt-get install php5 apache2 php5-cli \
php5-xdebug php5-mysql mysql-server \
php5-mcrypt php5-gd php5-memcache php-pear        
        
     Reiniciamos apache
$> /etc/init.d/apache2 restart
Nos pide una contraseña para el root de Mysql
     clave: alumno
desde windows abrir el navegador y entrar a la IP del servidor

3.4.- Comandos básicos para trabajar con archivos y directorios
En linux existe solo un directorio princiapl raiz / y en el cual se encuentran todos los demas directorios, Ej: el DOCUMENT_ROOT (raiz de pàginas web) se encuentra en /var/www la base de datos se encuentra en /var/lib/mysql los archivos de configuración de apache se encuentran en /etc/apache2 Nos logueamos como root
$> sudo su -

Comando cd

Nos sirve para movernos por los directorios Ej:
$> cd /var/www
$> cd /etc/apache2
$> cd conf.d

Comando pwd

Nos dice en que directorio nos encontramos Ej:
$> cd /var/www
$> cd pwd 

Comando ls

Nos sirve para listar los archivos y directorios
Ej:
$> cd /var/www
$> ls

- Listar en columnas y detalles

Ej:

$> ls -l       (lista el directorio actual)
$> ls -l /     (lista los directorios del raiz)
$> ls /etc/apache2/conf.d  (lista el directorio /etc/apache2/conf.d )

Comando mkdir

Nos sirve para crear directorios
Ej:
$> cd /var/www
$> mkdir images
$> mkdir js
$> mkdir css

Comando nano
nano es un editor sencillo para crear archivos
Ej:
$> cd /var/www
$> nano index.php
<?php
    echo "<h1>hola mundo</h1>";
    ?>
ctrl + o --> grabar ctrl + x --> salir Desde windows entrar a la IP del servidor con el navegador http://192.168.1.10

Comando cp

Nos sirve para crear archivos y directorios
Ej:
$> cd /var/www

$> cp index.php saludo.php  (copia un archivo)
Desde windows entrar a la IP del servidor con el navegador http://192.168.1.10/saludo.php
$> cp -R images imagenes   (copia un directorio)
$> ls -l /var/www

Comando mv

Nos sirve para renombrar y mover archivos y directorios
Ej:
$> cd /var/www
$> mv js javascript  (renombrando el directorio js a javascript)
$> ls 
$> mkdir banners
$> mv banners images/ (moviendo el directorio banners a images) 

3.5 El editor vim

El editor vim es el editor más común en las plataformas unix; su resaltado de syntaxis nos ayuda con los archivos de configuración
Comandos del Editor VIM
 
    ESC              : ingresa al modo comando
    i              : entra en modo insercion desde la misma linea
    o              : entra en modo insercion desde la sgte linea 
    1G              : va a la primera linea
    23G              : va a la linea 23
    :45              : va a la linea 45
    G                            : va a la ultima linea
    /palabra                    : busca una cadena
    n              : sigue buscando
    dd              : corta o borra una linea
    d8d              : corta o borra 8 lineas
    yy              : copia una linea
    y7y              : copia 7 lineas
    p              : pega el contenido del portapapel
    5p              : pega 5 veces el contenido del portapapel
    u              : deshace la ultima accion
    ctrl+r             : rehace la ultima accion
    x              : borra una letra
    :w              : graba el archivo actual
    :wq              : graba y sale
    :w!              : graba de forma forzada
    :wq!             : graba y sale forzadamente
    :q!                    : sale forzadamente
    :1,$s/busqueda/reemplaza/g     :busca una cadena y la reemplaza
    :! comando                    : ejecuta un comando en bash y vuelve a VIM
    :e archivo                    : abre un nueva archivo en el sgte buffer
    :b1              : va el primer buffer abierto
    :b2              : va al segundo buffer, para cambiar de buffer hay que grabar el buffer actual   
    :set number                    : muestra los numeros de linea
    :set nonumber            : quita los numeros de linea
    :set paste                    : habilita el pegado sin auto identificacion
    :set ts=3                    : establece a 3 los espacios de los tabs
    Insertar                       : entra en modo de reemplazo
    :saveas archivo                : guarda como nombre archivo
    :shitf+a                     : entra en modo insercion al final dpel
    D       : elimina texto desde el cursor actual hasta el final de la linea
    dG       : elimina todo hasta la ultima linea
    :wq! ++utf8 : guarda el fichero en modo UTFP (por defecto)
    :nohl   : cancela los resultados de busqueda

Instalación de  VIM

$> sudo su -
$> apt-get -y install vim

Ejercicio 1: Crear archivo poema
$> vim poema
i -----> Inserta texto
Oh gran Linux que quita la ignorancia en mi vida,
a ti te consagro mi aprendizaje.
ESC ----> Lleva al modo comando
:wq ----> graba y sale

$> cat poema 

Gestion de temporales de vim

$> vim poema   (agregar al final)
G  ----> van a la última línea
o  ----> modo inserción en una nueva línea
Prometo alejarme del maligno windows


Cerrar a la mala dando click en la X de la ventana del terminal

$> vim poema
Sale el mensaje de alerta el temporal y puede elegir entre estas opciones
[A]brir para lectura únicamente, (E)ditar de todas formas, (R)ecuperar, (B)orrar(S)alir, (A)bortar:

Seleccionamos "r" y le damos enter
i    -----> insetar texto
desde mañana
ESC  -----> volver al modo comando
:wq! -----> grabar y salir forzadamente


Borrar el temporal
$> rm -f .poema.swp

Ejercicio2:
Crear archivo saludo y ejecutar ejercicios de comandos vim
    $> vim saludo
        i 
        hola mundo
 ESC
 yy
 20p
 G
 o
 windows es lo maximo
 ESC
 /hola
 n
 n
 :set number
 G
 yy
 30p
 :1,$s/windows/linux/g
 dd
        45G
 d2d
 dG
 u
 ctrl+R  
 :! date
 :w
 :e otrosaludo
 :b1
 1G
 yG
 :b2
 p
 :wq!

$> cat saludo  (muestra el contenido del archivo)

$> cat otrosaludo

Archivo de configuracion de VIM
$> vim  /etc/vim/vimrc
   36G   ---> ir a la linea 36
              borrar la comilla inicial de las siguientes 3 lineas de la 36 a la 38
   G     ---> ir a la última línea
   o
   set nobackup
   set number
   set ts=4
   set paste
   ESC :wq

$> vim /etc/vim/vimrc
   ESC:q

4.- Instalación de ZendFramework 2
Una vez que ya tenemos nuestro entorno LAMP, vamos a configurar un primer proyecto con Zend Framework 2

4.1.- Prerequisitos  
    1.- Primero necesitamos habilitar el módulo mod_rewrite en Apache y permitir el uso de .htaccess en los directorios
    2.- Instalar composer
    3.- Crear el proyecto de Zend Framework 2 con Composer

 4.1.1 .- Habilitando mod_rewrite en Apache
   $> sudo su -
   $> cd /etc/apache2/mods-enabled
   $> ln -s ../mods-available/rewrite.load
   $> /etc/init.d/apache2 restart

4.1.2.- Instalando Composer (Gestor de dependencias de librerías)
   $> sudo su -

   Primero instalamos curl (comando para descargar archivos)
   $> apt-get install curl        

   Ahora instalaremos git  (sistema de control de versiones distribuido)
   $> apt-get install git

   Descargamos composer y lo movemos al /usr/bin para ejecutarlo en cualquier directorio
   $> curl -s https://getcomposer.org/installer | php --
   $> mv composer.phar /usr/bin
   
   Nota: si nos sale un mensaje de warning de timezone en php

   $> vim /etc/php5/cli/php.ini       (archivo de configuración para consola)
   960: date.timezone = America/Lima 
 
   $> vim /etc/php5/apache2/php.ini   (archivo de configuración para web)
   960: date.timezone = America/Lima
 
4.1.3 .- Creando el proyecto de Zend Framework 2
Con composer crearemos el proyecto zftest en el directorio /var/www/zftest
Esto nos creará el proyecto y nos descargará el ZendFramework2
   
$> composer.phar create-project -s dev \
--repository-url="http://packages.zendframework.com" \
zendframework/skeleton-application /var/www/zftest

4.l.4.- Editando el VirtualHost
para hacer que el directorio /var/www/zftest/public sea el raíz
Reemplazamos todo el contenido existente
$> vim /etc/apache2/sites-enabled/000-default
<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/zftest/public               
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/zftest/public>               
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All                         
    Order allow,deny
    allow from all
  </Directory>

  ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
  <Directory "/usr/lib/cgi-bin">
    AllowOverride None
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
  </Directory>

  ErrorLog ${APACHE_LOG_DIR}/error.log

  # Possible values include: debug, info, notice, warn, error, crit,
  # alert, emerg.
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  Alias /doc/ "/usr/share/doc/"
  <Directory "/usr/share/doc/">
      Options Indexes MultiViews FollowSymLinks
      AllowOverride None
      Order deny,allow
      Deny from all
      Allow from 127.0.0.0/255.0.0.0 ::1/128
  </Directory>
</VirtualHost>

Ahora reiniciamos apache y accedemos al proyecto desde el navegador http://localhost
    $> /etc/init.d/apache2 restart

Para verificar que el archivo .htaccess está funcionando, navegamos a http://localhost/loquesea y debería saler un error 404 con el logo de ZF

Finalmente editaremos la vista del Módulo Application, Controlador Index, Action Index
Reemplazando todo el contenido
  
    $> vim /var/www/zftest/module/Application/view/application/index/index.phtml
                                      
    <h1> Hola Mundo desde Zend Framework 2 </h1>                                  
Entramos con el navegador a http://localhost   y veremos el mensaje del hola mundo

5.- Herramienta de Depuración de PHP

Xdebug es una extensión para depurar errores en php, para poder configurarlo
instalamos la extensión php5-xdebug

$> apt-get install php5-xdebug

Activamos Xdebug (verificar la carpeta donde se encuentra la extension xdebug.so)
$> vim /etc/php5/conf.d/xdebug.ini
xdebug.ion=/usr/lib/php5/20100525/xdebug.so
xdebug.remote_enable=1
xdebug.remote_host="127.0.0.1"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"
xdebug.remote_mode=req
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp/xprofile/"
xdebug.collect_params=On
xdebug.show_local_vars=On


Activamos la visualización de error en formato html para poder depurarlos efectivamente

$> vim /etc/php5/apache2/php.ini
display_errors=On
html_errors = On

$> vim /etc/php5/cli/php.ini
display_errors=On

$> /etc/init.d/apache2 restart

sábado, diciembre 14, 2013

Curso de Zimbra - Capítulo III (Instalación Multiservidor de Zimbra)

Mis manuales actualizados de Zimbra (2017)
https://cloudperu.pe/manuales/listado

Si Ud. desea llevar un curso de Zimbra; puede ver mi Curso en Aula Útil https://aulautil.com/curso/online/zimbra. Clases con Videoconferencia y asistencia en tiempo real con Anydesk. Incluye Gratis 2 Servidores VPS Cloud (Firewall UTM+Zimbra) + 1 IP pública y dominio real por alumno.

Una de las funcionalidades de zimbra es que puede instalarse en modo multiservidor con lo cual nos permite el balanceo de carga y despliegue de la solución para una gran cantidad de usuarios.

En el presente capítulo configuraremos Zimbra en un entorno multiservidor
bajo el siguiente esquema:
                ---------------
               | MTA,LDAP,DNS  |  smtp.dominio.com
                ---------------
                   |     | 
                   |     |
                   |     |
              --------   -------
             |Mailbox | |Mailbox|  
             |Store   | |Store  |
             |Webmail | |Webmail| 
             |Logger  | |       | 
              --------   -------
  mailbox1.dominio.com  mailbox2.dominio.com
1.- Configuración del DNS Server
-------------------------------------------------------------------
Configuramos en el DNS Server , los registros de DNS para el dominio  
------------------------------------------------------------------- 
smtp           IN        A   192.168.10.2
mailbox1       IN        A   192.168.10.3
mailbox2       IN        A   192.168.10.4
dominio.com.  IN        MX  smtp.dominio.com.

$> service httpd stop
$> chkconfig httpd off
$> service iptables stop
$> service iptables save

$> service named restart
$> vim /etc/resolv.conf
nameserver 192.168.10.2

Comprobación de los registros DNS
$> dig MX dominio.com
$> dig smtp.dominio.com
$> dig mailbox1.dominio.com
$> dig mailbox2.dominio.com
2.- Instalación del primer servidor Zimbra (SMTP,LDAP y Proxy)
##########################################################################################
Configuración del hostname para smtp
---------------------------------------------
$> vim /etc/sysconfig/network
HOSTNAME=smtp.dominio.com
$> hostname smtp.dominio.com
$> su -

Luego, comprobar el nombre del hostname
$> hostname

Configurar la IPs de los hosts de correo
$> vim /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.10.2 smtp.dominio.com       smtp
192.168.10.3 mailbox1.dominio.com   mailbox1
192.168.10.4 mailbox2.dominio.com   mailbox2
instalar dependencias $> yum install libstdc++.i686 nc sysstat file Deshabilitar postfix $> service postfix stop $> chkconfig postfix off Deshabilitar apache $> service httpd stop $> chkconfig httpd off

Descargar Zimbra Open Source Edition
$> wget http://files2.zimbra.com/downloads/8.0.6_GA/zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> tar -zxvf zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> cd zcs-8.0.6_GA_5922.RHEL6_64.20131203103705

Instalación de smtp.dominio.com
$> ./install.sh --platform-override
Do you agree with the terms of the software license agreement? [N] Y

Select the packages to install

Install zimbra-ldap [Y] Y

Install zimbra-logger [N] N 

Install zimbra-mta [Y] Y

Install zimbra-snmp [Y] Y

Install zimbra-store [Y] N

Install zimbra-apache [Y] N

Install zimbra-spell [Y] N

Install zimbra-memcached [N] Y

Install zimbra-proxy [N] Y
 

Install anyway? [N] Y

The system will be modified.  Continue? [N] Y

Change domain name? [Yes] Yes
Create domain: [smtp.dominio.com] dominio.com

Address unconfigured (**) items  (? - help) 1
Select, or 'r' for previous menu [r] 4
Password for ldap admin user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 6
Enter the number for the local timezone: [23] 11
Select, or 'r' for previous menu [r] r
Address unconfigured (**) items  (? - help) 2
Select, or 'r' for previous menu [r] 4
Password for ldap root user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 5
Password for ldap replication user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 6
Password for ldap Postfix user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 7
Password for ldap Amavis user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 8
Password for ldap Nginx user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] 9
Password for ldap BES user (min 6 characters): [dqrGZV27] alumno
Select, or 'r' for previous menu [r] r
Address unconfigured (**) items  (? - help) 3
Select, or 'r' for previous menu [r] 2
Please enter the mta authentication server hostname: smtp.dominio.com
Select, or 'r' for previous menu [r] r
*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] Yes
Save config in file: [/opt/zimbra/config.7238]
The system will be modified - continue? [No] Yes



Nos sale estos mensajes, por el proxy que no encuentra mailstore,
lo solucionaremos después

WARNING
You are configuring this host as an MTA server, but the specified mailstore
used for authentication has not been configured to run the mailbox service yet.
This will cause smtp authentication to fail.

To correct this - after installing a mailstore server,
reset the zimbraMtaAuthHost attribute for this server:
/opt/zimbra/bin/zmprov -m -l ms smtp.dominio.com zimbraMtaAuthHost smtp.dominio.com

Once done, start the MTA:
zmmtactl start

Press return to continue
 Setting MTA auth host...failed.
Setting TimeZone Preference...done.
WARNING

You are configuring this host as a proxy server, but there is currently no 
mailstore to proxy.  This will cause proxy startup to fail.
Once you have installed a store server, start the proxy service:
zmproxyctl start

Press return to continue


3.- Instalación del segundo servidor: mailbox1.dominio.com
##########################################################################################
Editamos el host y el ip del host
$> vim /etc/sysconfig/network
HOSTNAME=mailbox1.dominio.com
$> hostname mailbox1.dominio.com
$> su -

Luego, comprobar el nombre del hostname
$> hostname

Configurar la IPs de los hosts de correo
$> vim /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.10.2 smtp.dominio.com       smtp
192.168.10.3 mailbox1.dominio.com   mailbox1
192.168.10.4 mailbox2.dominio.com   mailbox2

Usar como DNS server el smtp
$> vim /etc/resolv.conf
nameserver 192.168.10.2

$> service httpd stop
$> chkconfig httpd off
$> service iptables stop
$> service iptables save

instalar dependencias
$> yum install libstdc++.i686  nc sysstat file

Deshabilitar postfix
$> service postfix stop
$> chkconfig postfix off

Deshabilitar apache
$> service httpd stop
$> chkconfig httpd off

Descargar Zimbra Open Source Edition
$> wget http://files2.zimbra.com/downloads/8.0.6_GA/zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> tar -zxvf zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> cd zcs-8.0.6_GA_5922.RHEL6_64.20131203103705
Instalación de mailbox1.dominio.com
$> ./install.sh --platform-override Do you agree with the terms of the software license agreement? [N] Y Select the packages to install Install zimbra-ldap [Y] N Install zimbra-logger [Y] Y Install zimbra-mta [Y] N Install zimbra-snmp [Y] Y Install zimbra-store [Y] Y Install zimbra-apache [Y] Y Install zimbra-spell [Y] Y Install zimbra-memcached [N] N Install zimbra-proxy [N] N This platform is CentOS5_64 Packages found: RHEL5_64 This may or may not work. Using packages for a platform in which they were not designed for may result in an installation that is NOT usable. Your support options may be limited if you choose to continue. Install anyway? [N] Y The system will be modified. Continue? [N] Y Address unconfigured (**) items (? - help) 1 Select, or 'r' for previous menu [r] 2 Please enter the ldap server hostname: smtp.dominio.com Select, or 'r' for previous menu [r] 4 Password for ldap admin user (min 6 characters): alumno Select, or 'r' for previous menu [r] r Address unconfigured (**) items (? - help) 2 Select, or 'r' for previous menu [r] 4 Password for admin@dominio.com (min 6 characters): [W0oVBhou] alumno Select, or 'r' for previous menu [r] 9 Please enter the SMTP server hostname: smtp.dominio.com Select, or 'r' for previous menu [r] r *** CONFIGURATION COMPLETE - press 'a' to apply Select from menu, or press 'a' to apply config (? - help) a Save configuration data to a file? [Yes] Yes Save config in file: [/opt/zimbra/config.32536] Saving config in /opt/zimbra/config.32536...done. The system will be modified - continue? [No] Yes Registramos en el SMTP Server el mailbox1 (smtp.dominio.com)
Ejecutar esto en el servidor smtp (192.168.10.2)
$> /opt/zimbra/bin/zmprov -m -l ms mailbox1.dominio.com zimbraMtaAuthHost mailbox1.dominio.com
$> su - zimbra
$> zmmtactl restart
$> zmproxyctl restart
$> zmcontrol status

Actualizamos los keys del ssh en el mailbox1 para obtener los logs del smtp (mailbox1.dominio.com)
Ejecutar esto en el servidor mailbox1 (192.168.10.3)
$> su - zimbra $> zmupdateauthkeys ahora como root editar $> vim /etc/sysconfig/rsyslog SYSLOGD_options="-r -m 0" $> /etc/init.d/rsyslog restart Hacemos que el SMTP loguee al mailbox1 (smtp.dominio.com)
Ejecutar esto en el servidor smtp (192.168.10.2)
$> su - zimbra
$> zmupdateauthkeys

ahora como root ejecutar
$> /opt/zimbra/libexec/zmsyslogsetup
$> /etc/init.d/rsyslog restart 


4.- Instalación del tercer servidor: Mailbox2
#################################################################################
Editamos el host y el ip del host
$> vim /etc/sysconfig/network
HOSTNAME=mailbox2.dominio.com
$> hostname mailbox2.dominio.com
$> su -

Luego, comprobar el nombre del hostname
$> hostname

Configurar la IPs de los hosts de correo
$> vim /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.10.2 smtp.dominio.com       smtp
192.168.10.3 mailbox1.dominio.com   mailbox1
192.168.10.4 mailbox2.dominio.com   mailbox2

Usar como DNS server el smtp
$> vim /etc/resolv
nameserver 192.168.10.2

$> service postfix stop
$> chkconfig postfix off
$> service httpd stop
$> chkconfig httpd off
$> service iptables stop
$> service iptables save


instalar dependencias
$> yum install libstdc++.i686  nc sysstat file

Deshabilitar postfix
$> service postfix stop
$> chkconfig postfix off

Deshabilitar apache
$> service httpd stop
$> chkconfig httpd off

Descargar Zimbra Open Source Edition
$> wget http://files2.zimbra.com/downloads/8.0.6_GA/zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> tar -zxvf zcs-8.0.6_GA_5922.RHEL6_64.20131203103705.tgz
$> cd zcs-8.0.6_GA_5922.RHEL6_64.20131203103705

Instalación de mailbox2.dominio.com
$> ./install.sh --platform-override
Do you agree with the terms of the software license agreement? [N] Y

Select the packages to install

Install zimbra-ldap [Y] N

Install zimbra-logger [Y] N 

Install zimbra-mta [Y] N

Install zimbra-snmp [Y] Y

Install zimbra-store [Y] Y

Install zimbra-apache [Y] Y

Install zimbra-spell [Y] Y

Install zimbra-memcached [N] N

Install zimbra-proxy [N] N


This platform is CentOS5_64
Packages found: RHEL5_64
This may or may not work.

Using packages for a platform in which they were not designed for
may result in an installation that is NOT usable. Your support
options may be limited if you choose to continue.


Install anyway? [N] Y

The system will be modified.  Continue? [N] Y

Address unconfigured (**) items  (? - help) 1
Select, or 'r' for previous menu [r] 2

Please enter the ldap server hostname: smtp.dominio.com
Select, or 'r' for previous menu [r] 4
Password for ldap admin user (min 6 characters): alumno
Select, or 'r' for previous menu [r] r
Address unconfigured (**) items  (? - help) 2

Select, or 'r' for previous menu [r] 4

Password for admin@dominio.com (min 6 characters): [W0oVBhou] alumno


Select, or 'r' for previous menu [r] 6 

Please enter the SMTP server hostname: smtp.dominio.com

Select, or 'r' for previous menu [r] r

*** CONFIGURATION COMPLETE - press 'a' to apply
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] Yes
Save config in file: [/opt/zimbra/config.32536] 
Saving config in /opt/zimbra/config.32536...done.
The system will be modified - continue? [No] Yes 

Actualizamos los keys 
$> su - zimbra
$> zmupdateauthkeys

como root ejecutar
$> /opt/zimbra/libexec/zmsyslogsetup
$> /etc/init.d/rsyslog restart 

Registramos en el SMTP Server el mailbox2 (smtp.dominio.com)
---------------------------------------------------------------------------------
Ejecutar esto en el servidor smtp (192.168.10.2)
$> /opt/zimbra/bin/zmprov -m -l ms mailbox2.dominio.com zimbraMtaAuthHost mailbox2.dominio.com $> su - zimbra $> zmmtactl restart $> zmproxyctl restart $> zmupdateauthkeys Actualizamos los keys de mailbox1 ---------------------------------------------------------------------------------
Ejecutar esto en el servidor mailbox1 (192.168.10.3)
$> su - zimbra $> zmupdateauthkeys

Listo ahora solo pobramos el envío y recepción de correo de los nodos

viernes, agosto 30, 2013

Curso de Zimbra - Capítulo II (Instalación de Zimbra)

Mis manuales actualizados de Zimbra (2017)
https://cloudperu.pe/manuales/listado

Si Ud. desea llevar un curso de Zimbra; puede ver mi Curso en Aula Útil https://aulautil.com/curso/online/zimbra. Clases con Videoconferencia y asistencia en tiempo real con Anydesk. Incluye Gratis 2 Servidores VPS Cloud (Firewall UTM+Zimbra) + 1 IP pública y dominio real por alumno.

Instalación de Zimbra

Modificar el sudoers
$> vim /etc/sudoers

Comentar esta linea (aprox línea 55)
#Defaults    requiretty

ESC:wq!

instalar dependencias
$> yum install libstdc++.i686 libstdc++ nc sysstat file

Deshabilitar postfix
$> service postfix stop
$> chkconfig postfix off

Descomprimir el instalador de zimbra
$> su -
$> cd /root/Descargas

NetWork Edition
--------------------
$> tar -zxvf zcs-NETWORK-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYYY.tgz
$> cd zcs-NETWORK-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYYYYYYY

OpenSource Edition
------------------------------
$> tar -zxvf  zcs-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYYYYYYYY.tgz
$> cd zcs-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYYYYYY

Instalar zimbra
$> ./install.sh                     (RHEL)
$> ./install.sh --platform-override (CentOS)


Do you agree with the terms of the software license agreement? [N]Y    Enter

Install zimbra-ldap [Y] Y

Install zimbra-logger [Y] Y

Install zimbra-mta [Y] Y

Install zimbra-snmp [Y] Y

Install zimbra-store [Y] Y

Install zimbra-apache [Y] Y

Install zimbra-spell [Y] Y

Install zimbra-convertd [Y] Y    

Install zimbra-memcached [N] Enter     (Y si es instalacion multinodo)

Install zimbra-proxy [N] Enter         (Y si es instalacion multinodo)

Install zimbra-archiving [N] Y     (Network Edition)

The system will be modified.  Continue? [N] Y


Change domain name? [Yes] Yes
Create domain: [mail.dominio.com] dominio.com


--------------------------- Opciones del Menu 1 -------------------------
Address unconfigured (**) items  (? - help) 1

Select, or 'r' for previous menu [r] 4
Password for ldap admin user (min 6 characters): [TVwckVm4Y] passadmin
Select, or 'r' for previous menu [r] 6
Enter the number for the local timezone: [23] 11

Select, or 'r' for previous menu [r] r



-------------------------- Opciones del Menu 2 --------------------------
Address unconfigured (**) items  (? - help) 2

elect, or 'r' for previous menu [r] 4

Password for ldap root user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] 5

Password for ldap replication user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] 6

Password for ldap Postfix user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] 7

Password for ldap Amavis user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] 8

Password for ldap Nginx user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] 9

Password for ldap BES user (min 6 characters): [TVwckVm4Y] passadmin

Select, or 'r' for previous menu [r] r

--------------------------- Opciones del menu 3 ------------------------

Address unconfigured (**) items  (? - help) 3

Select, or 'r' for previous menu [r] 4

Password for admin@dominio1.com (min 6 characters): [gpLZfFUr] passadmin

Select, or 'r' for previous menu [r] 23   (Network Edition)

Enter the name of the file that contains the license: /root/Descargas/ZCSLicense.xml  (Network Edition)

Select, or 'r' for previous menu [r] r


---------------------------- Finalizamos la instalacion -----------------------
Select from menu, or press 'a' to apply config (? - help) a
Save configuration data to a file? [Yes] Yes
Save config in file: [/opt/zimbra/config.14717]   Enter
Saving config in /opt/zimbra/config.14717...done.
The system will be modified - continue? [No] Yes



---------------------------- REINSTALAR Si la instalacion fallo --------------------------

$> su -

Network Edition
$> cd /root/Descargas/zcs-NETWORK-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYYY

OpenSource Edition
$> cd /root/Descargas/zcs-8.0.4_GA_XXXX.RHEL6_64.YYYYYYYYYYYY


Desinstalar Zimbra
$> ./install.sh -u
$> rm -fR /opt/zimbra
$> ./install.sh
-----------------------------------------------------------------------------------------


Acceder al zimbra instalado con el navegador
------------------------------------------

PANEL DE ADMINISTRACION
https://mail.dominio.com:7071

usuario: admin
clave:   passadmin

WEBMAIL
http://mail.dominio.com

usuario: admin
clave:   passadmin

**** Nota, si sale error de certificados
regenerar las keys del ssh
$> /opt/zimbra/libexec/zmfixperms

como usuario zimbra
$> su - zimbra
$> zmsshkeygen
$> zmupdateauthkeys

Curso de Zimbra - Capítulo I (Requerimientos previos)

Mis manuales actualizados de Zimbra (2017)
https://cloudperu.pe/manuales/listado

Si Ud. desea llevar un curso de Zimbra; puede ver mi Curso en Aula Útil https://aulautil.com/curso/online/zimbra. Clases con Videoconferencia y asistencia en tiempo real con Anydesk. Incluye Gratis 2 Servidores VPS Cloud (Firewall UTM+Zimbra) + 1 IP pública y dominio real por alumno.

Para instalar Zimbra requerimos previamente tener instalado un Sistema Operativo soportado; para efectos de este curso asumimos que tenemos instalado CentOS 6 de 64 bits o RHEL 6 de 64 bits
Para esta guía configuraremos los siguientes parámetros
dominio: dominio.com 
host de correo: mail.dominio.com
ip del servidor: 192.168.10.2
mascara del servidor: 255.255.255.0
puerta de enlace: 192.168.10.1

Requerimientos previos a la la instalación

Para instalar Zimbra es necesario configurar de forma correcta el hostname y el DNS Server, así como la zona horaria y la hora del servidor

1.- Configuración de la zona horaria
-------------------------------------------
Nos logueamos como root y ejecutamos 
$> tzselect 
2                  Americas
37                 Peru
1                  Yes 
2.- Configuración de la hora del servidor de forma manual
----------------------------------------------------------
Verificamos la hora del sistema
$> date
mié sep 19 21:34:30 PET 2012    ---> PET zona horaria
Configuración local
$> hwclock --set --date="20120314 21:56"; date --set="20120314 21:56"
3.- Configución de la hora del servidor con un cliente NTP
-----------------------------------------------------------
Configuración de cliente
$> vim /etc/sysconfig/network
$> yum -y install ntpdate
$> ntpdate  0.br.pool.ntp.org
$> chkconfig ntpdate on
4.- Configuración del Hostname 
-----------------------------------
$> vim /etc/sysconfig/network
.
.
HOSTNAME=mail.dominio.com (modificar este valor lo demás no tocarlo)

Refrescar el nombre de host y volver a abrir un terminal
$> hostname mail.dominio.com
$> exit
$> exit
Abrir un nuevo terminal y comprobar el nuevo nombre del hostname
$> hostname
Configurar el IP del host ( ej: 192.168.10.179 )
-------------------------
$> vim /etc/hosts
127.0.0.1    localhost.localdomain  localhost
192.168.10.2 mail.dominio.com  mail
Registros de DNS
------------------------------------------------------------------------
A   Zona de dominio (ej: mail.dominio.com)
NS   Name Server (Servidores DNS del dominio)
SOA  Servidor DNS principal (Server of Authorization)
MX   Servidores de correo (Mail Exchange)
TXT  Información adicional del dominio (ej: SFP para hotmail)
CNAME  Alias de una zona de dominio (ej:  web --> www.dominio.com)  
PTR  Resolución inversa

Comprobac ión de registros DNS con dig 
------------------------------------------------------------------------
Instalar dig
$> yum -y install bind-utils

Dig tiene las siguientes Secciones

QUESTION SECTION      consulta que se está realizando
ANSWER SECTION    respuesta (si la hubiera de la consulta)
AUTHORITY SECTION   detalle de los servidores de autorización (SOA)
ADDITIONAL SECTION   información adicional de zonas y otros

Ejercicios:
Verificar la zona de dominio www.sunat.gob.pe
$> dig www.sunat.gob.pe
;; QUESTION SECTION:
;www.sunat.gob.pe.  IN A

;; ANSWER SECTION:
www.sunat.gob.pe. 6 IN A 200.37.173.230    -------> (IP asociado a la zona de dominio)

;; AUTHORITY SECTION:
pe.   107607 IN NS pe1.dnsnode.net.  -------> (Servidores DNS)
pe.   107607 IN NS quipu.rcp.net.pe.
pe.   107607 IN NS sns-pb.isc.org.

;; ADDITIONAL SECTION:
pe1.dnsnode.net. 5637 IN A 194.146.106.82
pe1.dnsnode.net. 5637 IN AAAA 2001:67c:1010:20::53
quipu.rcp.net.pe. 753 IN A 200.1.176.4


Verificar los DNS Server de sunat.gob.pe
$> dig NS sunat.gob.pe
;; QUESTION SECTION:
;sunat.gob.pe.   IN NS

;; ANSWER SECTION:
sunat.gob.pe.  179 IN NS ns1.impsat.net.pe.
sunat.gob.pe.  179 IN NS ns2.impsat.net.pe.

Verificar los servidores de correo de sunat.gob.pe
$> dig MX sunat.gob.pe
;; QUESTION SECTION:
;sunat.gob.pe.   IN MX

;; ANSWER SECTION:
sunat.gob.pe.  900 IN MX 20 ns1.sunat.gob.pe.    ---> Servidores de correo de Sunat
sunat.gob.pe.  900 IN MX 10 ns.sunat.gob.pe.     

;; AUTHORITY SECTION:
sunat.gob.pe.  96 IN NS ns1.impsat.net.pe.
sunat.gob.pe.  96 IN NS ns2.impsat.net.pe.

;; ADDITIONAL SECTION:
ns1.impsat.net.pe. 66998 IN A 200.41.96.24
ns2.impsat.net.pe. 68956 IN A 201.234.59.134


Configuración de los Registros MX 
-------------------------------------------------
Balanceo de Carga 
sunat.gob.pe.     900   IN MX 10 ns.sunat.gob.pe.
sunat.gob.pe.     900   IN MX 10 ns1.sunat.gob.pe.

Alta Disponibilidad
sunat.gob.pe.     900   IN MX 10 ns.sunat.gob.pe.
sunat. gob.pe.     900   IN MX 20 ns1.sunat.gob.pe.
---------------------------------------------------

Verificar los servidores el PTR de uno de los ips de correo de sunat.gob.pe
$> dig MX sunat.gob.pe
sunat.gob.pe.  900 IN MX 10 ns.sunat.gob.pe.     

$> dig ns.sunat.gob.pe
ns.sunat.gob.pe. 900 IN A 64.76.79.131

$> dig -x 64.76.79.131
Verificar si hay registro SPF en el dominio sunat.gob.pe
$> dig TXT sunat.gob.pe
;; QUESTION SECTION:
;sunat.gob.pe.   IN TXT

;; AUTHORITY SECTION:
sunat.gob.pe.  731 IN SOA ns1.impsat.net.pe. hostmaster.impsat.net.ar. 2011010344 10800 3600 604800 86400


Vemos que no hay registro SPF

Verificar TODOS los registros de DNS del dominio sunat.gob.pe
$> dig ANY sunat.gob.pe
;; QUESTION SECTION:
;sunat.gob.pe.   IN ANY

;; ANSWER SECTION:
sunat.gob.pe.  449 IN MX 10 ns.sunat.gob.pe.
sunat.gob.pe.  449 IN MX 20 ns1.sunat.gob.pe.

;; AUTHORITY SECTION:
pe.   106956 IN NS quipu.rcp.net.pe.
pe.   106956 IN NS sns-pb.isc.org.
pe.   106956 IN NS pe1.dnsnode.net.

;; ADDITIONAL SECTION:
ns.sunat.gob.pe. 760 IN A 64.76.79.131
pe1.dnsnode.net. 4986 IN A 194.146.106.82
pe1.dnsnode.net. 4986 IN AAAA 2001:67c:1010:20::53
quipu.rcp.net.pe. 102 IN A 200.1.176.4


Verificar si hay zona de dominio configurado para el dominio raiz
sunat.gob.pe

$> dig sunat.gob.pe
 
;; QUESTION SECTION:
;sunat.gob.pe.   IN A

;; AUTHORITY SECTION:
sunat.gob.pe.  900 IN SOA ns1.impsat.net.pe. hostmaster.impsat.net.ar. 2011010344 10800 3600 604800 86400

Vemos que no está configurado el dominio raíz como zona A 


Configuración del Servidor DNS en modo enjaulado (chroot)
--------------------------------------------------------------------
Instalación del Servidor DNS
$> yum -y install bind bind-chroot bind-utils
Para configurar el DNS interno seguimos los siguientes procedimientos
Para esto tenemos que:
- Copiar los archivos de dns al entorno chroot
- Generar la firma digital
- Copiar la firma digital al entorno chroot
- Configurar los parámetros de DNS y el dominio en el archivo principal de configuración de bind
/var/named/chroot/etc/named.conf
- Configurar los registros de dns en el archivo
/var/named/chroot/var/named/dominio.com.zone
- Configurar la resolución inversa en el archivo
/var/named/chroot/var/named/10.168.192.in-addr.arpa.zone
- Reiniciar el servidor DNS
- Configurar el dns cliente el archivo
/etc/resolv.conf apuntado a nuestra propia ip
- Hacer consultas de nuestro dominio con dig

Copiar los archivos del DNS al entorno chroot
$> cd /var/named
$> for f in named.* data dynamic slaves; do mv $f chroot/var/named/; ln -s /var/named/chroot/var/named/$f /var/named/; done
Generar la firma digital
$> rndc-confgen -a -c /etc/rndc.key
$> chown named:named /etc/rndc.key
Copiar la firma digital al entorno chroot
$> cd /etc
$> for f in named.* rndc.key; do mv $f /var/named/chroot/etc/; ln -s /var/named/chroot/etc/$f /etc/; done
Nota
----------------------------------------------------------------------------
Si se falla en algùn procedimiento en la instalación desinstalar y volver a 
instalar

$> yum erase bind bind-chroot bind-utils
$> rm -fR /var/named
$> rm -fR /etc/named*
$> rm -f /etc/rndc.key
$> yum -y install bind bind-chroot bind-utils
Configurar los parámetros de DNS y el dominio en el archivo principal de configuración de bind
/var/named/chroot/etc/named.conf
$> vim /var/named/chroot/etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
// Ips en la que el demonio named escuchará las peticiones
        listen-on port 53 { 127.0.0.1; 192.168.10.2;};
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
// este parametro permite establecer quienes pueden usar el servidor DNS
        allow-query     { localhost; 192.168.10.0/24; };
// este parametro permite reenviar las consultar hacia el servidor DNS publico;
// para aquellos dominios que no se resuelven en este servidor 
        forwarders   { 8.8.8.8; 4.4.8.8; };
        forward first;
        recursion yes;

        dnssec-enable no;
        dnssec-validation no;
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

// Zona raiz por defecto
zone "." IN {
        type hint;
        file "named.ca";
};


// Zona para nuestro dominio
zone "dominio.com" { 
 type master; 
 file "dominio.com.zone";
 allow-update { none; };
};

// Zona de resolucion inversa
zone "10.168.192.in-addr.arpa" { 
 type master; 
 file "10.168.192.in-addr.arpa.zone";
 allow-update { none; };
};


include "/etc/named.rfc1912.zones";

Creando los archivo zone por los dominios configurados
$> cd /var/named/chroot/var/named
$> vim  dominio.com.zone
$TTL    86400
@                  IN SOA  @ root (
                                         42              ; serial (d. adams)
                                         3H              ; refresh
                                         15M             ; retry
                                         1W              ; expiry
                                         1D )            ; minimum
                     IN    NS             @
www                                     IN      A                       192.168.10.2
mail                                    IN      A                       192.168.10.2
web                                     IN      CNAME                   www
dominio.com.                       IN      A                       192.168.10.2
dominio.com.                       IN      MX              10      mail.dominio.com.
$> vim 10.168.192.in-addr.arpa.zone
 
$TTL 86400
@          IN   SOA      @  root (
         2006031601 ; número de serie
         28800 ; tiempo de refresco
         7200 ; tiempo entre reintentos de consulta
         604800 ; tiempo tras el cual expira la zona
         86400 ; tiempo total de vida
         )
@      IN       NS     mail.dominio.com.
2    IN     PTR     mail.dominio.com.
Reiniciar los servicios
$> service named restart
$> chkconfig named on
Nota si sale errores de permisos o selinux
------------------------------------------------
$> chgrp -R named /var/named/chroot/var/named
$> restorecon -FRvv /var/named/chroot/var/named
Consideraciones de iptables
echo "permitiendo acceso al servidor DNS Server (protocolo udp, puerto 53) desde la LAN"
iptables -A INPUT -p udp --dport 53 -s 192.168.10.0/24 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -d 192.168.10.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
Verificar los logs
$> tail -f /var/log/messages
Configuración del Cliente DNS
---------------------------------------------------------------
$> vim /etc/resolv.conf
search dominio.com              (Sirve para la búsqueda corta de hosts)
nameserver 192.168.10.2


$> dig dominio.com
$> dig MX dominio.com
$> dig www.google.com
Modificar los valores de DNS en la tarjeta de red
$> vim /etc/sysconfig/network-scripts/ifcfg-eth0
.
.
.
DOMAIN=dominio.com
DNS1=192.168.10.2

$> service network restart
$> cat /etc/resolv.conf
$> dig MX dominio.com
$> dig www.google.com