Archive for Linux

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

 


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

 

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!!!

 

Backup de Virtual machine desde un Linux-Centos 5.5 a Windows

El escenario es el siguiente:

– Tengo instalado un Servidor corriendo en  Centos 5.5 (Servidor 1) y dentro de este servidor he instalado VirtualBox para correr 2 Virtual Machine.

– Una virtual Machine es Centos 6 (VMachine 1)y la otra Windows2008(VMachine 2).

– Tengo la necesidad de hacer un backup todas las las noches a estas 2 Virtual machine y enviarlo a un equipo de almacenamiento en Windows storage 2003(Servidor 2) (ya estando alli se pasa  a la cinta de respaldo).

Solución
========

– Crear  un script en Shell que haga el backup en el Centos 5.5  (Archivo tar.gz)(esto se hace en el Servidor 1)

– Crear un script en bat que copie el archivo (Archivo tar.gz) hacia el Servidor 2 (esto se hace en el Servidor 2)

Script en el Servidor 1 (backup_VM.sh)

echo "Apago las maquinas virtuales" | mail -s "Apago las maquinas virtuales" mlugo@gacetajuridica.com.pe
#Apago las maquinas virtuales
VBoxManage controlvm "Windows2008" poweroff
VBoxManage controlvm "Centos620" poweroff
#Hago un delay de 5 minutos para dejar que se apaguen bien las Virtual Machine (el valor de w esta en segundos)
ping 1.1.1.1 -n 1 -w 300 &gt;NUL
echo "Han pasado 5 Minutos"
#Empaqueto las maquinas virtuales
cd /root/
tar czf Windows2008.tgz /root/VirtualBoxVMs/Windows2008
tar czf Centos620.tgz /root/VirtualBoxVMs/Centos620
#Prendo las maquinas virtuales
VBoxManage startvm -type headless "Windows2008"
VBoxManage startvm -type headless "Centos620"echo off<strong> </strong>

Script en el Servidor 2 (copia_VM.bat) (utilizamos pscp)

@echo on
pscp -l root -pw password_administrador root@192.168.1.22:/root/Windows2008.tgz d:\Backup_VM_192.168.1.22
pscp -l root -pw password_administrador root@192.168.1.22:/root/Centos620.tgz d:\Backup_VM_192.168.1.22
@echo off

A probar!!!

 

Crear usuarios de manera masiva para Zimbra 7.2

Durante algunas instalaciones que he tenido, se me ha pedido que migre cuentas de correo de otros sistemas, lo ideal es crear de uno en uno y llenado todos los campos posibles mediante el administrador.

Pero que pasaría si tenemos que migrar 500 cuentas y a mano? nos demorariamos un monton.

Zimbra felizmente provee comando para meterlo en un script y generar estas cuentas:

En el siguiente ejemplo se crea la cuenta masivamente , colocando el usuario, password y una cuota 500 MB aprox.:

 

zmprov ca consultas@domain.com.pe asdf$#%g zimbraMailQuota 5500000000
zmprov ca mlugo@domain.com.pe fve5dsafvgf  zimbraMailQuota 5500000000

Entonces el truco es hacer este archivo con la lista de usuarios y grabarlo con extencion .sh y ejecutarlo

Algunos comandos de para Samba

Tengo integrado Samba con el Active Directory de Windows 2008,  aqui algunos comando que me serviran cuando necesite refrescar la memoria

testparm -s : Valida el archivo smb.conf y ver que usuarios tienen permisos sobre determinadas carpetas

wbinfo -u : Lista usuarios y grupos del Directorio activo

getent passwd : Comprueba que los password de los usuarios se validan en el directorio activo

 

Configurar Zimbra 7.2 para control de usuarios en Centos 6

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 7.2) 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/zmmta.cf

Paso 1: Editar el archivo “zmmta.cf” como root (En zimbra 8, este archivo cambia de nombre se llama zmconfigd.cf y se ubica en /opt/zimbra/conf/zmconfigd.cf)

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

Comentar la linea:

 # POSTCONF smtpd_sender_restrictions                      LOCAL postfix_smtpd_sender_restrictions

 

 

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

 

POSTCONF smtpd_sender_restrictions FILE postfix_sender_restrictions.cf
POSTCONF smtpd_restriction_classes inter, local
POSTCONF inter FILE postfix_restrict_inter.cf
POSTCONF local FILE postfix_restrict_local.cf

Lo que hago aqui, es decirle a Zimbra que la directiva de postfix  “smtpd_sender_restrictions” lo lea de un archivo llamado “postfix_sender_restrictions.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 “postfix_restrict_inter.cf” y “postfix_restrict_local.cf” respectivamente.

Paso 2:

Crear el archivo “postfix_sender_restrictions.cf” :

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

Agregar las siguientes lineas:

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

En el archivo “postfix_recipient_restrictions.cf”  Agregar la siguiente linea debajo de “permit_mynetworks” (En Zimbra 8 este archivo esta en /opt/zimbra/conf/zmconfigd/smtpd_recipient_restrictions.cf)

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

Deberia quedar asi mas o menos:

%%contains VAR:zimbraServiceEnabled cbpolicyd, check_policy_service inet:localhost:@@cbpolicyd_bind_port@@%%
reject_non_fqdn_recipient
permit_mynetworks
check_sender_access hash:/opt/zimbra/conf/usuarios
check_sender_access hash:/opt/zimbra/conf/prohibido
reject_unlisted_recipient
%%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/usuarios

 

pepito@mydomain.com inter
luchito@mydomain.com local
 ................

 

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

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

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

y colocar esto dentro:

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

y colocar esto dentro:

check_recipient_access
hash:/opt/zimbra/conf/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/interno

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

dominio1.com.pe      ok
dominio2.com.pe   ok
#nano /opt/zimbra/conf/access

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

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

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

Paso 7.- Modificar la variable mynetworks a 127.0.0.0/8, 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'
$ postfix reload

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

#su - zimbra
$ zmmtactl restart