Mantenimiento de la base de datos de WordPress

Es conveniente realizar periódicamente tareas de mantenimiento con la base de datos MySQL de WordPress, sobre todo si nuestro sitio tiene mucho movimiento en cuanto a comentarios y recepción/filtrado de spam con Akismet. En su día os recomendé los plugins WP-Optimize y Clean Options, que nos vienen genial para optimizar la base de datos con un click y limpiar registros huérfanos de la tabla wp_options.

En esta entrada me voy a centrar sobre todo en la tabla wp_commentmeta. Esta tabla contiene registros con meta datos de los comentarios, sobre todo información relacionada con el plugin Akismet. Para que os hagáis una idea, en un blog con mucho movimiento de comentarios y también recepción de spam la tabla pesaba nada más y nada menos que 50 megas. Todo ese contenido era completamente prescindible como vamos a ver a continuación.

Lo primero que debemos hacer es un backup de la base de datos antes de tocar nada. Después, con esta primera sentencia SQL vemos el número de registros que podemos eliminar de la tabla:

SELECT * FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments)

Básicamente muestra los registros con meta datos de comentarios eliminados, de los cuales se sigue almacenando la información. Cuando nos cercioremos de que efectivamente hacen referencia al plugin Akismet, comentarios eliminados, etc podemos proceder a eliminarlos:

DELETE FROM wp_commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM wp_comments);

Además de esta SQL, podemos ejecuta una que elimine los registros con la meta_key akismet:

SELECT * FROM wp_commentmeta WHERE meta_key LIKE "%akismet%"
DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet%';

Después, ejecutad un optimize de la tabla con un mysqlcheck y veréis que se ha reducido su tamaño probablemente en un 99%. Finalmente, habrá que tener en cuenta hacer estas tareas de forma periódica ya que Akismet seguirá escribiendo registros en esa tabla según sigamos recibiendo Spam.

Eliminar cola de mensajes QMail Plesk

En primer lugar comprobamos el número de mensajes en la cola mediante la herramienta qmail-qstat:

# /var/qmail/bin/qmail-qstat
messages in queue: 13221
messages in queue but not yet preprocessed: 64

Para eliminar los mensajes deberemos parar el servicio qmail:

service qmail stop

Una vez el servicio está parado ejecutamos los siguientes comandos en orden. Dependiendo del número de mensajes en cola puede tardar un poco:

find /var/qmail/queue/mess -type f -exec rm {} ;
find /var/qmail/queue/info -type f -exec rm {} ;
find /var/qmail/queue/local -type f -exec rm {} ;
find /var/qmail/queue/intd -type f -exec rm {} ;
find /var/qmail/queue/todo -type f -exec rm {} ;
find /var/qmail/queue/remote -type f -exec rm {} ;

Para acabar volvemos a arrancar el servicio de correo y comprobamos nuevamente la cola para verificar que se hayan eliminado:

service qmail start

Detectar si se está realizando envíos de Spam desde Qmail

Lo primero que tendremos que hacer es conectarnos por consola a nuestro servidor por medio de algún programa SSH como puede ser Putty. Una vez dentro el siguiente paso será consultar las estadísticas de Qmail para ver el número de mensajes que hay en cola. Esto se realiza con el siguiente comando:

/var/qmail/bin/qmail-qstat

El resultado que obtendríamos sería algo parecido a lo siguiente:

# /var/qmail/bin/qmail-qstat

messages in queue: 975

messages in queue but not yet preprocessed: 0

Esto nos indica que tenemos 975 mensajes en cola que aún no han sido procesados. El siguiente paso será ver el listado de todos los que están en la cola pendiente de ser enviados. Esto lo podemos hacer de la siguiente forma:

/var/qmail/bin/qmail-qread

Esto nos mostrará un listado con registros parecidos al ejemplo que os ponemos a continuación:

30 Jan 2013 12:23:36 GMT #69238542 840 <nombre@nombre-dominio.com>

remote nombre@otro-dominio.com

En la cadena anterior, lo más importante es el identificador del mail. Este identificador corresponde al que aparece al lado del símbolo “#”, en nuestro caso 69238542.

Una vez que hemos visto sospechoso este correo, el siguiente paso es localizar la ubicación del mismo. Para ello utilizamos el comando “find”.

find /var/qmail/queue/mess/ -name 162504751

La ejecución de la instrucción anterior nos devolverá la ruta dónde está ese mensaje, en nuestro ejemplo sería:

/var/qmail/queue/mess/22/162504751

En este archivo podremos ver la información correspondiente al mensaje y podremos obtener el ppid del usuario que lo ha enviado. Para ver la información del fichero podemos hacer uso del comando “cat” o “more”.

more /var/qmail/queue/mess/22/162504751

De la información que nos muestra nos quedamos con la parte de la etiqueta “Received”

Received: (qmail 28319 invoked by uid 10007); 30 Jan 2013 12:20:58 +0100

Esa información nos indica que el correo con id 28319 ha sido enviado por el usuario (uid) 10003. Sabiendo el id del usuario es hora de localizar quien está haciendo ese envío, para ello ejecutamos la siguiente instrucción:

cat /etc/passwd | grep 10007

De esta forma sabremos quien ha realizado el envío y podremos tomar las medidas necesarias para solucionar este problema.

Cómo: Crear mediante programación un objeto de conjunto de datos jerárquicos con ADO.NET en Visual Basic .NET

Imports System
Imports System.Data
Imports System.XML

 

Dim myDS As New Data.DataSet(«CusOrd»)
Dim myCustomers As Data.DataTable = myDS.Tables.Add(«Customers»)
Dim myOrders As Data.DataTable = myDS.Tables.Add(«Orders»)
Dim myDr As Data.DataRow

With myCustomers
.Columns.Add(«CustomerID», Type.GetType(«System.String»))
.Columns.Add(«CompanyName», Type.GetType(«System.String»))
.Columns.Add(«ContactName», Type.GetType(«System.String»))
End With

With myOrders
.Columns.Add(«OrderID», Type.GetType(«System.Int32»))
.Columns.Add(«CustomerID», Type.GetType(«System.String»))
.Columns.Add(«EmployeeID», Type.GetType(«System.Int32»))
.Columns.Add(«OrderDate», Type.GetType(«System.DateTime»))
.Columns.Add(«RequiredDate», Type.GetType(«System.DateTime»))
End With

myDS.Relations.Add(«rel_Customers_Orders», _
myDS.Tables(«Customers»).Columns(«CustomerID»), _
myDS.Tables(«Orders»).Columns(«CustomerID»))

myDr = myCustomers.NewRow()
myDr(«CustomerID») = «9876»
myDr(«CompanyName») = «Lucerne Publishing»
myDr(«ContactName») = «Kim Ralls»

myCustomers.Rows.Add(myDr)

myDr = myOrders.NewRow()
myDr(«OrderID») = 6521
myDr(«CustomerID») = «9876»
myDr(«EmployeeID») = 852
myDr(«OrderDate») = #1/5/2002#
myDr(«RequiredDate») = #2/1/2002#
myOrders.Rows.Add(myDr)

Console.WriteLine(myDS.GetXml())

http://support2.microsoft.com/kb/316260/es

Fragmento de la última carta de Albert Einstein a su hija

FRAGMENTO DE LA ULTIMA CARTA DE EINSTEIN A SU HIJA

Cuando propuse la teoría de la relatividad, muy pocos me entendieron, y lo que te revelaré ahora para que lo transmitas a la humanidad también chocará con la incomprensión y los perjuicios del mundo.

Te pido aun así, que la custodies todo el tiempo que sea necesario, años, décadas, hasta que la sociedad haya avanzado lo suficiente para acoger lo que te explico a continuación.

Hay una fuerza extremadamente poderosa para la que hasta ahora la ciencia no ha encontrado una explicación formal. Es una fuerza que incluye y gobierna a todas las otras, y que incluso está detrás de cualquier fenómeno que opera en el universo y aún no haya sido identificado por nosotros. Esta fuerza universal es el amor.

Cuando los científicos buscaban una teoría unificada del universo olvidaron la más invisible y poderosa de las fuerzas.

El amor es luz, dado que ilumina a quien lo da y lo recibe. El amor es gravedad, porque hace que unas personas se sientan atraídas por otras. El amor es potencia, porque multiplica lo mejor que tenemos, y permite que la humanidad no se extinga en su ciego egoísmo. El amor revela y desvela. Por amor se vive y se muere. El amor es Dios, y Dios es amor.

Esta fuerza lo explica todo y da sentido en mayúsculas a la vida. Ésta es la variable que hemos obviado durante demasiado tiempo, tal vez porque el amor nos da miedo, ya que es la única energía del universo que el ser humano no ha aprendido a manejar a su antojo.

Para dar visibilidad al amor, he hecho una simple sustitución en mi ecuación más célebre. Si en lugar de E= mc2 aceptamos que la energía para sanar el mundo puede obtenerse a través del amor multiplicado por la velocidad de la luz al cuadrado, llegaremos a la conclusión de que el amor es la fuerza más poderosa que existe, porque no tiene límites.

Tras el fracaso de la humanidad en el uso y control de las otras fuerzas del universo, que se han vuelto contra nosotros, es urgente que nos alimentemos de otra clase de energía. Si queremos que nuestra especie sobreviva, si nos proponemos encontrar un sentido a la vida, si queremos salvar el mundo y cada ser sintiente que en él habita, el amor es la única y la última respuesta.

Quizás aún no estemos preparados para fabricar una bomba de amor, un artefacto lo bastante potente para destruir todo el odio, el egoísmo y la avaricia que asolan el planeta. Sin embargo, cada individuo lleva en su interior un pequeño pero poderoso generador de amor cuya energía espera ser liberada.

Cuando aprendamos a dar y recibir esta energía universal, querida Lieserl, comprobaremos que el amor todo lo vence, todo lo trasciende y todo lo puede, porque el amor es la quintaesencia de la vida.

Lamento profundamente no haberte sabido expresar lo que alberga mi corazón, que ha latido silenciosamente por ti toda mi vida. Tal vez sea demasiado tarde para pedir perdón, pero como el tiempo es relativo, necesito decirte que te quiero y que gracias a ti he llegado a la última respuesta.

Tu padre. ( Albert Einstein)

Cómo cambiar la clave de producto de licencias por volumen en un equipo basado en Windows XP o en Windows Server 2003

1. Haga clic en Inicio y en Ejecutar, escriba regedit y haga clic en Aceptar.
2. En el panel izquierdo, busque la siguiente subclave del Registro y haga clic en ella:
HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrent VersionWPAEvents

3. En el panel derecho, haga clic con el botón secundario en OOBETimer y, a continuación, haga clic en Modificar.
4.Cambie al menos un dígito del valor OOBETimer para desactivar Windows.
5. Haga clic en Inicio y en Ejecutar, escriba el comando siguiente y haga clic en Aceptar:
%systemroot%system32oobemsoobe.exe /a

6. Haga clic en Sí, deseo llamar por teléfono a un representante de servicios al cliente para activar Windows y, después, haga clic en Siguiente.
7. Haga clic en Cambiar la clave de producto, escriba la nueva clave del producto en los cuadros Nueva clave y haga clic en Actualizar.

Nota: si vuelve a aparecer la pantalla anterior del Asistente para activación, haga clic en Recordármelo más tarde y reinicie el equipo.
8. Repita los pasos 6 y 7 para comprobar que Windows está iniciado. Cuando reciba el mensaje siguiente, haga clic en Aceptar:
Windows ya está activado. Haga clic en Aceptar para salir.

9. Instale los Service Pack de Windows que desee.

Nota: si no puede reiniciar Windows después de instalar un Service Pack, presione F8 cuando reinicie el equipo, haga clic en Última configuración válida conocida y repita este procedimiento.

http://support.microsoft.com/kb/918342/es

Configurar smtp, pop e imap en Hotmail, Gmail y Yahoo

Mucha gente prefiere usar un cliente de correo local para leer el correo que el navegador, si tienes una cuenta tipo Hotmail, Gmail o Yahoo tendrás que configurar los servicios SMTP y POP o IMAP para poder usarlos desde el cliente de correo local.

En las propias páginas web de estos clientes de correo web podemos encontrar la información necesaria, en la mayoría de clientes encontrareis en el menú superior con un botón que suele ser algo tipo Herramientas -> Añadir Cuenta, se os abrirá una ventana donde tendréis que ir completando los datos que os pongo a continuación.

En los datos que os encontrareis debajo tenéis la opción de configurar vía IMAP y vía POP, si soléis estar siempre conectados a Internet os recomiendo IMAP ahora si os conectáis esporadicamente para descargar el correo nuevo, la mejor opción es POP.

Configurar cuenta de Gmail

• Servidor IMAP: imap.gmail.com
Usar SSL: Sí
Puerto: 993
•Servidor POP: pop.gmail.com
Usar SSL: Sí
Puerto: 995
•Servidor SMTP: smtp.gmail.com
Usar autenticación: Sí
Usar SSL: Sí
Puerto: 465 o 587
•Nombre de cuenta: usuario@gmail.com
Dirección de correo electrónico: usuario@gmail.com
Contraseña: Su contraseña

Configurar cuenta de Hotmail

•Servidor IMAP: No tiene
•Servidor POP: pop3.live.com
Usar SSL: Sí
Puerto: 995
•Servidor SMTP: smtp.live.com
Usar autenticación: Sí
Usar SSL: Sí
Puerto: 25
•Nombre de cuenta: usuario@hotmail.com
Dirección de correo electrónico: usuario@hotmail.com
Contraseña: Su contraseña

Para configurar cuenta de Yahoo

Lo primero que vas tener que hacer es registrarte aquí: https://buildersoft.com.mx/ , una vez hecho esto los datos serian los siguientes:

•Servidor IMAP: imap.mail.yahoo.com
Usar SSL: Sí
Puerto: 993
•Servidor POP: pop.mail.yahoo.com
Usar SSL: No
Puerto: 110
•Servidor SMTP: smtp.mail.yahoo.com
Usar autenticación: Sí
Usar SSL: Sí
Puerto: 465
•Nombre de cuenta: usuario@yahoo.com
Dirección de correo electrónico: usuario@yahoo.com
Contraseña: Su contraseña

Postfix – Comandos básicos

Para aquellos que se estén iniciando en el mundo del MTA Postfix, ahí van unos comandos útiles para el manejo de la cola de correo:

postsuper -d numero (eliminar el mensaje)
postsuper -d ALL (eliminar todos los mensajes)
postsuper -r Number (Encolar de nuevo el mensaje)
postsuper -r ALL (Encolar de nuevo todos los mensajes)
postqueue -p (Mostrar la cola de correo por pantalla)
postqueue -f (Hacer un flush de la cola de correo, intentar enviar todos los correos)