viernes, 31 de julio de 2009

Diversificacion de mercado

Esta entrada promete ser muy friki. Bombillas, extintores, detergentes, cafes... si esque hay que hacer negocio!

Es curioso entrar en un bazar chino y ver bombillas KDE.














Extintores Unix / firefox...




















Detergente Linux...


















O tomar un café Novell (NEC) Novell Enterprise Coffe.

miércoles, 1 de julio de 2009

Configurar discos LVM a manita (universal-mode ;) )

Definimos la particion como LinuxLVM (8E) con fdisk o cfdisk /dev/sdb

Creamos el Volumen físico
pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created

Añadimos y creamos el volumen group
vgcreate data /dev/sdb1

Verificamos con vgdisplay
o vgs
Creamos el volumen lógico en el vg /dev/data que hemos creado
lvcreate -L 19,90G -n /dev/data/var /dev/data

Formateamos con el sistema de ficheros que queramos
mkfs.resiserfs /dev/data/var

En fstab añadimos el punto de montaje
/dev/data/var /var reiserfs defaults 0 0

Y montamos el disco LVM
mount  /var

martes, 30 de junio de 2009

Tomcat SSL

keytool -genkey -alias tomcat -keyalg RSA

copiamos el keystore en por ejemplo /usr/share/tomcat6

Redirigimos el trafico del 8080 al conector ssl 8443 en el primer bloque y definimos el conector sslen el siguiente, todo esto en el fichero server.xml


No se ve bien por culpa de los "<"



Reiniciamos el server tomcat.

Bayes en Mysql + Mailscanner

Dependencias: perl-DBI and perl-DBD-MySQL

Datos:
SpamAssassin Bayes Database Name: sa_bayes
SpamAssassin
Bayes Database UserName: sa_user
SpamAssassin
Bayes Database Password: sa_password
Your database server’s real name: local_fqdn


Crear tabla bayes y usuario bayes desde phpmyadmin o consola
# mysql -u root -p #(some distros like redhat and clones have no password set by default.)
mysql> create database sa_bayes;
mysql> GRANT ALL ON sa_bayes.* TO sa_user@localhost IDENTIFIED BY 'sa_password';
mysql> GRANT ALL ON sa_bayes.* TO sa_user@local_fqdn IDENTIFIED BY 'sa_password';
mysql> GRANT ALL ON sa_bayes.* TO sa_user@remote_fqdn IDENTIFIED BY 'sa_password';
mysql> flush privileges;

Localizar el fichero bayes_mysql.sql

En sistemas RED HAT /usr/share/doc/spamassassin-%version%/sql/bayes_mysql.sql
Para Otros: find / -name bayes_mysql.sql

# mysql -u sa_user -p sa_bayes < /path/to/bayes_mysql.sql

Backup
sa-learn -p /path/to/spam.assassin.prefs.conf --backup > sa_bayes_backup.txt

Limpieza
sa-learn -p /path/to/spam.assassin.prefs.conf --clear #(entirely optional, incase you want to rollback)

cambios en spam.sassassin.prefs.conf
bayes_store_module Mail::SpamAssassin::BayesStore::SQL
bayes_sql_dsn DBI:mysql:**sa_bayes**:**localhost**
bayes_sql_username **sa_user**
bayes_sql_password **sa_password**
bayes_sql_override_username root

comentar
bayes_path /etc/MailScanner/bayes/bayes
bayes_file_mode 0660

Pasar el backup al mysql
# sa-learn -p /path/to/spam.assassin.prefs.conf --restore sa_bayes_backup.txt

Comprobar
# spamassassin -x -D -p /path/to/spam.assassin.prefs.conf --lint

parar y arrancar mailscanner

añadir cron
minute hour * * * /path/to/sa-learn --force-expire --sync -p /path/to/spam.assassin.prefs.conf

jueves, 25 de junio de 2009

Optimizar OpenLDAP (Indexación)

Para agilizar las búsquedas, debes de crear índices para los atributos comúnmente buscados, En OpenLDAP, no solo puedes elegir que atributos indexar, si no que también puedes elegir que tipo de búsquedas indexar, por ejemplo, si indexas el campo "mail", tienes la opción de crear índices para búsquedas de "precense (press), equiality (eq), approximate, y/o substrings (sub)".

Nota:
"The index directive of slapd.conf (or olcDbIndex in cn=config configurations) is only effective on initial load of the directory (using ldapadd). If indexes are subsequently changed the directory needs to be re-indexed using slapindex (caution: must stop slapd first)."

index objectClass,uidNumber,gidNumber eq
index member,mail eq,pres
index cn,displayname,uid,sn,givenname sub,eq,pres
index SuSEMailClient,SUSEMailAcceptAddress,zoneName eq
index SuSEMailDomainMasquerading,relativeDomainName,suseMailDomainType eq
index suseTLSPerSitePeer,SuSEMailTransportDestination eq
index sambaSID eq
index sambaPrimaryGroupSID eq
index sambaDomainName eq

jueves, 18 de junio de 2009

IOERROR: opening ... cyrus.header

IOERROR: opening /var/spool/imap/user/ferran^serafini/TEST_FOLDER/cyrus.header: No such file or directory

su - cyrus -c "/usr/lib/cyrus/bin/reconstruct -r -f user/ferran.serafini"

viernes, 5 de junio de 2009

Script Backup Servicios OpenLDAP, BIND, CYRUS, Configs...

Buscando como se hace una copia de seguridad de cada servicio, hice el siguiente script que monta un arbol de directorios bajo el directorio /backups con cada uno de los servicios:

/backups/infbcn01-fecha -> DNS ETC IMAP LDAP

* DNS: se guardan las zonas master & slave y la config del servicio
* ETC: se guarda todo el directorio /etc
* IMAP: se guardan todos los buzones, bds de cyrus y config
* LDAP: Extrae un ldif con todo el contenido del árbol

No es un script óptimo en sentido de espacio ya que ni si comprime ni distingue incrementalidad o diferencialidad. Pero funciona.


#!/bin/bash
###BACKUP infbcn01 -infmaster

B_DIR=/backups
DEST=$B_DIR/infbcn01-`date +%d%m%Y`
OLD_BK=/backups2
ldiff=$DEST/LDAP/backupMasterLDAP.ldif
BIND_DIR=/var/lib/named
CONF_ETC=/etc
MASTER_BIND_DIR=$BIND_DIR/master
SLAVE_BIND_DIR=$BIND_DIR/slave
B_CYR_VAR_SPOOL=$DEST/IMAP/SPOOL/VAR
CYR_VAR_SPOOL=/var/spool/imap
CYR_SRV_SPOOL=/srv/imap/user
B_CYR_SRV_SPOOL=$DEST/IMAP/SPOOL/SRV
CYR_LIB=/var/lib/imap
B_CYR_LIB=$DEST/IMAP/LIB
MBOXLIST=mailboxdb`date +%d%m%Y`.dump

mv $B_DIR/* $OLD_BK/
rm -fr $B_DIR/*

#Arbre de directoris
mkdir $DEST > /dev/null 2>&1
mkdir -p $DEST/LDAP > /dev/null 2>&1
mkdir -p $DEST/DNS > /dev/null 2>&1
mkdir -p $DEST/DNS/master > /dev/null 2>&1
mkdir -p $DEST/DNS/slave > /dev/null 2>&1
mkdir -p $DEST/ETC > /dev/null 2>&1
mkdir -p $DEST/IMAP > /dev/null 2>&1
mkdir -p $DEST/IMAP/SPOOL/VAR > /dev/null 2>&1
mkdir -p $B_CYR_LIB
mkdir -p $B_CYR_SRV_SPOOL

#LDAP
slapcat > $ldiff

#DNS
cp -rvp $MASTER_BIND_DIR/* $DEST/DNS/master/
cp -rvp $SLAVE_BIND_DIR/* $DEST/DNS/slave/

#CONFIGS
tar -cjf $DEST/ETC/etc.tar.bz2 $CONF_ETC

#CYRUS
rsync -avz --delete $CYR_LIB root@localhost:$B_CYR_LIB

#CYRUS MAILBOXES
rsync -avz --delete $CYR_VAR_SPOOL root@localhost:$B_CYR_VAR_SPOOL
rsync -avz --delete $CYR_SRV_SPOOL root@localhost:$B_CYR_SRV_SPOOL
su cyrus -c "/usr/lib/cyrus/bin/ctl_mboxlist -d > $DEST/IMAP/$mboxlist"

Sincroniza dos BIND DNS servers

Es comun en una red tener dos servers DNS. Una buena opción es configurar bind para que use el soporte LDAP y que cada server utilice el árbol para exportarse las zonas en su /var/lib/named pero si por comodidad o por imposibilidad no se puede recurrir al LDAP, mediante este script, se sincronizaria un servidor con el otro siempre y cuando se cree una relación de confianza ssh (ssh-keygen -t dsa ...) de uno al otro. (sinó te va a pedir el passwd de root 4 veces).

Pues esta historia comienza así:

#/bin/bash
CONFIG="/etc/named.conf"

ZONES="/var/lib/named"
DNS2="172.26.0.91"
LOGFILE="/var/log/syncdns.log"
echo -en '\E[0;32m'"\033[1m * \033[0m"
echo " Sincronitzant servidors DNS (localhost -> $DNS2)..."
ssh root@$DNS2 -C "/etc/init.d/named stop" >> $LOGFILE
scp -r $CONFIG root@$DNS2:$CONFIG >> $LOGFILE
scp -r $ZONES/master/* root@$DNS2:/var/lib/named/master/ >> $LOGFILE
scp -r $ZONES/slave/* root@$DNS2:/var/lib/named/slave/ >> $LOGFILE
echo -en '\E[0;32m'"\033[1m * \033[0m"
echo " Recarregant DNS $DNS2 ..."
ssh root@$DNS2 -C "/etc/init.d/named start" >> $LOGFILE