Publica tu how-to

Dinos como hacer lo que sabes hacer, mándanos un email a wdonet@gmail.com y lo publicamos (dos días máximo) o si te interesa unirte al equipo de redactores, también háznoslo saber por correo.

DBUnit lo hace facil

Dado que he trabajado con JUnit y DBUnit y he encontrado en ellos unas buenas herramientas para probar el codigo de las aplicaciones en java, pues me dí a la tarea de investigar un poquito sobre como obtener datasets desde una BD, y como cargarlos para realizar pruebas específicas.  Fue entonces cuando me encontré con este artículo de Bill Siggelkow y me dí a la tarea de traducir una parte, también he agregado notas mías, pero pueden encontrar el original en enlace al final del post.

Y dice así:
Si desarrollas aplicaciones que acceden a datos relacionales necesitas verificar el código de tu aplicación trabaje con los datos, como fue diseñado.  Cuando usas Hibernate o algún otro framework que implemente JPA, deberías confirmar que tus mapeos dirijan a Hibernate para almacenar y recuperar la información correctamente.  Yo implemento este tipo de pruebas usando JUnit.  Nadie puede refutar que las pruebas contra una base de datos activa es fundamental - no hay una mejor forma para verificar tus mapeos.

Pero para probar contra la base de datos se requiere que los datos se encuentren en un estado inicial.  Puedes cargar la base de datos manualmente antes de correr tu prueba pero eso se vuelve monotono y propenso a errores. DBUnit resuelve este problema.  Este puede precargar la base de datos para cada una de tus pruebas, basado en un grupo de datos dentro de un xml (comúnmente llamado dataset).  El formato de este dataset es sencillo de entender; aquí hay un ejemplo de tres tablas de una base de datos MySQL.  Los nombres de los elementos empatan con los nombres de las tablas y sus atributos con los nombres de sus columnas. Cada elemento implica un registro en esa tabla.

<dataset>
    <cliente id_cliente="778899" id_estatus = "1" id_sucursal="98765"/>
    <banco id_banco="1" nombre="BNMX" descripcion="Banamex" activo="1"
valor="0"/>
    <pago id_cliente = "778899" id_estatus = "1" id_tipo_producto =
"1" id_promotor = "1" id_sucursal = "58" />
</dataset>

Para una base de datos pequeña donde solo necesitas cargar unas pocas tablas con unos pocos registros puedes crear el dataset manualmente. Pero seguramente no querás hacerlo con una base de datos empresarial compleja que contiene cientos de tablas con nombres de columnas complejas.  Es más facil si le permites a DbUnit extraer los datos por ti.

Configurar JasperReports en Spring 3.0

Cada vez es más sencillo realizar las configuraciones en Spring.  A pesar de que la configuración se puede seguir usando de diferentes maneras, en la documentación de referencia de spring 3 indica lo siguiente de forma general:
  1. Agregar dependencias a tu proyecto
  2. Configurar el ViewResolver
  3. Crear el template con iReports
  4. Configurar las vistas
  5. Crear el controller

Ahora vamos a los detalles.

Servidor de correos personal con postfix - Spambayes

Éste es el último post de 'Servidor de correos personal con postfix'. Ya configurado el mismo (MTA, MDA, MUA) y recuperando automáticamente correos con Fetchmail, sólo queda velar por la seguridad del servidor...

Se llama spam o correo basura a los mensajes no solicitados, no deseados o de remitente desconocido, habitualmente de tipo publicitario, enviados en grandes cantidades (incluso masivas) que perjudican de alguna o varias maneras al receptor.

El spam se puede convertir en una incidencia de seguridad por varias razones:
  • ocupa espacio en las bandejas de entrada de los receptores. En los casos de cuentas con tamaño limitado esto es un problema.
  • en sistemas vulnerables, el spam suele llegar también acompañado de scripts perniciosos, a ejecutar en el sistema receptor, o un link engañoso para infectar la máquina cliente.
  • también puede incluir información engañosa con la cual realizar un robo de información confidencial, engañando al usuario incauto
Claro está, la mejor política de seguridad en estos casos es ser prudente y no dar click y descargar todo lo que llegue a la bandeja de entrada del correo.

Sin embargo, los servidores de correo también cuentan con protección extra ante esta problemática. En nuestro caso, vamos a configurar Spambayes como detector de spam. Existen muchos otros programas que realizan funciones similares, el más famoso es Spamassasin. Sin embargo en este tutorial nos enfocaremos en Spambayes.

Servidor de correos personal con postfix - Fetchmail

Con este post continuamos con el 'Servidor de correos personal con postfix'. Una vez configurados el MTA, el MDA y el MUA, quedan detalles por afinar...

Fetchmail es un programa para recuperar correos desde servidores remotos. En realidad no es más que un cliente para los protocolos POP, IMAP, entre otros, que en lugar de desplegar los mensajes de correo (como cualquier cliente convencional de estos protocolos) los descarga para que sean recibidos en la máquina especificada y leídos posteriormente.

Es útil para conexiones de internet intermitentes (que no siempre están en línea), o para mantener una bandeja de entrada sincronizada con un servicio de correo remoto, como será el caso de este tutorial.

Obra del renombrado hacker Eric S. Raymond, Fetchmail es incluso el ejemplo clásico utilizado en su escrito 'La Catedral y el Bazar' para ilustrar cómo el proceso de desarrollo open source es un éxito, y no un caso aislado como se pensaba hasta el momento del kernel Linux. Este escrito fue de hecho la chispa que encendió el furor por el open source en el mundo empresarial, con lo que Netscape liberó el código fuente de su navegador (del que Mozilla Firefox es su heredero), y demás aventuras y desventuras del mundo del open source y el software libre desde entonces (1998)...

Aquí lo vamos a utilizar para recuperar los correos de una cuenta de Gmail (aunque podría ser cualquier otra, ¡o varias! siempre y cuando acepten los protocolos POP, IMAP o similares) cada cierto tiempo.

Servidor de correos personal con postfix - MUA

Continuamos con los posts dedicados a configurar un 'Servidor de correo personal con postfix'.

Previamente ya configuramos el MTA, Mail Transfer Agent y el MDA, Mail Delivery Agent.

Ahora vamos por el MUA, Mail User Agent, el cliente para leer y enviar correos. Normalmente esta parte es la que la gente toma como si fuera todo el sistema de correo, pero como ya hemos podido ver se trata de toda una infraestructura de sistemas.

En este tutorial vamos a configurar mutt como cliente de correo. Se trata de un cliente de consola muy sencillo pero muy completo a la vez. La razón es que su configuración es sencilla para los propósitos de este tutorial. Además, su sencillez permite entender un poco más cómo funciona el correo electrónico, que es de lo que se trata aquí.

Servidor de correo personal con postfix - MDA

Continuamos con los posts dedicados a configurar un 'Servidor de correo personal con postfix'.

Previamente ya configuramos el MTA, Mail Transfer Agent.

Toca el turno del MDA, Mail Delivery Agent, el cual cumple las funciones de un 'cartero' al que la central de correos (el MTA) le entrega el correo a ser entregado en los buzones correctos.

En la configuración del MTA se especificó que se usaría el programa Procmail para realizar las labores de entrega, y es el software que vamos a instalar y configurar a continuación.

Servidor de correo personal con postfix - MTA

Esta es la parte 1 de una serie de posts que vienen de 'Servidor de correo personal con postfix'.

Para configurar el servidor, vamos a asumir que, teniendo una dirección IP dinámica, se cuenta con un nombre de dominio dinámico, por ejemplo como el que ofrece DynDNS.

Recordar que el MTA, Mail Transfer Agent es el encargado de mandar los mensajes de correo que salgan del servidor, así como de recibir en primer instancia los mismos para entregárselos al MDA que los debe dejar en los buzones correctos.

Como MTA utilizaremos Postfix, un MTA bastante popular hoy en día en servidores GNU/Linux.
Cabe decir que si no se tiene MTA, el comando mail nativo de GNU/Linux permite enviar emails únicamente a los usuarios de la misma máquina que funge como servidor. Fuera de eso no se puede enviar ningún tipo de correo (ni en la misma LAN ni por internet a otros dominios de correo): se necesita configurar el MTA (además de que para usar solamente mail este tutorial pierde todo su sentido...)

Servidor de correo personal con postfix

En mi opinión un sistema de correo electrónico es de los que pueden llegar a tornarse más complicados de configurar. Al contrario de otros tipos de servidores que sólo requieren configurar un programa, y los puertos apropiados en el firewall, un sistema de correo requiere configurar varias cosas en diversos lugares.

Ésto último es debido a que un sistema de correo está en realidad compuesto no por uno sino por varios programas o sistemas que interactúan entre sí, completando y complementando sus funciones para dar lugar al sistema de correo electrónico como lo conocemos hoy: eficiente, robusto, sencillo si se sabe comprender...

Esta división de un sistema en pequeños subsistemas que cumplen funciones específicas es en realidad producto de la filosofía en sistemas como Unix de hacer las cosas bien y una sola vez. Así, por ejemplo el sistema que entrega el correo electrónico se dedica única y exclusivamente a eso, especializándose en ello y con eso no embotando su propio código fuente con funcionalidades para las que existen otros programas especializados, como el sistema que se encarga de obtener el correo a leer, o el que lo envía...

Un sistema de correo puede, en términos generales, dividirse en 3 partes principales, a saber, de afuera hacia adentro: