Configurar PHP 5.4.14 en IIS 7 con soporte MSSQL 2008 R2 en Win2008 x64

He tenido la necesidad de migrar algunos  servidores con SO Win2003 hacia Win2008, pero con el detalle que estos servidores (Wind 2003) tenian aplicaciones PHP y con soporte a bases de datos SQL 2000.

He leido que en esta versión (2008) de SO ya no da soporte a la famosa libreria php_mssql y por la tanto la pregunta es como hacer esto y de la mejor forma.

Supongo:(Escenario)

===================

1.- Tienes un servidor Win 2008 R2 x64 corriendo sin problemas.

2.- Tienes instalado en este servidor la Base de datos SQL 2008 R2.

3.- Tienes instalado el Rol de dw Servidor Web .

Pasos 1.- Instalando PHP en IIS 7

Lo que recomiendo es hacerlo a traves de la plataforma web del mismo sitio de microsoft:

http://www.microsoft.com/web/platform/phponwindows.aspx

Webinstaller

 

Este proceso va descargar un ejecutable EXE el cual deberias de instalar, (ya saben siguient siguiente, etc.)

Al final reiniciamos el servidor y veremos que dentro del administrador del IIS 7 se habrá colocado un icono PHP justo para ser administrador, es desde  aqui donde podremos manipular las variables del php.

 

Si ingresamos al modulo vamos a ver lo siguiente: (detalles mas abajo)

1.- La version php instalada en IIS 7

2.- Si deseamos ver la configuración y extenciones que tiene nuestra instalación nada mejor que ver el archivo phpinfo()

3.- Ruta del archivo de configuración de PHP (php.ini), y si deseamos ver el contenido, nos basta con darle clic.

4.-Con esta opcion podemos habilitar/inhabilitar y hasta agregar extenciones, es aqui donde trabajaremos mas adelante para agregar extenciones de MSSQL.

5.- Lo mismo que el punto 4 pero solo nos permite agregar extenciones.

Pueden ver un video resumido de esto aqui: http://www.youtube.com/watch?v=u9YVMXNHPco

Paso 2.-  Instalar el Driver de php para SQL server

Decargar la última version Driver de PHP ára SQL : http://www.microsoft.com/en-us/download/confirmation.aspx?id=20098

Este archivo ejecutable lo que hace es descargar una serie de librerias en un archivo EXE. Una vez descargado lo ejecutamos y nos parecerá un mensaje pidiendonos la ruta a donde va a descargar las librerias (*.dll), alli escogemos la carpeta “ext” de nuestra instalación, en mi caso sería:  C:\Program Files (x86)\PHP\v5.4\ext

Este archivo al momento de ejecutarse y desempaquetarse genera un archivo de ayuda (SQLSRV_Help.chm) el cual nos da todos los pasos para implementar este driver.

Bien, por si no desean leerse este archivo de ayuda se los voy a resumir:

Una vez que desempaquetamos las librerias y dependiendo de la version de PHP quen tengamos instalada vamos a habilitar (ver imagen )las librerias correspondientes. En mi ejemplo yo tengo instalado la versión 5.4.14 por lo tanto habilitare las librerias:

  • php_pdo_sqlsrv_54_nts.dll
  • php_pdo_sqlsrv_54_ts.dll
  • php_sqlsrv_54_nts.dll
  • php_sqlsrv_54_ts.dll

 

Con esto ya estaría habilitado PHP con soporte a consultas a SQL 2008, ahora lo que nos queda es probar la conexión!!.

3.- Probando la conexion.

Para probar con una base de datos cualquiera, vamos a descargar la base de datos ( AdventureWorks) de Microsoft de esta direccion:

http://go.microsoft.com/fwlink/?LinkID=67739

Al descargar y desempaquetar nos va a mostrar 2 archivos:

  • AdventureWorksDW_Data.mdf
  • AdventureWorksDW_Log.LDF

Estos archivos hay que subirlos a la base de datos. (La mejor forma d hacerlo es siguiendo este Link):

http://msdn.microsoft.com/en-us/library/ms190209.aspx

Bien ahora si, ya instalado la BD vamos a probar creando un archivo php y solicitando datos a nuestra BD.

Creamos un archivo llamado test.php en la raiz de nuestro servidor web y probamos:

test.php

<?php
/* Specify the server and connection string attributes. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");

/* Connect using Windows Authentication. */
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Unable to connect.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Query SQL Server for the login of the user accessing the
database. */
$tsql = "SELECT CONVERT(varchar(32), SUSER_SNAME())";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false )
{
     echo "Error in executing query.</br>";
     die( print_r( sqlsrv_errors(), true));
}

/* Retrieve and display the results of the query. */
$row = sqlsrv_fetch_array($stmt);
echo "User login: ".$row[0]."</br>";

/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Este archivo test.php lo colocamos en C:\inetpub\wwwroot

El resultado es esto:

 

Con esto hemos probado que ya tenemos el PHP listo para hacer consultas a la BAse de datos de SQL 2008 R2 x64

Importante: Aqui solo he probado la conexión usando autenticacion por Windows!!! Existe otra forma de conexión a la Base de datos que es la autenticación por SQL Server, el cual lo vere en una actualización de este post.

 

Para los que desean seguir ahondando aqui les mando un link que trata el mismo tema de manera distinta: http://www.deepshiftlabs.com/dev_blog/?p=1880&lang=en-us

Configurar Zimbra 8 para control de usuarios en Centos 6.3

Configurar Zimbra para control de usuarios

“Este pequeño manual NO es una copia de alguna pagina de internet, es propiedad intelectual de Martín Lugo Palmadera, ud. es libre de usarlo y distribuirlo, pero con la condición de citar la fuente…. http://martinlugo.networksolutions-peru.com”

El escenario es el siguiente:

He instalado una versión fresca Zimbra (versión 8) y esta funcionando al 100%, todos los usuarios envian y reciben mensajes.

Se me ha solicitado que solo algunos usuarios puedan  enviar correos al exterior sin restricciones  y otros solo correo local y a algunos dominios conocidos.(Tambien es recomendable poner restricciones en el Header_Checks)

(Hacer esto es con la version de nativa de postfix es simple y rapida), pero con Zimbra todo cambia, pues agregar las sentencias sobre el archivo de configuracion (main.cf) se borrará al siguiente reinicio.

Para que no suceda esto, vamos a modificar el archivo /opt/zimbra/conf/zmconfigd.cf

Paso 1: Editar el archivo “zmconfigd.cf” como root

 

 

#nano /opt/zimbra/conf/zmconfigd.cf

 

Agregar al final del grupo MTA lo siguiente (antes de “RESTART mta):

 

POSTCONF smtpd_restriction_classes inter, local
POSTCONF inter FILE zmconfigd/postfix_restrict_inter.cf
POSTCONF local FILE zmconfigd/postfix_restrict_local.cf

Creamos 2 variable inter y local (los usuarios que tengan el valor inter podran enviar correos sin restricciones y los usuarios que posean el valor local, solo podran enviar correos a algunos dominios listados en otro archivo), ademas le decimos que sus valores lo lea de los archivos ubicado dentro de la carpeta “zmconfigd” “postfix_restrict_inter.cf” y “postfix_restrict_local.cf” respectivamente.

Paso 2:

Modificar el  archivo “smtpd_sender_restrictions.cf” :

#nano /opt/zimbra/conf/zmconfigd/smtpd_sender_restrictions.cf

Agregar las siguientes lineas al inicio:

 check_sender_access hash:/opt/zimbra/conf/zmconfigd/usuarios
 check_sender_access hash:/opt/zimbra/conf/zmconfigd/prohibido
 hash:/opt/zimbra/conf/zmconfigd/access
 reject_unknown_sender_domain
 reject_invalid_hostname

En el archivo “smtpd_recipient_restrictions.cf”  Agregar la siguiente linea debajo de “permit_mynetworks”

#nano /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf
permit_mynetworks
check_sender_access hash:/opt/zimbra/conf/zmconfigd/usuarios
check_sender_access hash:/opt/zimbra/conf/zmconfigd/prohibido

Deberia quedar asi mas o menos:

%%contains VAR:zimbraServiceEnabled cbpolicyd, check_policy_service inet:localhost:@@cbpolicyd_bind_port@@%%
reject_non_fqdn_recipient
reject_unlisted_recipient
permit_mynetworks
check_sender_access hash:/opt/zimbra/conf/zmconfigd/usuarios
check_sender_access hash:/opt/zimbra/conf/zmconfigd/prohibido
%%contains VAR:zimbraMtaRestriction reject_invalid_helo_hostname%%
%%contains VAR:zimbraMtaRestriction reject_non_fqdn_helo_hostname%%
%%contains VAR:zimbraMtaRestriction reject_non_fqdn_sender%%
%%contains VAR:zimbraMtaRestriction reject_unknown_client_hostname%%
%%contains VAR:zimbraMtaRestriction reject_unknown_helo_hostname%%
%%contains VAR:zimbraMtaRestriction reject_unknown_sender_domain%%
%%explode reject_rbl_client VAR:zimbraMtaRestrictionRBLs%%
%%contains VAR:zimbraMtaRestriction check_policy_service unix:private/policy%%
permit

 

 

 

 

 

Paso 3.- Crear el archivo “usuarios” y “prohibido”:

Si nos percatamos, he ingresado también un archivo llamado “prohibido”, esto sirva para decirle a Zimbra que los dominios que coloque allí van a estar prohibidos de ser enviados

#nano /opt/zimbra/conf/zmconfigd/usuarios
pepito@mydomain.com inter
luchito@mydomain.com local
 ................

Ahora el archivo prohibido:

#nano /opt/zimbra/conf/zmconfigd/prohibido
yahoo.com.pe	reject

Paso 4.- Crear los archivos postfix_restrict_inter.cf y postfix_restrict_local.cf

#nano /opt/zimbra/conf/zmconfigd/postfix_restrict_inter.cf

y colocar esto dentro:

permit

Ahora creamos el segundo archivo:

#nano /opt/zimbra/conf/zmconfigd/postfix_restrict_local.cf

y colocar esto dentro:

check_recipient_access
hash:/opt/zimbra/conf/zmconfigd/interno
reject

Paso 5.- Crear el archivo interno y access

Dentro de este archivo llamado “interno” vamos a colocar los dominios que queremos que envien lo usuarios restringidos

#nano /opt/zimbra/conf/zmconfigd/interno

y colocar alli los dominios que a los que solo podrá enviar mail

dominio1.com.pe      ok
dominio2.com.pe   ok

Ahora creamos el archivo Access:

#nano /opt/zimbra/conf/zmconfigd/access

colocar un espacio en blanco dentro de este archivo “access” y grabar

Paso 6.- indexar archivos “usuarios” “interno” “access”

postmap /opt/zimbra/conf/zmconfigd/usuarios
postmap /opt/zimbra/conf/zmconfigd/interno
postmap /opt/zimbra/conf/zmconfigd/access
postmap /opt/zimbra/conf/zmconfigd/prohibido

Paso 7.- Modificar la variable mynetworks a 127.0.0.0/8 y la red interna de la empresa, esto hara que lo spammer no puedan utilizar nuestro servidor como relay, sino que el postifx solo aceptará conexiones de el mismo, previa validacion del usuario que se trata de conectar Para esto hacer lo siguiente:

#su - zimbra
$ zmprov modifyServer mail.dominio.com.pe zimbraMtaMyNetworks '127.0.0.0/8 192.168.0.0/24'
$ postfix reload

Paso 8.- Reiniciar servicios y listo!!!!!!!!!

#su - zimbra
$ zmmtactl restart

Cuando PHP-mssql no funciona Centos 6.3.

Me ha sucedido que cuando instalo un nuevo servidor y esta requiere conectarse a una BD MSSQL 2008 por php, a veces no funciona, entonces hize este pequeño manual de paso que segui para que me funciones.

 setup (deshabilito el firewall y  configuro la tarjeta de red)
 nano /etc/selinux/config  (deshabiltar SELinux)
 nano /etc/sysconfig/network-scripts/ifcfg-eth0 (Configurar la tarjeta de red)
 service network restart
 ping yahoo.com (pruebo si tengo coneccion a internet)

Actualizo mis repositorios

 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
  rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
  cd /tmp/
  wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
  rpm -ivh rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
  rpm --import https://fedoraproject.org/static/0608B895.txt
  wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
  rpm -ivh epel-release-6-8.noarch.rpm
  yum install yum-priorities

Instalar por yum php php-devel php-mssql freetds

En este orden:

yum update
yum groupinstall 'Development Tools'
yum install httpd
yum install freetds
yum install php php-devel php-mssql
service httpd restart
php -m (verifico que modulos tiene instalado el php, alli debe figurar php-mssql)

Verificar pagina
================
SI NO FUNCIONA verificar en PHP.INI la variable short_open_tag este en On

nano /etc/php.ini
short_open_tag = On

Reiniciar el servidor!!!

Probar!!!

Backup y Restaurar Servidores (Probado en Zimbra 7.2)

Con este Post, vamos sacar copias de seguridad y restaurar en un sistema Zimbra ya instalado y corriendo.

 

Backup de Zimbra

Para sacare una copia de Zimbra 7.2 utilizamos el siguiente script:

#!/bin/bash

 # Zimbra Backup Script
 # Requires ncftp to run
 # This script is intended to run from the crontab as root
 # Date outputs and su vs sudo corrections by other contributors, thanks, sorry I don't have names
 # to attribute!
 # Free to use and free of any warranty!  Daniel W. Martin, 5 Dec 2008

 start_date="$(date +%F)"

 # Outputs the time the backup started, for log/tracking purposes
 echo Time backup started = $start_date at $(date +%T)
 before="$(date +%s)"
 rm -rvf /backup/zimbra/*

 # Live sync before stopping Zimbra to minimize sync time with the services down
 # Comment out the following line if you want to try single cold-sync only
 rsync -avHK --delete /opt/zimbra/ /backup/zimbra

 # which is the same as: /opt/zimbra /backup
 # Including --delete option gets rid of files in the dest folder that don't exist at the src
 # this prevents logfile/extraneous bloat from building up overtime.

 # Now we need to shut down Zimbra to rsync any files that were/are locked
 # whilst backing up when the server was up and running.
 before2="$(date +%s)"

 # Stop Zimbra Services
 su - zimbra -c "/opt/zimbra/bin/zmcontrol stop"
 sleep 15

 # Kill any orphaned Zimbra processes
 kill -9 `ps -u zimbra -o "pid="`

 # Only enable the following command if you need all Zimbra user owned
 # processes to be killed before syncing
 # ps auxww | awk '{print $1" "$2}' | grep zimbra | kill -9 `awk '{print $2}'`

 # Sync to backup directory
 rsync -avHK --delete /opt/zimbra/ /backup/zimbra

 # Restart Zimbra Services
 su - zimbra -c "/opt/zimbra/bin/zmcontrol start"

 # Calculates and outputs amount of time the server was down for
 after="$(date +%s)"
 elapsed="$(expr $after - $before2)"
 hours=$(($elapsed / 3600))
 elapsed=$(($elapsed - $hours * 3600))
 minutes=$(($elapsed / 60))
 seconds=$(($elapsed - $minutes * 60))
 echo Server was down for: "$hours hours $minutes minutes $seconds seconds"

 # Create a txt file in the backup directory that'll contains the current Zimbra
 # server version. Handy for knowing what version of Zimbra a backup can be restored to.
 su - zimbra -c "zmcontrol -v > /backup/zimbra/conf/zimbra_version.txt"
 # or examine your /opt/zimbra/.install_history

 # Display Zimbra services status
 echo Displaying Zimbra services status...
 su - zimbra -c "/opt/zimbra/bin/zmcontrol status"

 # Create archive of backed-up directory for offsite transfer
 # cd /backup/zimbra
 tar -zcvf /home/backup/backup/${start_date}-dominio-com.tgz -C /backup/zimbra .
 rm -rf /backup/zimbra/*

 ############ We don't make the file transfer from here we do it from the XM1-BCK2 ###########
 # Transfer file to backup server
 # ncftpput -u  -p / /tmp/mail.backup.tgz

 # Outputs the time the backup finished
 # echo Time backup finished = $(date +%T)

 # Calculates and outputs total time taken
 after="$(date +%s)"
 elapsed="$(expr $after - $before)"
 hours=$(($elapsed / 3600))
 elapsed=$(($elapsed - $hours * 3600))
 minutes=$(($elapsed / 60))
 seconds=$(($elapsed - $minutes * 60))
 echo Time taken: "$hours hours $minutes minutes $seconds seconds"

Grabamos estos comandos en un archivo en cualquier lado con la extención sh (ejemplo: backup_zimbra.sh)

(Lo que hace este  script es muy sencillo: se encarga de copiar todo la carpeta /opt/zimbra al directorio /backup, luego detiene los servicios y realiza nuevamente la copia para asegurarse de transferir los archivos que estaban en uso y asi minimizar el tiempo de caida.)

Ojo: asegurarse de colocar bien el directorio a donde quisiéramos hacerle un backup, en mi caso particular lo he direccionado a otro disco duro físico.

 

Restaurar el Backup en una instalación fresca

Para restaurar la copia de seguridad, lo unico que hay que hacer es reemplazar la carpeta /opt/zimbra del nuevo servidor por la que tenemos en nuestro backup

En el Nuevo servidor hacer esto:

Paso 1.- Apagar los servico de zimbra por si estuvieran levantados y renombrar carpeta /opt/zimbra

#su - zimbra
$zmcontrol stop
$exit
#mv /opt/zimbra  /opt/zimbra_old

 

Paso 2.- Copiar el archivo de backup al nuevo servidor, ejemplo a la carpeta /opt/zimbra

Crear carpeta /opt/zimbra

#mkdir /opt/zimbra

Utilizar algun gestor de archivos para copiar el archivo de backup backup-dominio-com.tgz hacia /opt/zimbra del nuevo servidor

Paso 3.- Descomprimir el archivo de backup en la carpeta /opt/zimbra

Ejemplo:

 

#cd /opt/zimbra

# tar -xzvf backup-midominio.com.tgz

Paso4.- Con los siguientes comandos se verifica y repara permiso a la carpeta  descomprimida /opt/zimbra

$ chown -R zimbra.zimbra /opt/zimbra

$ /opt/zimbra/libexec/zmfixperms

Paso 5.- Reiniciamos Zimbra

$ su - zimbra

[zimbra@mail ~]$ zmcontrol restart

[zimbra@mail ~]$ zmcontrol start

 

Posibles errores:

[zimbra@mail ~]$ zmcontrol status
/usr/bin/perl: symbol lookup error: /opt/zimbra/common/lib/perl5/x86_64-linux-th read-multi/auto/Socket/Socket.so: undefined symbol: Perl_Istack_sp_ptr

 

Esperar  de 3 a 5 minutos, luego verificar que todos los servicios corran:

[zimbra@mail ~]$ zmcontrol status

deberá de mostrar lo siguiente:

antispam                Running
 antivirus               Running
 imapproxy               Running
 ldap                    Running
 logger                  Running
 mailbox                 Running
 memcached               Running
 mta                     Running
 snmp                    Running
 spell                   Running
 stats                   Running
 zmconfigd               Running

 

Si sale esto, es que ya todo esta corriendo, solo queda verificar!!

Tarea para sacar copias todos los días

Luego lo que queda es colocar una tarea para que todos los días se haga una copia de seguridad en la madrugada, por si falla, ya lo reparamos .

$ crontab -e

agregar esta línea:

00 02 * * 2-6 /root/Backup_Zimbra.sh

 

Lo que hará el crontab es ejecutar el archivo Backup_Zimbra.sh y este a la vez
sacará
una copia a las 2:00 am los días martes, mier,Jue, Vier, Sab

 


Destrabar cola de impresión en Windows 2008 R2

A veces sucede con frecuencia que cuando enviamos una impresión, esta se queda en cola y no imprime!!! luego le damos elimimar y se queda alli, no lo elimina y pueden pasar horas alli.
Lo que hay que hacer es parar la cola de impresión del servidor windows 2008 eliminar las impresiones y luego reiniciar la cola de impresión. Veamos como se hace esto:

Paso 1.- Parar la cola de impresión
Colocar en la ventana de comando la siguiente sentencia: net stop spooler

Paso 2.- Eliminar todos los archivos de la cola de impresión

Ir a la carpeta C:\Windows\System32\spool\PRINTERS

y eliminar todos los documentos

Paso 3.- Reiniciar cola de impresiones

Colocar en la ventana de comando la siguiente sentencia:   net start spooler

 

Paso 4.- Probar de nuevo, lanzando mas impresiones

 

Listo!!

Parte 1: Configuracion completa de un servidor de Correos con usuarios virtuales: Centos+Postfix+mysql+courier+ Webmail_Rouncube+clamav+ amavis+spamassing +restricción de usuarios para envio de correos internos o externos.

Version 1.0
Author: Martín Lugo mlugop@hotmail.com

Edición :

Este tutorial es Copyright (c) 2011 de Martín Lugo Palmadera. Ha sido derivado  de una traducción del tutorial de Falko Timme y modificado según mi conveniencia para poner en funcionamiento un servidor de estas características. El manual de Falko Timme lo puede encontrar en http://www.howtoforge.com/virtual-users-and-domains-postfix-courier-mysql-centos5.1

Ud. es libre de usar este tutorial, siempre y cuando cite la fuente.

Este documento describe cómo instalar un servidor de correo Postfix que se basa en usuarios y virtuales, es decir, los usuarios y los dominios  se encuentran en una base de datos MySQL. Voy a demostrar también la instalación y configuración de Courier (Courier-POP3, Courier-IMAP), por lo que pueden autenticar Courier contra la misma base de datos MySQL que usa Postfix.

El resultado será tener un servidor Postfix capaz de autenticar por SMTP-AUTH y TLS y poner cuotas a los usuarios (las cuotas no se construye en Postfix por defecto, voy a mostrar cómo parchar adecuadamente para que trabaje con Postfix). Las contraseñas se almacenan en forma encriptada en la base de datos (la mayoría de los documentos que he encontrado se trataba de contraseñas en texto plano que es un riesgo para la seguridad). Además de eso, este tutorial incluye la instalación de Amavisd, SpamAssassin y ClamAV para que los mensajes de correo electrónico seán analizados en busca de spam y virus.

La ventaja de una configuración “virtual” (usuarios y dominios virtuales en una base de datos MySQL), es que es mucho más eficiente que una configuración que se basa en usuarios “reales” del sistema. Con esta configuración virtual en tu servidor de correo se puede manejar miles de dominios y usuarios. Además, es más fácil de administrar, porque lo único que tienen que hacer frente a la base de datos MySQL es añadir nuevos usuarios/dominios o editar los ya existentes. No más comandos postmap comandos para crear ficheros de base de datos, no más carga de Postfix, etc ( a no ser que restrinjamos usuarios). Para la administración de la base de datos MySQL se puede usar herramientas basadas en web como el phpMyAdmin que también será instalado en esta guía. La tercera ventaja es que los usuarios tendrán una dirección de correo electrónico como nombre de usuario (en lugar de un nombre de usuario + una dirección de correo electrónico) que es más fácil de comprender y tener en cuenta.

Este tutorial está basado en CentOS 5.1 (i386). Debería haber instalado un sistema básico de CentOS, tal y como se describe aquí: http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig y http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p2. Además, usted debe asegurarse de que el cortafuegos esté apagado (al menos por ahora) y que SELinux esté desactivado (esto es importante!), como se indica en el capítulo seis en http://www.howtoforge.com/centos-5.1-server-lamp-email-dns-ftp-ispconfig-p3.

Esta guía pretende ser una guía práctica, que no cubre los antecedentes teóricos. Ellos son tratados en un montón de otros documentos en la web.

Este documento viene sin garantía de ninguna clase! Quiero decir que esta no es la única manera de establecer un sistema de este tipo. Hay muchas maneras de lograr este objetivo, pero esta es la forma en que yo he configurado varios servidores. Yo no doy ningún tipo de garantía de que esto trabaje para usted!

Obs. Como editor de textos yo uso nano o mcedit, es mas flexible que el vi

Paso 1: Editar archivo HOSTS

Nuestro Hostname en este ejemplo es server1.example.com, y el IP address 192.168.0.100, por lo que debemos de cambiar en /etc/hosts  como sigue:

#nano /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               localhost.localdomain localhost
192.168.0.100           server1.example.com server1
::1             localhost6.localdomain6 localhost6
Paso 2.- Instalar algunos softwares
Primero vamos a importer algunas llaves para los paquetes de software (GPG keys):
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
A continuación, vamos a actualizar nuestros paquetes existentes en el sistema :
#yum update
Ahora, vamos a instalar algunos paquetes que vamos a necesitar después:
yum groupinstall 'Development Tools'

yum groupinstall 'Development Libraries'

Paso 3.- Instalar Apache, MySQL, phpMyAdmin

En primer lugar, vamos permitir los paquetes se tomen del repositorio de RPMforge en nuestro sistema CentOS, pues muchos de los paquetes que vamos a instalar en el transcurso de este tutorial no están disponibles en los repositorios oficiales CentOS 5,1: (Tambien lo puden descargar de DAG)

rpm -Uhv http://apt.sw.be/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
(Si este link no trabaja, ud puede buscar la version actual de rpmforge-release aqui: http://apt.sw.be/packages/rpmforge-release/)

Luego vamos instalar los paquetes necesarios con un solo comando (incluyendo los paquetes que necesitan para construir Courier-IMAP):

#yum install ntp httpd mysql-server php php-mysql php-mbstring php-mcrypt phpmyadmin rpm-build gcc mysql-devel openssl-devel cyrus-sasl-devel pkgconfig zlib-devel pcre-devel openldap-devel postgresql-devel expect libtool-ltdl-devel openldap-servers libtool gdbm-devel pam-devel gamin-devel
Paso 4.- Install Courier-IMAP, Courier-Authlib, And Maildrop

Lamentablemente no hay paquetes rpm para Courier-IMAP, Courier-Authlib, maildrop y, por lo tanto tenemos que instalarlos, tal como se describe en este tutorial: How To Install courier-imap, courier-authlib, And maildrop On Fedora, RedHat, CentOS (http://www.howtoforge.com/installing-courier-imap-courier-authlib-maildrop-fedora-redhat-centos)

En caso de que tengas problemas al momento de generar estos archivos lo puedes descargar de:

Paso 5.- Aplicando el parche de cuotas para Postfix
Primero tenemos que conseguir la fuente rpm de Postfix, el parche con la cuota de parches, y construir un nuevo paquete de Postfix rpm e instalarlo.

cd /usr/src
 wget http://ftp-stud.fht-esslingen.de/pub/Mirrors/centos/5.1/os/SRPMS/postfix-2.3.3-2.src.rpm
 rpm -ivh postfix-2.3.3-2.src.rpm

Si al final de aplicar este commando me muestra algunas de estas advertencias ignórelas:

warning: user mockbuild does not exist - using root
 warning: group mockbuild does not exist - using root

 

cd /usr/src/redhat/SOURCES

wget http://vda.sourceforge.net/VDA/postfix-2.3.3-vda.patch.gz
 gunzip postfix-2.3.3-vda.patch.gz
 cd /usr/src/redhat/SPECS/

Ahora debemos de editar el archive postfix.spec:

nano postfix.spec

Cambiar el valor de las variables %define MYSQL 0 por  %define MYSQL 1, adicionar Patch0: postfix-2.3.3-vda.patch a la sección  # Patches , y finalmente adicionar %patch0 -p1 -b .vda a la sección %setup -q :

[...]
%define MYSQL 1</br>
[...]
# Patches
Patch0: postfix-2.3.3-vda.patch
Patch1: postfix-2.1.1-config.patch
Patch3: postfix-alternatives.patch
Patch6: postfix-2.1.1-obsolete.patch
Patch7: postfix-2.1.5-aliases.patch
Patch8: postfix-large-fs.patch
Patch9: postfix-2.2.5-cyrus.patch
[...]
%setup -q
# Apply obligatory patches
%patch0 -p1 -b .vda
%patch1 -p1 -b .config
%patch3 -p1 -b .alternatives
%patch6 -p1 -b .obsolete
%patch7 -p1 -b .aliases
%patch8 -p1 -b .large-fs
%patch9 -p1 -b .cyrus
[...]

Una ves que hemos modificado estas variables, debemos de construir un Nuevo Postfix el cual tiene soporte para cuotas y MySQL:

rpmbuild -ba postfix.spec

Si le sale algunas de estas advertencias, ignórelas:

msg.h:12:1: warning: "/*" within comment
msg.h:14:1: warning: "/*" within comment
msg.h:33:1: warning: "/*" within comment
msg.h:34:1: warning: "/*" within comment
msg.h:35:1: warning: "/*" within comment
msg.h:36:1: warning: "/*" within comment

Finalmente los paquetes de nuestro nuevo Postfix es creado en /usr/src/redhat/RPMS/i386, por lo que debemos de ir hacia allá:

cd /usr/src/redhat/RPMS/i386

Luego listamos los archivos

ls -l

Debería de mostrar todos estos paquetes disponibles:

[root@server1 i386]# ls -l
total 11280
-rw-r--r-- 1 root root 3819299 Dec  5 15:25 postfix-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root 7655069 Dec  5 15:25 postfix-debuginfo-2.3.3-2.i386.rpm
-rw-r--r-- 1 root root   50346 Dec  5 15:25 postfix-pflogsumm-2.3.3-2.i386.rpm
[root@server1 i386]#

Luego elija el paquete de Postfix e instalelo:

rpm -ivh postfix-2.3.3-2.i386.rpm

(En caso que tengan problemas al crear el paquete rpm de postfix, ud. puede descargarlo de aquí: postfix-2.3.3-2.i386.rpm.)

Paso 6.- Establecer el password de  MySQL y  Configurar phpMyAdmin

Iniciar MySQL:

chkconfig --levels 235 mysqld on
/etc/init.d/mysqld start

A continuación, establecer contraseñas para la cuenta de root del MySQL:

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

Ahora configurar phpMyAdmin. Cambiamos la configuración de Apache para que phpMyAdmin permita conexiones no sólo desde localhost

(hay que comentar la sección <Directory “/usr/share/phpmyadmin”> ):

nano /etc/httpd/conf.d/phpmyadmin.conf
#
#  Web application to manage MySQL
#
#<Directory "/usr/share/phpmyadmin">
#  Order Deny,Allow
#  Deny from all
#  Allow from 127.0.0.1
#</Directory>

Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin

 

Seguidamente vamos a cambiar la autenticación en phpMyAdmin de cookie a http:

nano /usr/share/phpmyadmin/config.inc.php
[...]
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]

 

Ahora le vamos a decir que Apache siempre se inicie en los niveles 235:

chkconfig --levels 235 httpd on
/etc/init.d/httpd start

Terminado esto, ya podemos dirigirnos a nuestro navegador y teclear http://server1.example.com/phpmyadmin/ o http://192.168.0.100/phpmyadmin/ y loguearse con el nombre de usuarior root  y el password que estableció para el MySQL.

 

Soluciones sencillas para implementar entornos informáticos pequeños

Les comparto un documento que lei de APC (sistemas electricos) se trata de las consideraciones que hay que tener para armar un datacenter en empresas de mediana envergadura.

Link: APC_centro_datos_small_offices_EN

Header Checks en Zimbra 7.2

Usualmente deseamos  configurar nuestro servidor de correos de tal manera que un mensaje antes de llegar a los controles habituales (antivirus, antispam) este sea rechazado por el titulo que lleva en el subject.

En Zimbra NO es complicado hacer esto, es solo tener un poco de maña.

Segui este Howto, pero no me dio resultado, el sistema valida el encabezado, y si el mensaje es inofensivo no lo deriva a la casilla del usuario, si no, lo envia al diferido y alli se queda.

Solución….. trabajar con sus propios archivo del zimbra y acomodarlos a nuestros requerimientos.

Seguiremos hasta cierta parte el Howto del Link y luego alli haremos nuestras modificaciones.

1.- Miramos la configuración del postfix respecto del header check

su - zimbra
$zmlocalconfig | grep header_checks

Most likely you will see the following:
postfix_header_checks = pcre:/opt/zimbra/conf/postfix_header_checks

 

2.- Vamos a ingresar a la variable “postfix_header_checks” el valor por defecto del header_check

 

$zmlocalconfig -e postfix_header_checks="pcre:/opt/zimbra/conf/postfix_header_checks"
$zmprov mcf zimbraMtaBlockedExtensionWarnRecipient FALSE

 

Reinicimos

$zmmtactl restart

3.- Agregamos los valores en el archivo “/opt/zimbra/conf/postfix_header_checks.in” los mensajes que NO deseamos ingresen por nigun motivo a nuestros servidores (hacerlo como usuario root)

 

#nano /opt/zimbra/conf/postfix_header_checks.in
%%uncomment VAR:zimbraMtaBlockedExtension%%/^Subject:.*publicidad/ REJECT No permitimos SPAM1
%%uncomment VAR:zimbraMtaBlockedExtension%%/^Subject:.*sexo/ REJECT No esta permitido el % en el encabezado2
%%uncomment VAR:zimbraMtaBlockedExtension%%/^Subject:.*viagra/ REJECT No esta permitido el % en el encabezado3
%%uncomment VAR:zimbraMtaBlockedExtension%%/^Subject:.*publcidad/ REJECT No permitimos SPAM4

 

Explicacion:

Linea1.- Le indico al sistema que todo correo que en el subject contenga la palabra “publicidad” lo rechaze

Linea2.- Le indico al sistema que todo correo que en el subject contenga la palabra “sexo” lo rechaze

Linea1.- Le indico al sistema que todo correo que en el subject contenga la palabra “viagra” lo rechaze

Linea1.- Le indico al sistema que todo correo que en el subject contenga la palabra “publcidad” lo rechaze

Uds, pueden poner su propias reglas

4.- Reiniciamos el Zimbra y listo!!!

 

#su - zimbra
$zmmtactl restart

 

Comandos para contar Nro de Documentos en Legislacion, Jurisprudencia y Doctrina (CMS 2.3)

Para Legislacion:

SELECT * FROM document where parent_ID=’1′;

 

Para Jurisprudencia:

SELECT * FROM document where parent_ID=’3′;

Para Doctrina

SELECT * FROM document where parent_ID=’4′;

 

Martín Lugo

Error Zimbra: zimbraRemoteManagementPrivateKeyPath (/opt/zimbra/.ssh/zimbra_identity) does not exist

Tenia el Zimbra corriendo bien… (recibiendo y enviando correos).

Cuando trate de ir a modificar en el panel de administración la configuración del servidor, me salio el siguiente mensaje de error:

zimbraRemoteManagementPrivateKeyPath (/opt/zimbra/.ssh/zimbra_identity) does not exist Código de error: service.FAILURE Detalles:soap:Receiver

Lo que entendí en su momento es que las llaves de seguridad del zimbra no existian o no tenian los permisos adecuados (en ese caso el owner debería ser Zimbra).

Paso 1 (verificar  si existe el archivo “zimbra_identity”)

#ls -l  /opt/zimbra/.ssh/

Como NO existe entonces hay que proceder a crearlos!

Paso 2 (Generar llaves de de autenticacion)

su - zimbra
zmsshkeygen
zmupdateauthkeys

Paso 3 (Reinicializamos Zimbra)

su - zimbra
zmmtactl restart

En algunos casos no basta con reiniciar Zimbra, tambien es necesario reiniciar el Tomcat Apache, para esto hacelos lo siguiente:

 

su - zimbra
zmcontrol stop
zmcontrol start

Listo Solucionado!!!