domingo, 22 de agosto de 2010

Ausencia

Luchando por que esta cosa no desaparezca, espero despues de mucho tiempo publicar algo de nueva cuenta, algo que este relacionado con lo que ultimamente vengo haciendo.

El trabajo que actualmente tengo ha logrado que ahora mi principal amigo sea el SQL :) por lo que es muy probable que la proxima publicacion sea algo sobre este lenguaje estructurado de consultas, principalmente de PL/SQL.


Saludos

viernes, 4 de diciembre de 2009

Introducción a un sniffer

Un sniffer en términos de informática se puede definir como un programa que nos permite capturar los paquetes que son transmitidos por una red de computadoras con la finalidad principal de estudiar nuestra red. Actualmente se pueden conseguir muchas aplicaciones de este tipo como por ejemplo: Ethereal o Wireshark.

Ahora, si prefieres construir tu propio sniffer, existe una librería para el lenguaje de programación C llamada Libpcap la cual cuenta con toda una interfaz para dicho propósito, es decir, un conjunto de funciones que te permiten configurar interfaces de red de tu maquina con la finalidad de que puedas iniciar la captura de paquetes.

Los aspectos básicos que debes de tener para que puedas iniciar la creación de tu propia aplicación de este tipo son:

->Conocimientos generales de redes de computadoras.

->Que conozcas a grandes rasgos el funcionamiento del modelo TCP/IP para que entiendas el encapsulamiento que sufren los paquetes que se transmiten por la red, esto te servira a la hora de que desees interpretar un paquete que captures.

->Lógico, que sepas programar en C.

->Que tengas a la mano los RFC’s de diferentes protocolos, como: IP, TCP, UDP, ARP, etc. Te serviran para que comprendas el funcionamiento de cada uno de estos.

->Que conozcas la estructura de las cabeceras de los paquetes que manejan los diferentes protocolos que utiliza tu red. Por ejemplo: la cabecera ethernet se encuentra especificada en el archivo ethernet.h y tiene una estructura como la que sigue:

struct ether_header
{
u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */
u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */
u_int16_t ether_type; /* packet type ID field */
}

En base a esta estructura podemos identificar que tiene una longitud de 14 bytes. 6 bytes por cada dirección ethernet (MAC) y 2 bytes para el campo de ether_type (protocolo).

Cuando se interpreta un paquete, la primer cabecera que hay que extraer es la ethernet, despues en base al valor que contega ether_type identificamos que protocolo esta encapsulando, investigamos la configuración de su cabecera para que sea la proxima en extraer y despues podremos estar obteniendo el payload o carga útil, por lo que es importante conocer el tamaño de las cabeceras para irnos posicionando en el paquete.

Investigando un rato en internet puedes dar con páginas muy interesantes que contienen ejemplos y mucha información para que puedas iniciar el desarrollo de tu sniffer. En la siguiente publicación pienso poner algo de código funcional para que sirva como introducción.

miércoles, 18 de noviembre de 2009

¿Do you want a IDE for C y C++ on Linux?

Anjuta DevStudio is the correct solution.

I have a little time working with Anjuta DevStudio but it's necessary to fall in love, je. Other thing that make to this IDE very interesting is the easy way that give us to work with graphical interface so we can include a tool like Glade to development user interfaces for GTK+ toolkit.

Anjuta is licensed under the GNU GPL to the same form that Glade.

And other thing very important is that we can found a lot of information about. Here, I give you two links to pages where you will can read during very much time of Anjuta and Glade.

Anjuta
Glade

/* Is the first time that I write in this language so I'm sorry if I have some mistakes, I'll be to make better */

martes, 13 de octubre de 2009

AGRADECIMIENTOS

Esta publicacion la realizo con el fin de agradecer a todos los organizadores de la semana de ingenierias del Instituto Tecnologico Superior de Huetamo por el trato tan amable que se nos dio durante nuestra estancia, especialmente al Ingeniero Edgar que fue el encargado de nosotros, tambien quiero reiterar que seguimos en contacto para futuros eventos.

A todos los que asistieron a la conferencia que imparti quiero decirles que estoy abierto a cualquier comentario o pregunta que quieran hacerme llegar.

Saludos.

viernes, 25 de septiembre de 2009

Conferencia en el Tec de Huetamo

Quiero contarles que actualmente me encuentro preparando una pequeña conferencia que presentare el proximo mes de Octubre en el Instituto Tecnológico de Huetamo la cual tratara sobre VLANs.

Actualmente he estado pensando en el titulo pero le dejare el de siempre, ja "Introducción a VLANs", al menos que me propongan alguno o don David que es mi fiel lector diga cual, jeje.

Bueno, saludos y despues les pongo una breve reseña de la ponencia.

viernes, 4 de septiembre de 2009

VTP (VLAN Trunking Protocol)

VTP es un protocolo para la administración de redes virtuales en dispositivos cisco, tiene una forma de trabajar muy interesante y bastante sencilla, su finalidad es facilitar el trabajo del administrador y asegurar la congruencia en las VLANs creadas en cada uno de los switches.

VTP funciona mediante la agrupación de switches que comparten las mismas VLANs y la asignación de roles a cada uno de estos. A grandes rasgos, las VLANs que sean creadas en un determinado switch serán configuradas de manera automática en todos los demás switches dentro de la misma agrupación o dominio, por lo que se ahorra tiempo en la configuración y se evita que se comentan errores al crear VLANs diferentes.

Un switch puede ser configurado de acuerdo a tres diferentes estados VTP:

1. Server: Tiene los privilegios necesarios para: crear, eliminar o modificar VLANs. Y despues compartirlas entre todos los switches del mismo dominio.

2. Transparent: Puede crear, eliminar y modificar VLANs pero solo de manera local, es decir, modificaciones que haga a VLANs no seran compartidas con los demás switches del dominio.

3. Client: No puede crear, eliminar o modificar VLANs, solo esta a la espera de los cambios que un switch server le comunique.

Para que este mecanismo funcione, VTP utiliza el paso de mensajes entre los switches que conforman la topologia, mensajes VTP son enviados cada 5 minutos con la finalidad de que los switches en el dominio se sincronicen.

Para más información acerca de este protocolo, ya que esto de lo que les hable es solo la introducción, existe un link proporcionado por cisco bastante bueno, además pueden encontrar también un video excelente acerca de VTP.

saludos

jueves, 30 de julio de 2009

Algo sobre VLANs

Saludos y como lo prometido es deuda, aquí les dejo una pequeña publicación sobre VLANs.

Actualmente es muy común que la topología de red que podamos tener en una organización este regida por aspectos geográficos mas que por elementos jerárquicos de nuestra empresa, es decir, usuarios de un determinado departamento forman parte de la misma red de computadoras a la cual otro departamento también lo hace, simplemente por que físicamente se encuentran dentro de la misma oficina, lo que hace que tengamos a trabajadores de distintas áreas utilizando un mismo canal de comunicación. En base a esto se pueden apreciar a simple vista fallas en la seguridad.

Una VLAN (Virtual LAN) lo que pretende es tener de manera lógica bien organizada y delimitada nuestra topología de red, pudiendo crear tantas VLANs como departamentos o áreas de trabajo tengamos.

Entonces, una VLAN se define como la interconexión lógica de dispositivos de red, pudiendo tener en un mismo switch diferentes redes virtuales o formar una sola VLAN con equipos conectados en diferentes switches.

Les dejo una imagen que encontré en Internet en la cual se puede apreciar con claridad una organización con VLANs.

En la siguiente publicación les hablare de algo mas técnico sobre el mismo tema.

Saludos.

domingo, 28 de junio de 2009

Saludos

Buen dia, hoy no publico algo muy formal, hay muchos temas que me gustaria redactar pero los dejare para despues, tengo mucho que no les platico algo y por eso me animo a escribirles aunque sea un poco, actualmente me encuentro trabajando en lo de mi titulación, realizare una monografia con el titulo "Intercepcion de frames etiquetados en VLANs", en un tiempo más publicare algo al respecto, aqui les dejo un link para los que esten interesados en el tema, en lo personal conozco poco de esto pero me suena bien y pues a investigar, je. Algo que tambien tendre que hacer como ejercicio practico sera un pequeño sniffer que intercepte frames para poder identificar de que VLAN provienen.



Bueno despues les platico y les muestro algo de codigo.

Saludos.

miércoles, 29 de abril de 2009

Asignación de permisos en Linux

El sistema operativo Linux cuenta con un mecanismo para la asignación de permisos a todo directorio o archivo que maneje, mecanismo que para todo principiante en dicho software es muchas veces desconocido.

El saber como funciona este mecanismo nos es de gran utilidad ya que nos permite realizar actividades que para algunos son sencillas pero para otros significa el dejar a un lado Linux, por la forma en que están acostumbrados a trabajar.

Esta forma de proteger los archivos y directorios es lo que hace a Linux un sistema mas seguro.


ASIGNACION DE PERMISOS

Se tienen tres tipos de miembros a los cuales se les pueden asignar permisos:
+ Dueño
+ Grupo
+ Otro

Los permisos que se pueden asignar a cada miembro son:
+ Lectura
+ Escritura
+ Ejecución

Es decir, se le puede dar permiso de lectura y escritura al dueño pero a los usuarios pertenecientes al grupo solo de lectura, por citar algún ejemplo.

Una forma de hacer esto es con el comando "chmod" seguido de los permisos q se asignaran y el archivo o directorio que se vera afectado.

Los permisos estarán simbolizados por números y la asignación de una combinación de estos será mediante la suma de los mismos, los valores para cada permiso son los siguientes:
+ Lectura = 4
+ Escritura = 2
+ Ejecución = 1

Ejemplo1: Si queremos permisos de lectura para el dueño, grupo y otro en el archivo main.l se escribe en una consola y como super-usuario lo siguiente:

chmod 444 main.l

El primer 4 se refiere a los permisos para el dueño, el segundo para el grupo y el tercero para otro.


Ejemplo2: Permisos de lectura (4), escritura (2) y ejecución (1), (4+2+1=7) para el dueño, permisos de lectura para el grupo y ninguno para cualquier otro usuario sobre el archivo main.l

chmod 740 main.l


De esta forma es como se asignan permisos en Linux, espero les sea de utilidad.

domingo, 26 de abril de 2009

FLISOL 2009

Saludos a todos y despues de un dia lleno de trabajo por la realización del FLISOL 2009 en las instalaciones del Instituto Tecnológico de Morelia, quiero felicitar, primero que nada, a todos mis compañeros, miembros del Grupo de Usuarios Linux de Morelia (GULMORE) por la gran labor que de acuerdo a sus posibilidades desempeñaron, y despues, que no son menos importantes, ya que sin ellos no hubiera sido posible, a todas las personas que asistieron a dicho Festival, agredeciendo también todos los puntos de vista que nos proporcionaron durante la clausura, ya que con estos nos brindan la posibilidad de mejorar la realización de futuros eventos.

Felicidades compañeros y sigamos a delante con los demas objetivos que tenemos en agenda.

miércoles, 18 de febrero de 2009

Pequeña aplicacion en Java Struts

Nuestra aplicación estará formada por los siguientes archivos y por una tabla llamada Passwords:

Model:
•Passwords.java
•PasswordsClient.java

Controller:
•LoginActionForm.java
•LoginAction.java
•struts-config.xml

View:
•inises.jsp
•bienvenida.html
•errorIniSes.html

Tabla Passwords:
Atributos: usuario, password;

El archivo Passwords.java viene siendo nuestra “Clase Entidad”, esta hecha a imagen y semejanza, en este caso, de nuestra tabla Passwords.

Con PasswordsClient.java realizamos la conexión a la base de datos y la creación de métodos para el manejo de esta.

LoginActionForm.java también conocido como “bean” contiene un atributo por cada cajita de texto en donde el usuario proporcionara sus datos, así como los respectivos métodos “set” y “get”.

En LoginAction.java llevamos acabo la lógica de validar los datos.

struts-config.xml es el archivo de configuración en donde estableceremos cual sera nuestra Action en este caso LoginAction.java, cual nuestro bean (LoginActionForm) y cuales nuestros forwards, es decir, si son validos los datos del usuario que ventana mostraremos (bienvenida.html) o hacia donde dirigiremos el flujo del sistema.

A continuación muestro un diagrama de cómo estarían relacionados en nuestra aplicación todos estos elementos:



Quizás resulta demasiado confuso pero conforme te familiarizas se convierte en razonable y aprecias lo funcional.

Para más información acerca de MVC podemos visitar:
http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

La documentación de Java Struts:
http://struts.apache.org/

Java Struts

Después de tanto tiempo sin publicar, por aquí estoy de nuevo, actualmente me encuentro realizando mis residencias profesionales en la Comisión Federal de Electricidad de la ciudad de Morelia, el proyecto en el que estoy trabajando tiene que ver con la creación de un sistema utilizando el Framework Java Struts, no soy experto en esta tecnología pero tratare de explicar en que consiste.

Resulta que recordando la clase de “Ingeniería de Software” existe una arquitectura en la cual nos podemos basar para desarrollar algún sistema, el seguir este diseño nos trae algunas ventajas como: modularidad, fácil mantenimiento, sencillo de entender (por aquello de que luego tenemos código conocido en ocasiones como espagueti), etc.

Con Java Struts podemos desarrollar software siguiendo esta arquitectura llamada MVC (Model View Controller) donde la parte del modelo tiene que ver con el manejo de información, muy probablemente conexiones a la base de datos, View (vista), todo lo referente a las interfaces y Controller todo lo que es la lógica de negocios (Business Logic).

Para que se comprenda con mayor facilidad este Framework hablare de una pequeña aplicación en donde son validados los datos proporcionados por un usuario para permitir (mostrando una pagina de bienvenida) o denegar (mensaje de error) el acceso al sistema: esta aplicacion la muestro en la siguiente publicación.

viernes, 26 de septiembre de 2008

Personalizando el kernel

Cuando instalamos una distribución linux en nuestro equipo por lo general lleva una versión del kernel la cual esta configurada de manera muy generalizada, incluyendo por ejemplo: drivers para dispositivo bluetooth, tengamos o no dicho dispositivo en nuestro equipo, se configura para un determinado procesador, quizás no específicamente el nuestro, se instalan otras opciones para notebook de algunas determinadas marcas y así sucesivamente, en si, se tiene un kernel configurado para que funcione en la mayoría de los equipos, siendo por consecuencia no optimizado para algún equipo en especial.

Pero tratándose de linux pues existe la opción de que personalicemos el kernel para que tengamos uno a nuestra medida, que cumpla únicamente con lo que necesitamos, haciendo el desempeño de nuestra máquina más eficiente. A continuación mostrare los pasos necesarios para llevar acabo dicha tarea.

1.- Necesitamos descargar el código fuente del kernel que tengamos instalado, este se puede encontrar en: http://www.kernel.org

NOTA: También si lo deseamos podemos descargar un kernel mas nuevo con el fin de actualizar o en busca de soporte para nuevas tecnologías.

2.- Una vez que hayamos descargado el kernel, lo descomprimimos y estando en una consola como root, nos colocamos en el directorio que se descomprimió.

3.- Para comenzar en base a la configuración que nuestro kernel ya tiene, hacemos lo siguiente: copiamos el archivo llamado config-2.6.xxxxxx que se encuentra en /boot a la carpeta donde se encuentran los fuentes del kernel que descomprimimos cambiándole el nombre a .config

Ejemplo:
cp /boot/config-2.6.xxxx /usr/src/linux-2.6.16.xxx/.config

Se puede configurar el kernel omitiendo este paso, pero es recomendable que se inicie la configuración en base a una, que de antemano sabemos que funciona.

4.- Existen varias formas de configurar el kernel, pero la más común es mediante el comando make menuconfig, los diferentes comandos son:

1.- make config (para una configuración sin la ayuda de un entorno gráfico).

2.- make menuconfig (para un entorno gráfico tipo consola)

3.- make xconfig (para una forma gráfica)

En esta ocasión elegiremos la segunda opción ya que es una forma fácil de hacer esta tarea, una vez que hayamos tecleado el comando, notaras que te has sumergido en un mar de parámetros para configurar donde la mayoría son confusos, te tocara investigar para que los entiendas, algunos los puedes intuir pero otros requieren de más conocimiento.

Cada parámetro tiene tres opciones de configuración, una es incluirlo en el kernel que esta simbolizada con un (*), la segunda es compilarlo como módulo (M) y la tercera excluirlo del kernel, en saber elegir alguna de estas opciones para cada parámetro consiste una buena configuración.

Para elegir que un parámetro se compile incluido en el kernel debemos tomar en cuenta a todos aquellos que forman parte imprescindible del funcionamiento de nuestra máquina como los que tienen que ver con los drivers de los diferentes dispositivos.

Para el caso de compilar como módulo hay que elegir a todos los que se refieren a cuestiones que casi no se utilizan, por ejemplo: soporte para el sistema de archivos NTFS.

En el caso de excluir parámetros, seleccionamos a los que tienen que ver con dispositivos con los que no cuenta nuestro equipo o con soporte para aspectos que nunca ocuparemos.

Una vez que terminemos de configurar, guardamos los cambios y salimos.

NOTA: Para poder ver el menú de configuración ocuparas tener instalada una librería llamada ncurses, la cual se puede instalar con la ayuda de algún administrador de paquetes o descargándola de algún sitio de internet, por ejemplo en Debian, puedes hacerlo de la siguiente forma:

:#apt-get install ncurses


5.- Tecleamos:
make //Comienza a compilar (Tarda aprox. 30 min para que pienses en tener cerca un libro o alguna revista)
make install //Instala la imagen del kernel
make modules_install
mkinitrd -o /boot/initrd-2.6.x.img 2.6.x //Crea una imagen que ocuparemos cuando configuremos el gestor de arranque (GRUB, LILO).


6.- Configuramos GRUB:
Dentro del directorio /boot/grub existe un archivo de configuración del gestor de arranque (menu.lst), donde agregaremos una nueva entrada que corresponderá al nuevo kernel que configuramos. Ejemplo:

title kernel personalizado, kernel 2.6.x.x
//El titulo únicamente es el nombre que queremos aparezca en el GRUB

root (hd0,1)
//hd0 se refiere al disco duro

kernel /boot/vmlinuz-2.6.x.x root=/dev/hda2 ro
//Se establece la dirección donde se encuentra la vmlinuz nueva y donde se montara //el sistema, en este caso /dev/hda2, (ro) se refiere a que el sistema se cargue en //modo de solo lectura.

initrd /boot/initrd.img-2.6.x.x
//Dirección de la imagen que creamos

savedefault

7.- Una vez que hayamos configurado el grub, reiniciamos y esperamos a que todo salga bien.


RESUMEN:

1.- Descargar los fuente del kernel ( http://www.kernel.org )
2.- Descomprimir el kernel.
3.- Si se utilizara make menuconfig instalar ncurses.
4.- Teclear make menuconfig
5.- Configurar
6.- Teclear make
7.- Teclear make install
8.- Teclear make modules_install
9.- Crear imagen: mkinitrd -o /boot/initrd-2.6.x.img 2.6.x
10.- Modificar el gestor de arranque
11.- Reiniciar la PC
12.- Esperar que todo salga bien.

domingo, 24 de agosto de 2008

Integración de Sistemas

Después de tanto tiempo sin publicar voy hablarles del proyecto de investigación que realizamos con unos compañeros en la ciudad de Monterrey el pasado mes, el proyecto estuvo a cargo del Dr. Guillermo Jiménez Pérez el cual es investigador del ITESM (Instituto Tecnológico y de Estudios Superiores de Monterrey).

Platicando con el investigador nos planteo el problema de que en la actualidad una empresa cuenta con varios sistemas comúnmente heterogéneos, es decir, sistemas desarrollados para diferentes áreas de la empresa y construidos con diferentes lenguajes de programación, y que también, si requieren de una interacción con una base de datos posiblemente la lleven acabo con diferentes manejadores, que uno puede estar desarrollado en un habiente web y el resto no, etc.

Pero aparte de todas estas diferencias existe la necesidad de compartir información entre estos sistemas, actividad, que por lo general la lleva acabo una secretaria o una serie de procesos predefinidos.

Entonces lo que se buscó con el proyecto fue crear un mecanismo de interacción entre estos sistemas para que procesos de uno que requieren información de otro la consigan automáticamente sin la necesidad de un usuario y de manera transparente.

Para la realización de este trabajo, el proyecto se dividió en tres capas, las cuales lo hacían mas interesante, la primera tenia que ver con todo lo relacionado con una interfaz gráfica tipo RIA (Rich Internet Applications) como comúnmente se conocen, la segunda capa manejaba con JSP's la comunicación con la base de datos y la tercera utilizaba WebServices para lograr integrar los diferentes sistemas.

La primer capa se comunicaba con la segunda mediante archivos XML con un formato previamente establecido, es un mecanismo bastante interesante, la interfaz interpretaba los XML creados por los JSP's con los resultados de las acciones a la base de datos.

La estructuración de este proyecto facilita mucho la depuración de errores y la realización de futuras modificaciones ya que puede no ser necesario editar todo el sistema sino únicamente alguna capa de este sin que dejen de funcionar las demás.

Como pueden ver de este proyecto hay mucho que decir, de lo próximo que les platicare será de Openlaszlo que fue la herramienta que utilizamos para la realización de las interfaces gráficas.

viernes, 18 de julio de 2008

Algo sobre seguridad en informática.

Últimamente me ha llamado mucho la atención todo lo relacionado con la seguridad en el ambiente de las computadoras, he leído poco sobre el tema pero conforme fui metiéndome en él, me fui dando cuenta de lo inmenso que era, en si, es un tema bastante extenso.

La cuestión de la seguridad informática es en realidad un tema ya muy viejo, pero con el auge que las computadoras han tenido últimamente se ha vuelto más importante, ahora a las computadoras se les confía el manejo de información costosa, o la realización de actividades demasiado delicadas como posiblemente el control de un reactor nuclear, actividades que requieren de un extremo cuidado, un gran nivel de eficacia y por supuesto de seguridad que por lo menos brinde confianza.

En cuanto a seguridad informática se refiere, se puede implementar en base a distintos fines, desde información que desee resguardar un hombre casado en cuanto a su amante, hasta el cuidado de la seguridad de un país, algunos de los criterios principales por los cuales se implementan aspectos de seguridad informática son: por que se cuidan cantidades grandes de dinero, ejemplo: bancos, por que se cuidan recetas de alimentos o aspectos de mercadotecnia, ejemplo: las cadenas de restaurantes, las empresas refresqueras, los laboratorios médicos, etc. Y por que se requiera resguardar por parte del gobierno información de seguridad nacional.

La seguridad en las computadoras abarca muchas ramas que no toman en cuenta únicamente cuidar la pc de posibles virus, sino que se ven involucrados aspectos como: el guardia que impida el acceso no autorizado al servidor, la instalación de software que proteja al servidor de intrusos vía Internet como algún firewall, tomar en cuenta el tiempo de vida de los discos duros que es por lo regular donde se almacena la información útil a una empresa, una instalación adecuada que alimente al servidor de electricidad, la selección de una habitación libre de humedad y polvo, elegir un buen sistema operativo, realizar “Hardening al SO”, y así sucesivamente podría citar muchos mas aspectos a tomar en cuenta.

Lamentablemente algunas empresas dejan a un lado el tema de la seguridad, en muchas ocasiones por falta de personal capaz que conozca los riesgos a los que su empresa se expone así como su forma de manejarlos y en otras por falta de responsabilidad o desinterés por la empresa.

Son muchos los aspectos que se deben tomar en cuenta si se quiere intentar tener seguridad, y muchos también los que impiden que se implemente un nivel adecuado de seguridad.

De que sirve tener un súper equipo de seguridad sobre tu servidor, si has confiado la contraseña root a quien dice ser tu mejor amigo y que sin embargo espera que salgas de la empresa para ocupar tu puesto, hay casos en los que gente a librado toda seguridad para comprometer un servidor que maneja información millonaria con simplemente ganarse la confianza de los responsables del servidor.

En fin, la seguridad es un tema muy importante que en la actualidad se esta tomando con mucha seriedad, raras las empresas prestigiadas que no la implementan, ya que se tienen en juego cantidades multimillonarias.

lunes, 7 de julio de 2008

Servidor de correo en Linux.

Hablar de un servidor de correo, es platicar sobre dos principales aspectos que juntos proporcionan el servicio de correo. Uno de estos aspectos consiste en todo lo que esta involucrado en la interacción con el usuario, es decir, que aplicaciones se les proporcionara a los usuarios para que puedan redactar, manejar o recibir correo. Y el otro aspecto, tiene que ver con el servicio o el programa que se encargue de hacer llegar un correo de un buzón a otro.

En realidad estos dos aspectos tienen un nombre:



MUA (Mail User Agent):
que es cualquier tipo de programa que permite leer y escribir correos, donde ocasionalmente estos programas cuentan con muchas más utilidades que las de simplemente lectura y composición.



MTA (Mail Transport Agent):
que es el encargado de recoger mensajes y enviarlos a sus respectivos destinos, siendo posible la necesidad de establecer una comunicación entre MTAs.


En lo que a herramientas MUA se refiere existe una gran variedad, por citar algunas:
Mutt //En modo texto
SquirrelMail //En entorno web
Mozilla Thunderbird //Con ventanas
Kmail //Para el proyecto KDE
Zimbra //Interjaz web Ajax
Gnus //Modo texto


Como MTA, existen:

Sendmail

Postfix

Exim, entre otras.



Hablarles de cada una de estas herramientas aparte de que no soy experto en el tema, es labor de titanes, les hablare únicamente un poco sobre Postfix y citare algunos de sus parámetros de configuración. No se pretende que esta publicación sea un manual ni mucho menos una documentación sobre Postfix, lo que aquí describo es útil únicamente para que te adentres en el tema, Postfix es todo un mundo por lo que procuro dejar ligas a los diferentes aspectos que considero importantes para que puedas obtener más información.


Primero que nada hay que hablar de la instalación, la cual resulta bastante fácil ya que se puede llevar acabo de diferentes formas, se puede hacer desde los repositorios de Debian, ejemplo: aptitude install postfix o descargándolo de http://www.postfix.org/download.html para después instalarlo siguiendo los pasos que puedes encontrar en un archivo README dentro del paquete:


Postfix cuenta con dos principales archivos de configuración que se encuentran en el directorio /etc/postfix/:


master.cf Es un archivo donde se encuentran los procesos que utiliza Postfix. Para más información sobre este archivo visita: http://www.postfix.org/master.5.html


main.cf Es donde se realizan las configuraciones pertinentes para el funcionamiento de Postfix.

Para más información visita: http://www.postfix.org/postconf.5.html



Para una configuración muy general nos es útil solamente el fichero main.cf, el cual cuenta con una gran cantidad de parámetros para la configuración aunque normalmente sean útiles solo pocos, decir pocos me refiero a unos 12 a lo mucho. Los demás parámetros (la versión 1.1.11 se dice que cuenta con mas de 200 parámetros) son para una configuración mas refinada, tomando en cuenta aspectos de eficiencia como el rendimiento, algunos limites o aspectos de seguridad.


Los parámetros principales que controlan el funcionamiento de Postfix son los siguientes:


myhostname El nombre que tenga asignada nuestra máquina, por ejemplo: myhostname = localhost, kukulcan


mydomain El domino al que pertenezco, por ejemplo: mydomain = webmakers.com


mydestination Los mensajes que se reciban con dicho destino se aceptarán siempre. Ejemplo: mydestination = $myhostname, localhost@$mydomain


myorigin Los mensajes enviados localmente llevarán @$myorigin, ejemplo:myorigin = $myhostname


relay_domains Se acepta el correo recibido mediante conexiones cuyos nombres de host pertenezcan a los dominios dados en este parámetro.


relayhost Máquina a la que pasaremos los correos no dirigidos a buzones locales. Ejemplo: relayhost = 192.168.1.1


mynetworks Se aceptara correo que provenga de maquinas con dirección IP listada en este parámetro. Ejemplo: mynetworks = 192.168.1.5/16



Con la configuración de estos parámetros es suficiente para tener a Postfix funcionando, aunque como ya lo dije existen muchos más parámetros.


Para más información detallada sobre todos los parámetros de Postfix puedes visitar la página:
http://www.postfix.org/postconf.5.html Aquí encontraras todo sobre cada uno de los parámetros.



Una vez que se tiene configurado a Postfix, hacemos uso de comandos como: start, stop o restart para iniciar, detener o reiniciar respectivamente el servicio, ejemplo: /etc/inittab.d/postfix start



Se debe reiniciar el servicio cada vez que se hagan cambios al archivo de configuración de Postfix.


En internet puedes encontrar un sin fin de tutoriales que te hablan de como configurar todas las aplicaciones involucradas en un servidor de correo, como por ejemplo: squirrelmail para que los clientes lean y redacten correo, dovecot como servidor IMAP y POP3, postfixadmin, mysql, etc.En la siguiente liga vez toda la configuración paso a paso de estas herramientas, es fácil de seguir esta guía, si realizas cada uno de los pasos que en esta te proporcionan terminaras teniendo un servidor de correo bastante aceptable.

http://doc.ubuntu-es.org/Postfix/configuraci%C3%B3n_de_un_servidor_incluyendo_Postfixadmin%2C_Mysql%2C_Spamassassin_y_ClamAv

martes, 1 de julio de 2008

ECOLEAD (European COllaborative Networked Leadership)

Saludos a todos desde Monterrey, espero que estén bien y que disfruten de un clima fresco, porque el calor es en ocasiones desesperante, aunque pensandolo bien y viendo tanta regia también llega a ser emotivo, tenía tiempo que no publicaba pero se debe a la cantidad de trabajo, era fin de semestre, tuve que viajar varias veces a CD. Hidalgo Michoacán para la instalación de una red de computadoras, presentación de exámenes finales, preparativos para el viaje a esta ciudad, etc.

Y pues hablando de Monterrey, hay mucho que ver en esta ciudad, es muy grande, son pocos los lugares que he visitado pues apenas tengo aquí dos días pero en realidad son lugares maravillosos, la fundidora, el cerro de la silla, que por cierto les dejo una foto, el Tecnológico de Monterrey, y por supuesto las regias con su peculiar acento en su plática, son hermosas de verdad.









Bueno dejando a un lado lo bonito de Monterrey, les platico sobre el proyecto en el cual participare, existe un proyecto llamado ECOLEAD formado por diferentes organismos, uno de ellos es el grupo de investigación del ITESM.

Los resultados del trabajo que realicemos en unión con este grupo de investigación serán utilizados de manera directa al avance de las contribuciones que el grupo de investigación del ITESM realiza al proyecto ECOLEAD.

En lo que estaremos trabajando es en crear un software que permita al usuario interactuar con los diferentes sistemas con que cuenta una empresa, para que así pueda obtener información proporcionada por dichos sistemas de manera rápida. Esta parte que nos tocara realizar se divide en tres capas, una que tiene que ver con la interfaz con el usuario, una intermedia, y otra que comunicara interfaz con variedad de sistemas.

El encargado de este proyecto es el:

Dr. Guillermo Jiménez Pérez
Profesor-Investigador
Centro de Sistemas Inteligentes
Instituto Tecnológico y de Estudios Superiores de Monterrey
Campus Monterrey

Una vez que se avance en el proyecto les dejare por aquí una breve reseña del mismo.

Saludos, y créanme que hay muchos lugares que conocer en México antes que pensar en viajar a otro país. :)

domingo, 25 de mayo de 2008

Trabajando con la consola Linux.

En muchas ocasiones resulta mas eficiente o rápido el trabajar sin la ayuda de una interfaz gráfica, el poder editar un archivo para la configuración de un servicio o demonio, sin la necesidad de abrir un procesador de textos con un sin fin de utilidades que no son necesarias, iniciar algún programa con un simple parámetro start o detenerlo con un stop, nos ahorra mucho tiempo.

Existen muchos comandos sobre una consola Linux, unos propios de UNIX, otros de la distribución que utilicemos y otros que se incorporan con las aplicaciones que instalamos, a continuación les hablare de algunos que he utilizado, mi distribución es Debian etch, claro no son todos los que existen, y pueden encontrar mas información acerca de estos con el manual de linux, (man command_name).

Lista de comandos:
La mayoría de los comandos que explico, tienen mas opciones o pueden recibir mas parametros, por ejemplo:

ifconfig
//muestra las interfaces de red, así como su configuración

ifconfig eth0 dirIP
//asigna dirIP a interfaz eth0

ifconfig
eth0 dirIP netmask mask
//asigna dirIP a eth0 con mascara de red mask

Y así sucesivamente, por lo que recomiendo la consulta del man.

Para copiar un archivo:
cp origen destino
cp /home/robguzort/mi_archivo_a_copiar /home/lugar_destino/

Para mover un archivo:
mv origen destino
mv /home/mi_archivo_a_mover /home/lugar_destino/

Para eliminar un archivo:
rm /home/robguzort/nameFile

Para crear un directorio:
mkdir /ruta/directorio_a_crear

Para verificar el estado de la pila:
acpi

Para consultar fecha y hora:
date

Para listar el contenido de algún directorio
ls

Para descargar un archivo de internet
wget URL

Para mostrar los procesos activos del usuario
ps

Para cambiar los permisos
chmod permisos directorio o archivo

Los permisos (usuario, grupo y otros)

4 Lectura (r)
2 Escritura (w)
1 Ejecución (x)

Ejemplo: chmod 777 /home/file

El primer 7 de izquierda a derecha Lectura/escritura/ejecución para el usuario, el segundo para grupo y el tercero para otros. Es decir, permisos de todos para todos.

Para descomprimir un tar.gz
tar -xvvzf archivo.tar.gz

Para apagar o reiniciar la PC, estando como superusuario
poweroff //apaga
reboot //reinicia

Para matar algún proceso
kill pid //donde pid es el id del proceso a matar

Para interrumpir el comando actual
ctrl + C

Y pues bueno podría seguirles hablando de muchos mas, o simplemente complementar cada uno de estos, pero, aprenderte las diferentes opciones que tiene cada comando te resulta mas fácil una vez que te surge la necesidad de utilizar uno que haga mas de lo que principalmente realiza.

lunes, 19 de mayo de 2008

Algo sobre la ponencia

Primero que nada, saludos a todos aquellos interesados en el ambiente del software libre.

Para poder hablar acerca de alternativas libres a software privativo, es oportuno el iniciar con una breve introducción a lo que es software libre, y lo que es software privativo, es por eso que inicio la conferencia hablando acerca de las cuatro libertades que todo software libre brinda: la libertad de uso, la libertad de estudio y modificación, la libertad de distribución y la libertad de mejorarlo y publicar mejoras, por lo tanto, cualquier programa informático que no proporcione alguna de estas libertades, automáticamente cae dentro de las aplicaciones privativas.

Hablar de software libre no necesariamente es hablar de software gratuito, ya que cualquier aplicación libre puede ser distribuida comercialmente siempre y cuando no pierda su carácter de libre.

Por otro lado, una aplicación privativa, es cualquier programa que mutila alguna de las libertades mencionadas, es decir que no proporciona plena libertad de uso, no tiene su código fuente liberado o que no es posible redistribuirlo con o sin mejoras.

Hablando ahora si, acerca de alternativas libres poderosas y dignas de usarse, nos encontramos con que existe una gran variedad de dichas aplicaciones y que en los últimos años se ha visto disparado el desarrollo de las mismas, por el auge que han tenido los sistemas operativos basados en Linux, que son principalmente donde se ejecutan estas aplicaciones libres.

En cuanto a aplicaciones de ofimática, hablo sobre OpenOffice.org, como alternativa a la familia privativa ofice, Scribus para el diseño de publicaciones y Gimp para la edición de imágenes, en cuanto a navegadores web se refiere, platico sobre epiphany como navegador oficial de GNOME, en el entorno multimedia, hablo de XMMS y mp3Blaster, para el desarrollo de aplicaciones Anjuta, para grabar en CD/DVD GnomeBaker y finalmente como mensajeros: pidgin y kopete.

No es factible hablar de todas las alternativas, aclaro no son las únicas y posiblemente tampoco las mejores, así que ya es decisión del usuario final elegir con cuales trabajar.

sábado, 10 de mayo de 2008

Ponencia en el ITST

Actualmente me encuentro preparando una ponencia que presentare en el Instituto Tecnológico Superior de Tacámbaro el día 20 de Mayo, la cual se titula "Alternativas Libres a Software Privativo", con esta conferencia lo único que se busca es dar a conocer o platicar acerca de aquellas aplicaciones para PC que son libres y dignas para usarse como alternativas a todas aquellas privativas, pienso iniciar la platica con una introducción a lo que es software libre y lo que es software privativo.

A ver que tal me va, ja.