Buscar este blog

miércoles, 21 de septiembre de 2011

blogger-droid blogeando desde Android

Desde hace unas semanas tengo un telefono con Android, con este utilizo Twitter, Google +, Facebook, Internet y otras aplicaciones. Y por que no posteo en Blogger también??, y hay un aplicación para esto en market de Android y se llama Blogger-droid, de echo este post está realizado en está aplicación.
La puedes descargar desde http://market.android.com/details?id=and.blogger
Published with Blogger-droid v1.7.4

martes, 19 de abril de 2011

Zimbra: Como proteger listas de correo de usuarios de otros dominio


En la consola de administración de Zimbra se pueden crear listas de correo que no son otra cosa que un alias que entrega el o los mensajes a varios usuarios.

Con el fin de que sea mas facil el enviar mensajes masivos, muchos optamos por la practica de crear un alias llamado todos@midominio.com en el cual estarán como miembros todas las direcciones de correo de nuestros usuarios. Pero deben imaginar que sucedería si uno o varios spammers envían sus mensajes a esta lista.

Para evitar esto ultimo se puede optar por configurar postfix para que proteja el alias. Lo hacemos de la siguiente manera como usuario zimbra:
su - zimbra

Creamos el archivo /opt/zimbra/postfix/conf/remitentes_permitidos que contenga:

localhost OK
midominio.ec OK
mail.midominio.ec OK
razametal@dominio.com OK

Con esto quiero decir que voy a permitir los remitentes de localhost, midominio.ec, mail.midominio.ec y razametal@dominio.com, esta ultima linea la he agregado para mas adelante poder hacer pruebas de funcionamiento.
Creamos el archivo /opt/zimbra/postfix/conf/destinatarios_protegidos que contenga:


todos@midominio.ec                  lista_remitentes_permitidos
usuario-protegido@midominio.com     lista_remitentes_permitidos

Creamos un script en bash /opt/zimbra/postfix/conf/actualizar_destinatarios_protegidos para actualizar la lista de destinatarios protegidos, el archivo debe contener:

#!/bin/bash
echo "actualizando remitentes_permitidos ..."
postmap /opt/zimbra/postfix/conf/remitentes_permitidos
echo "actualizando destinatarios_protegidos ..."
postmap /opt/zimbra/postfix/conf/destinatarios_protegidos

Este script lo ejecutaremos cada vez que hagamos una modificacion en los archivos destinatarios_protegidos y remitentes_permitidos.
Hacemos el script ejecutable y lo ejecutamos, esto nos creara dos archivos nuevos con extension .db dentro de /opt/zimbra/postfix/conf/ :


chmod a+x /opt/zimbra/postfix/conf/actualizar_destinatarios_protegidos
/opt/zimbra/postfix/conf/actualizar_destinatarios_protegidos

Ahora es tiempo de modificar la configuracion de postfix en /opt/zimbra/postfix/conf/main.cf agregamos las siguientes lineas al final del archivo:

lista_remitentes_permitidos = check_sender_access hash:/opt/zimbra/postfix/conf/remitentes_permitidos, reject
smtpd_restriction_classes = lista_remitentes_permitidos

Agregamos al inicio del archivo /opt/zimbra/conf/postfix_recipient_restrictions.cf :

check_recipient_access hash:/opt/zimbra/postfix/conf/destinatarios_protegidos

Reiniciamos postfix:


postfix reload

Ahora debemos probar si funciona, hacemos telnet a nuestro servidor y probamos con el usuario razametal@dominio.com que se encuentra en la lista de remitentes permitidos:


Connected to mail.midominio.ec
Escape character is '^]'.
220 mail.midominio.ec ESMTP Postfix
HELO gmail.com
250 mail.midominio.ec
mail from: razametal@dominio.com
250 2.1.0 Ok
rcpt to: todos@midominio.ec
250 2.1.5 Ok
quit
221 2.0.0 Bye

Ahora probamos con un remitente que no se encuentre en la lista de permitidos:

Connected to mail.midominio.ec
Escape character is '^]'.
220 mail.midominio.ec ESMTP Postfix
HELO gmail.com
250 mail.midominio.ec
mail from: prueba@gmail.com
250 2.1.0 Ok
rcpt to: todos@midominio.ec
554 5.7.1 : Recipient address rejected: Access denied
quit
221 2.0.0 Bye

Para agregar remitentes/dominio modificamos como usuario zimbra los archivos:

/opt/zimbra/postfix/conf/remitentes_permitidos
/opt/zimbra/postfix/conf/destinatarios_protegidos

Luego se ejecuta el script para actualizar los archivos .db de postfix:

/opt/zimbra/postfix/conf/actualizar_destinatarios_protegidos

Y finalmente reiniciamos postfix:

postfix reload

Ahora todos@midominio.ec solo estara disponible para los remitentes_permitidos.



 via http://www.ecualug.org 

http://www.ecualug.org/2009/10/11/blog/razametal/zimbra_como_proteger_listas_de_correo_de_usuarios_de_otros_dominios

gracias RazaMetaL

martes, 15 de marzo de 2011

Respaldo Zimbra Community

Buscando como respaldar el servidor Zimbra en su versión libre Community, encontré una serie de script de los cuales hay unos bastante complejos y otros muy simples, la cuestión es que todos hacen lo mismo y casi de la misma manera.
En mi caso me quede con un script de Daniel W. Martin, creado el 05 de diciembre 2008, el cual en si es bastante simple.
lo traduje y le genere un para de cambios los que dan mayor control sobre el proceso.
El script básicamente hace lo siguiente:
  1. realiza un backup en caliente con rsync de /opt/zimbra en /backup
  2. baja los servicios Zimbra
  3. realiza un backup en frio con rsync de /opt/zimbra en /backup
  4. levanta los servicios Zimbra
  5. comprime el directorio /backup
  6. envía por ftp el archivo compreso a un storage remoto
en estos momentos estoy respaldando 130 GB (opt/zimbra), 295 cuentas, con rsync, que quedan en 50 GB comprimidos, lo que tarda 6 horas con la transferencia al FTP incluida.

lo ideal es disponer de un disco dedicado a esta función en el servidor o conectado a un stotage externo.

este es el script:

#!/bin/bash

# script backupzimbra
# Zimbra Backup Script semanal
# Este script está diseñado para ejecutarse desde el crontab como root
# De uso libre y sin ningún tipo de garantía! Daniel W. Martin, 05 de diciembre 2008
# modificado y traducido por Marco Acevedo, 07, enero, 2011.
# la linea de ejecucuion debe ser algo asi /dir_donde_dejas_los_script/backupzimbrasem >> /backup/backupzimbra.log
# esto es para dejar un log de cada respaldo

# MAC se agrega calculo de duracion para cada proceso 15/03/2011

echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
start_date="$(date +%F)"
dia_sem="$(date +%a)"
# Salidas del inicio de la copia de seguridad, para fines de registro y seguimiento
echo Hora de inicio de copia de seguridad = $start_date at $(date +%T)
before="$(date +%s)"
# rm -rvf /backup/zimbra/*

# sincronizacion en caliente antes de detener Zimbra, para minimizar el tiempo d sincronizació
# con los servicios abajo
# Comentar la linea siguiente si quieres probar un solo sincronizacion en frío
before2="$(date +%s)"
rsync -ahHK --stats --delete /opt/zimbra/ /backup/zimbra
# Calculo y resultados, cantidad de tiempo que tarda el respaldo en caliente
after="$(date +%s)"
elapsed="$(expr $after - $before2)"
hours=$(($elapsed / 3600))
elapsed=$(($elapsed - $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed - $minutes * 60))
echo el backup en caliente tardo: "$hours horas $minutes minutos $seconds segundos"


# which is the same as: /opt/zimbra /backup
# Incluye la opcion --delete elimina de los archivos de la carpeta destino que no existen e el origen
# esto impide que los respaldos se inflen con contenido que no existe

# Ahora detendremos Zimbra para sincronizar los archivos que estaban o están bloqueados para rsync
# mientras el servicio estaba en marcha
before2="$(date +%s)"

# Detener los servicios de Zimbra
su - zimbra -c "/opt/zimbra/bin/zmcontrol stop"
echo espertando
sleep 20
echo termino de espera

# Mata todos los procesos huérfanos Zimbra
kill -9 `ps -u zimbra -o "pid="`
# Solo habilitar el siguiente comando si necesita matar a todos los procesos de usuario
# propieda de Zimbra antes de la sincronizacion
# ps auxww | awk '{print $1" "$2}' | grep zimbra | kill -9 `awk '{print $2}'`

# Sincronizar el directorio de copia de seguridad
rsync -ahHK --stats --delete /opt/zimbra/ /backup/zimbra

# Reiniciar los servicios de Zimbra
su - zimbra -c "/opt/zimbra/bin/zmcontrol start"

# Calculo y resultados, cantidad de tiempo que el servidor estabo fuera de servicio
after="$(date +%s)"
elapsed="$(expr $after - $before2)"
hours=$(($elapsed / 3600))
elapsed=$(($elapsed - $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed - $minutes * 60))
echo Servidor estubo abajo por: "$hours horas $minutes minutos $seconds segundos"

# Crea un archivo txt en el directorio copia de seguridad que contiene la actual
# version del servidor. Util para saber en que version de Zimbra se puede restaurar la copia seguridad
su - zimbra -c "zmcontrol -v > /backup/zimbra/conf/zimbra_version.txt"
# o examinar su /opt/zimbra/.install_history

# Mostrar estado de servicios de Zimbra
echo "Mostrando estado de servicios de Zimbra ..."
su - zimbra -c "/opt/zimbra/bin/zmcontrol status"

# Crear archivo de un directorio de copia de seguridad para la transferencia fuera del sitio
# cd /backup/zimbra
echo "Creacion de archivo tar ${dia_sem}-mail.yolito.cl.tgz"
tar zcf /backup/${dia_sem}-mail.yolito.cl.tgz /backup/zimbra
echo "Compresion terminada"
# rm -rf /backup/zimbra/*

# envio del tgz al storage de backup y posterior borrado del archivo tgz de origen
before2="$(date +%s)"
echo Inicio de envio por FTP a Storage de backup del archivo ${dia_sem}-mail.yolito.cl.tgz
ncftpput -u sistemas -S .tmp -p otiloy 10.10.10.4 /Volume_1/sistemas/zimbra/ /backup/${dia_sem}-mail.yolito.cl.tgz
if [ "$?" = "0" ]; then
echo Envio terminado con exito
echo "BORRANDO ANRCHIVO ${dia_sem}-mail.yolito.cl.tgz"
# rm -rf /backup/*.tgz
else
echo "******** PROCESO TERMINO CON ERROR $? ********"
# Calculo y resultados, cantidad de tiempo que tarda el la transferencia FTP
after="$(date +%s)"
elapsed="$(expr $after - $before2)"
hours=$(($elapsed / 3600))
elapsed=$(($elapsed - $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed - $minutes * 60))
echo La transferencia FTP tardo: "$hours horas $minutes minutos $seconds segundos"
fi

# Salidas de tiempo de la copia de seguridad terminada
# echo "Tiempo de copia de seguridad terminada = $(date +%T)"

# Calculo y salidas de tiempo total
after="$(date +%s)"
elapsed="$(expr $after - $before)"
hours=$(($elapsed / 3600))
elapsed=$(($elapsed - $hours * 3600))
minutes=$(($elapsed / 60))
seconds=$(($elapsed - $minutes * 60))
echo Tiempo empleado: "$hours horas $minutes minutos $seconds segundos"
echo xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
echo

espero que les sirva