jueves, 18 de febrero de 2010

Borrar correos en cola Postfix

Me ha resultado muy útl el siguiente script. Ha sido la solución para borrar correos que me entraban de un servidor web comprometido. Me entraban con la dirección apache@dominio.com. con este script pasandole una dirección de correo, borra todos los correos en cola de dicha dirección.

#!/usr/bin/perl

$REGEXP = shift || die "no email-adress given (regexp-style, e.g. bl.*\@yahoo.com)!";

@data = qx;
for (@data) {
if (/^(\w+)(\*|\!)?\s/) {
  $queue_id = $1;
}
if($queue_id) {
 if (/$REGEXP/i) {
   $Q{$queue_id} = 1;
   $queue_id = "";
 }
}
}

#open(POSTSUPER,"|cat") || die "couldn't open postsuper" ;
open(POSTSUPER,"|postsuper -d -") || die "couldn't open postsuper" ;

foreach (keys %Q) {
print POSTSUPER "$_\n";
};
close(POSTSUPER);
Y si queremos ir más a piñón y borrar toda la cola...


/usr/sbin/postsuper -d ALL

lunes, 15 de febrero de 2010

Clusterizar SQUID con HeartBeat - OpenAis

Preparando el entorno

Doy por supuesto que esta instalado el pattern Cluster en Suse y todos los componentes de Heartbeat.

Preparamos el fichero /etc/hosts con los nodos
Es esencial que todos los miembros del cluster tengan resolución de nombres entre ellos. Si la resolución no funciona, la comunicación interna del cluster fallará.

Doy por supuesto que el provisionamiento de disco iscsi está configurado y accesible desde los nodos.

Configuramos OpenAIS

mediante el fichero /etc/ais/openais.conf en suse con yast cluster

aisexec {
group: root
user: root
}

service {
use_mgmtd: yes
use_logd: yes
ver: 0
name: pacemaker
}

totem {
rrp_mode: none
token_retransmits_before_loss_const: 10
join: 1000
max_messages: 20
vsftype: none
token: 5000
nodeid: 2
consensus: 2500
send_join: 45
secauth: off
version: 2

interface {
bindnetaddr: 192.168.20.0
mcastaddr: 226.94.1.1
mcastport: 5405
ringnumber: 0
}
clear_node_high_bit: no
}

logging {
to_file: no
to_syslog: yes
debug: off
timestamp: on
to_stderr: off
fileline: off
syslog_facility: daemon
}
amf {
mode: disabled
}
rcopenais start

Copiar el archivo de configuración /etc/ais/openais.conf en los demas nodos del cluster, sin olvidar de modificar el nodeID. Para arrancar OpenAIS desde la linea de comando, se puede usar rcopenais start.

Configurar el usuario hacluster.

Abrir YAST e ir a la sección “Security and Users”.
Abrir “User Management”; en la ventana “User and Group Administration”, hacer click en la lista “Set Filter” y seleccionar “System Users”.
Seleccionar el usuario“hacluster” e editarlo. En la nueva ventana indicar la contraseña de su elección e confirmarla.
Cerrar la ventana de “User Management”.


Configuracion del LVM


Editamos /etc/lvm/lvm.conf :


locking_type = 3

primitive dlm ocf:pacemaker:controld
primitive clvm ocf:lvm2:clvmd \
params daemon_timeout="30"
clone dlm-clone dlm \
meta target-role="Started" interleave="true" ordered="true"
clone clvm-clone clvm \
meta target-role="Started" interleave="true" ordered="true"
colocation colo-clvm inf: clvm-clone dlm-clone
order order-clvm inf: dlm-clone clvm-clone


Prepararamos el volumen físico:
pvcreate <physical volume path>

Creamos el volumen logico para el cluster:
vgcreate --clustered y <volume group name> <physical volume path>
lvcreate --name testlv -L 4G <volume group name>

Configuramos el recurso en el Cluster:

primitive vg1 ocf:heartbeat:LVM
params volgrpname="<volume group name>"
clone vg1-clone vg1
meta interleave="true" ordered="true"
colocation colo-vg1 inf: vg1-clone clvm-clone
order order-vg1 inf: clvm-clone vg1-clone

Configuramos el recurso IP:
























Configuramos el recurso SQUID:

primitive RECURS_SQUID lsb:squid
operations $id="RECURS_SQUID-operations"
op monitor interval="10s" timeout="30s" start-delay="10s"
params squid_exe="/usr/sbin/squid" squid_conf="/cluster/etc/squid/squid.conf" squid_pidfile="/cluster/var/run/squid.
pid" squid_port="3128"
meta target-role="started"

Vemos como queda:
============
Last updated: Tue Feb 16 12:38:51 2010
Current DC: smc-nid1 - partition with quorum
Version: 1.0.3-0080ec086ae9c20ad5c4c3562000c0ad68374f0a
2 Nodes configured, 2 expected votes
4 Resources configured.
============

Online: [ smc-nid1 smc-nid2 ]

Resource Group: Cluster_SVPROXADM
Cluster_FS (ocf::heartbeat:Filesystem): Started smc-nid1
RECURS_IP (ocf::heartbeat:IPaddr): Started smc-nid1
RECURS_SQUID (lsb:squid): Started smc-nid1
RECURS_DANSGUARDIAN (lsb:dansguardian): Stopped
Clone Set: dlm-clone
Started: [ smc-nid1 smc-nid2 ]
Clone Set: clvm-clone
Started: [ smc-nid1 smc-nid2 ]
Clone Set: vg1-clone
Started: [ smc-nid2 smc-nid1 ]

Referencias: http://www.novell.com/documentation/sle_ha/

Proxima misión... DANSGUARDIAN



viernes, 5 de febrero de 2010

Inserta codigo en un blog -Parse HTML-

Para añadir codigo en tu blog.

http://blogcrowds.com/resources/parse_html.php


Añadir una maquina virtual al Cluster de Xen






















Resumen XML
<primitive class="ocf" id="SLES10" provider="heartbeat" type="Xen">
<meta_attributes id="SLES10-meta_attributes"/>
<operations id="SLES10-operations">
<op id="SLES10-op-monitor-10" interval="10s" name="monitor" start-delay="120" timeout="60s"/>
<op id="SLES10-op-start" interval="0" name="start" timeout="60s"/>
<op id="SLES10-op-stop" interval="0" name="stop" timeout="300s"/>
<op id="SLES10-op-migrate_to" interval="0" name="migrate_to" timeout="90s"/>
</operations>
<instance_attributes id="SLES10-instance_attributes">
<nvpair id="nvpair-d1901952-f300-4438-8b59-7d6e6c9211ef" name="xmfile" value="/etc/xen/vm/sles10"/>
<nvpair id="nvpair-caa1fbc2-03b5-48e2-b924-20a6a8e8036f" name="allow-migrate" value="true"/>
</instance_attributes>
</primitive>


Definimos las operaciones standarts start, stop, monitor, migration con timings, y luego la localización del archivo de configuración de la maquina virtual XEN domU y habilitamos la migración en vivo (live migration).
Nota: El atributo allow_migrate presentado por el interface grafico ha de ser modificado y reemplazado por allow-migrate (valido en SLES 11).


Problema al arrancar Cluster OES modprobe

El otro día después de reiniciar uno de los nodos del cluster de OES2 SP2 los servicios de Cluster no estaban arrancados. Al arrancarlo a mano me daba el siguiente error:

svoes02:/o
pt/novell/nss/mnt/.pools # rcnovell-ncs start Starting Novell Cluster Services Mounting adminfs at /admin ... already mounted done /usr/sbin/rcnovell-ncs: line 71: 15991 Segmentation fault $NCS_BIN/ldncs failed


El problema lo detecte al hacer ps aux y ver que modprobe estaba consumiendo el 99 de CPU. Hice un kill SIGTERM del proceso y re arranqué el servico rcnovell-ncs start y funcionó perfectamente.

Sigo si saber porqué los modulos no se han cargado correctamente al arrancar el servidor. Tengo pendiente el report a Novell.