Está en la página 1de 9

Manual de Zimbra Open Source edition v 6.

Laboratorio 7
Mejora Anti SPAM y Respaldo de Zimbra
7.1- Scores de Spamassassin
Verefiquemos un mail que ha sido analizado por Spamassassin. Cualquier mail que pase por
Zimbra encontraremos en el cuerpo del mail algo como (el resto de headers no interesan ahora
mismo):
...
X-Spam-Flag: YES
X-Spam-Score: 10.565
X-Spam-Level: **********
X-Spam-Status: Yes, score=10.565 tagged_above=-10 required=4
tests=[BAYES_99=3.5, FH_HOST_ALMOST_IP=1.751, RCVD_IN_PBL=0.905,
RCVD_IN_SORBS_DUL=0.877, RCVD_IN_XBL=2.033, URIBL_SBL=1.499]
...
Este mail a sido detectado como Spam porque a recibido una puntuacin de 10.565. Dado que
esta puntuacin es mayor que required=4 se marca como spam. Los test que ha hecho
spamassessin para detectar que esto es una spam son: BAYES_99, FH_HOST_ALMOST_IP,
RCVD_IN_PBL, RCVD_IN_SORBS_DUL, RCVD_IN_XBL, URIBL_SBL. Cada uno de estos test
est configurado para recibir una puntuacin en caso de darse cierto el test.
En esta pagina podemos encontrar todos los tests, que hace cada uno de ello y la puntuacin que
recibe ---> http://spamassassin.apache.org/tests_3_2_x.html
Volviendo al problema, si un correo es detectado como spam tenemos 4 posibilidades:
1. Ir al Webmail Zimbra del usuario, entrar dentro de la carpeta Basura (Junk), seleccionar el correo
detectado como basura y pulsar sobre el botn "No basura".
2. Modificar los parmetros generales para especificar la puntuacin mnima para un spam.
3. Aadir al usuario a una lista blanca.
4. Modificar los scores para los diferentes test que hace el spamassessin.
La primera solucin parece la ms correcta porque le decimos a Zimbra que ese correo no lo
detecte como spam, pero en mi caso no funciona porque el 99% de los usuarios acceden por
Outlook y por tanto esta funcionalidad no la pueden usar.
Para la segunda opcin si ejecutamos "./zmprov gacf" o entramos en la Web de administracin de
Zimbra, tendremos dos parmetros por los cuales se define cuando un correo es spam. Estos dos
parmetros son:
zimbraSpamKillPercent: 75
zimbraSpamTagPercent: 20
El SpamTag define cuando un correo es considerado Spam y el otro cuando es considerado spam
y por tanto debe eliminarse directamente (no aparece ni en la carpeta Basura del usuario).
En ejemplo anterior son necesarios 4 puntos para marcar el correo como spam. Este valor sale de:
ZimbraSpamTagPercent * 20% = 20 * 0,2 = 4

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

Por el otro lado tenemos que 15 son los puntos necesarios para eliminar el correo:
ZimbraSpamKillPercent * 20% = 75 * 0,2 = 15
Por tanto cambiando el valor de estos dos parmetros (con el comando zmprov o desde la Web de
administracin) podemos cambiar el comportamiento del spam.
Para el tercer mtodo, aadiremos al remitente a una lista blanca. En mi caso tuve muchos
problemas con todos los mails que venian de empresas banneadas como spamers . Era necesario
evitar esto. Para ello hay que meter esos dominios dentro del archivo
$> vim /opt/zimbra/conf/spamassassin/60_whitelist.cf
Hay que aadir al final del archivo algo como esto y reiniciar Zimbra:
def_whitelist_from_rcvd *@*.empresaNoSpamer.net empresaNoSpamer.net
Recomiendo echar un vistazo a todos los archivos de esta carpeta.
Para finalizar, la cuarta opcin es modificar los scores directamente dependiendo de nuestras
necesidades. Para ello necesitamos saber que scores cambiar y que es lo que hace ese test para
recibir ese score. Si editamos /opt/zimbra/conf/spamassession/50_scores.cf podremos ver las
diferentes puntuaciones asignadas a las tests.
Por ejemplo, dado la naturaleza de mis correos, muchos correos se envan por el asunto en
maysculas o sin asunto y el spamassession le asigna un puntuacin un poco alta. Entonces lo
que podemos hacer es (por ejemplo) bajar un punto a las pruebas MISSING_SUBJECT y
SUBJ_ALL_CAPS.
Ahora solo tendremos que reiniciar el Zimbra y hacer una prueba para ver como cambian las
puntuaciones en el mail sin nuestras modificaciones y con las nueva modificaciones

7.1- Manejo de Listas Blancas y Negras en amavis


A veces los filtros de listas blancas y negras en spamassassin, no son muy efectivos, podemos
configurar los mismo en el filtro de contenido que en este caso es Amavis, para sto vamos al
archivo de configuracin de amavis.
$> vim /opt/zimbra/conf/amavisd.conf.in
# Lista Blanca de Usuarios y Dominios
283:

'pepito@hotmail.com'

=> -3.0,

284:

'.sunat.gob.pe'

=> -3.0,

# Lista negra de Usuarios y Dominios


288:

'spamcito@hotmail.com'

=> 15.0,

289:

'.creativamarketing.info'

=> 15.0,

$> su zimbra

$> zmamavisdctl restart


Av Canad 3925 Telfono: 6155900 Anexo: 101
capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

7.2- Manejo de Listas Blancas y Negras en postfix


Como postfix es el primero que filtra los correos a veces un dominio o remitente es rechazado por
el mismo, se puede establecer un esquema de listas blancas que no sea afectado por los RBL y un
esquema de filtro por evaluacin de las cabeceras

7.2.1.- Lista Blanca de Dominios e Ips en Postfix


$> su - zimbra
$> vim /opt/zimbra/conf/postfix_rbl_override
190.81.110.51 OK
200.42.67.54 OK
mail.dominio8.com OK
$> postmap /opt/zimbra/conf/postfix_rbl_override
$> vim /opt/zimbra/conf/postfix_recipient_restrictions.cf
reject_unauth_destination
check_client_access hash:/opt/zimbra/conf/postfix_rbl_override
reject_unlisted_recipient
$> zmmtactl restart

7.2.2.- Lista Negra, filtros de cabecera en Postfix


Ir al panel de Administracin de Zimbra,
Configuracin General Archivos adjuntos y deshabilitar la opcin
Enviar notificacin de extensin bloqueada al destinatario

$> su - zimbra
$> vim /opt/zimbra/conf/postfix_header_checks.in
5:/^Subject: .*(Free Money|Viagra|Enlarge Penis)/ REJECT Spam Header Rule #44
6:/^Subject: .*(Publicidad|P u b l i c i d a d|Pub1icidad)/ REJECT Spam Header Rule #45
7:/^From: .*\.info/ REJECT Root Spammer Domain Rule # 46
8:/^From: .*(avancevertical|creativamarketing|publicidad)/ REJECT Spammer Domain Rule # 47
$> zmmtactl restart

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

7.3- Restriccin de Envo y Recepcin en Postfix


A veces es necesario aplicar filtros de envo y recepcin como forma de implementar polticas de
correo de la empresa. Ej: queremos que un usuario solo pueda hacer envos a los usuarios de l
propio dominio.
Otro ejemplo es que cuando implementamos una lista queremos que esta lista no reciba ningn de
correo de un dominio externo.

7.3.1- Restriccin de Envo en Postfix


Ej: Haremos que el usuario windozero solo pueda enviar correos al propio dominio.
$> su - zimbra
Agregamos al inicio del archivo que verifica los recipient restriction en postfix
$> vim /opt/zimbra/conf/postfix_recipient_restrictions.cf
check_sender_access hash:/opt/zimbra/postfix/conf/restricted_senders
Creamos el archivo donde restringiremos a los usuarios, en este caso a windozero
$> vi /opt/zimbra/postfix/conf/restricted_senders
windozero@dominio8.com
local_only
Agregamos en la lnea 128 en el archivo que configura el MTA, amavis, etc para agregar la clase
definida local_only
$> vim /opt/zimbra/conf/zmmta.cf
128: POSTCONF smtpd_restriction_classes
local_only
129: POSTCONF local_only
FILE postfix_check_recipient_access.cf
Creamos el archivo donde ser verificar los dominios locales vlidos
$> vim /opt/zimbra/conf/postfix_check_recipient_access.cf
check_recipient_access hash:/opt/zimbra/postfix/conf/local_domains, reject
Creamos el archivo donde se listan los dominios vlidos a los que pueden
enviar los usuarios restringidos
$> vim /opt/zimbra/postfix/conf/local_domains
dominio8.com
OK
Creamos la bases de datos con postmap y reiniciar el servidor MTA
$> postmap /opt/zimbra/postfix/conf/restricted_senders
$> postmap /opt/zimbra/postfix/conf/local_domains
$> zmmtactl stop
$> zmmtactl start

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

7.3.1- Restriccin de Recepcin en Postfix


Ej: Creamos la lista de correo todos@dominio8.com con todos los usuarios del dominio. Lo que
queremos es evitar que un usuario ej: pepito@hotmail.com envie correos a todos@dominio8.com
y le llegue a los usuarios, ya que esta lista de correo la queremos manejar solamente de forma
interna, o para hacer SPAM xD :P
$> su zimbra
Lo primero que hacemos es crear el archivo permited_senders, aqu se edita y coloca los usuarios
que pueden mandar a la lista
$> vim /opt/zimbra/postfix/conf/permitted_senders
tuxito@dominio8.com OK
Luego se crea el archivo protected_recipients y se coloca la lista de correo
$> vim /opt/zimbra/postfix/conf/protected_recipients
todos@dominio8.com

permitted_senders_list

Luego creamos las bases de datos


$> postmap /opt/zimbra/postfix/conf/permitted_senders
$> postmap /opt/zimbra/postfix/conf/protected_recipients
Ahora vemos que se crearon los archivos permitted_senders.db and protected_recipients.db en el
directorio
Agregamos las siguientes lineas al main.cf
$> vim /opt/zimbra/postfix/conf/main.cf
permitted_senders_list = check_sender_access hash:/opt/zimbra/postfix/conf/permitted_senders, reject
smtpd_restriction_classes = permitted_senders_list

Ahora agregamos la nueva restriccion en la primera lnea en el archivo


postfix_recipient_restrictions.cf
#vim /opt/zimbra/conf/postfix_recipient_restrictions.cf
check_recipient_access hash:/opt/zimbra/postfix/conf/protected_recipients
Y por ultimo reiniciamos
$> zmmtactl stop
$> zmmtactl start

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

7.4.- Respaldo y Restauracin en Zimbra


El backup que vamos a realizar es de todo el directorio /opt que contiene los datos y
configuraciones de todas las cuentas y del servidor, la idea es que este backup se realize una vez
al da en la madrugada y vaya generando archivos comprimidos con el da del backup, estos
archivos luego pueden ser copiado a un disco externo o un dispositivo de cintas.

7.4.1.- Respaldo de Zimbra


$> su Creamos el directorio del backup, esto puede ser una particin de un disco dedicado solo a backup
$> mkdir /opt/backup
Creamos el directorio del script de backup
$> mkdir /scripts
$> vim /scripts/backupzimbra.sh
#!/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
# Outputs the time the backup started, for log/tracking purposes
echo Time backup started = $(date +%T)
before="$(date +%s)"
# 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/ /opt/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.

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

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="`
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/ /opt/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 > /opt/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"
Av Canad 3925 Telfono: 6155900 Anexo: 101
capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

Manual de Zimbra Open Source edition v 6.0

# Create archive of backed-up directory for offsite transfer


# cd /backup/zimbra
tar -zcpvf /opt/backup/zimbra-`date +%Y-%m-%d`.tar.gz /opt/backup/zimbra
# Transfer file to backup server
#ncftpput -u <username>
/tmp/mail.backup.tgz

-p

<password>

<ftpserver>

/<desired

dest.

# 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"
Damos permisos al script de backup y lo ejecutamos
$> chmod 755 /scripts/backupzimbra.sh
$> /scripts/backupzimbra.sh
Vemos que se generar un archivo /opt/backup/zimbra-fechadehoy.tar.gz

7.4.2.- Restauracin de Zimbra


Restauramos uno de los ltimos backups, antes que el servidor se muriera
$> su $> service zimbra stop
$> cd /opt
$> mv zimbra zimbra_fail
$> tar -zxpvf /opt/backup/zimbra-fechadehoy.tar.gz

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

directory>

Manual de Zimbra Open Source edition v 6.0

7.4.3.- Programacin del backup


Vamos a programar en el cron el backup de zimbra, para que se ejecute todos los dias a la 11 p.m.
$> su $> crotab -e
0

23

/scripts/backupzimbra.sh

Av Canad 3925 Telfono: 6155900 Anexo: 101


capacitacin@perulinux.com.pe
http://www.perulinux.com.pe

También podría gustarte