Monthly Archives: April 2008 - Page 2

Creando Paquetes DEB Con Alien

Ha salido una nueva versión de Email, ya tiene soporte para TLS, por lo tanto, ya se puede usar con cuentas de Gmail.

Me costó compilarlo pero al final lo conseguí, los años de Gentoo no pasan en valde. El caso es que un par de amigos mios, no lo conseguían así que me propuse construir el paquete deb para pasarselo (en verdad me lo pidio Miguel Ángel a mi no se me hubiera ocurrido…).

Hay un buen manual del desarrollador de Debian donde explica como construir un paquete deb, pero es complicado. Use alien en su lugar.

El primer paso es construir el paquete desde el fuente.

./configure --prefix=/tmp/email
make && make install

Hemos pasado el parámetro prefix para indicar que todos los archivos que genere el paquete cuelgan de /tmp/email.

Una vez el paquete está compilado nos situamos en esa carpeta y metemos todos los archivos en un tar.gz:

tar czvf email-3.0.2.tar.gz

Para poder invocar a alien, necesitamos ser root, si no tenemos cuenta de administrador usamos:

fakeroot

Esto nos dará una shell de psudo-root para poder ejecutar alien, ya sólo nos queda construir el paquete deb.

alien email-3.0.2.tar.gz

Y ya tenemos el paquete deb listo para usar en cualquier distribución Debian.

Problema: Cuando se instala el paquete con

dpkg -i email-3.0.2.deb

apt lo instalará en la raiz del disco y todas las referencias del binario a sus archivos lo seran a donde se instaló en el sistema anfitrión. Esto viene a decir, que no funciona bien, porque por ejemplo el buscaba su fichero .conf en /tmp/email y estaba en /email/email.conf.

La solución fue hacer las cosas a su manera. En lugar de compilar contra /tmp lo hice contra la raiz de forma que todo quedó en su sitio. Luego copié ese árbol de archivos a /tmp y generé el paquete. De esta forma, cuando lo instalé todo fue a su sitio y el programa encontraba todos sus archivos.

Esta solución es válida aunque algo artesanal y sólo sirve si el paquete no tiene muchos archivos. Voy a ponerme a aprender a hacer paquetes deb siguiendo la receta original por si un día me encuentro con algo más complejo… 

Pesado

En esta entrada pretendo explicar una cosa muy sencilla y útil para aquellos que mantienen un pequeño servidor casero. Los que me leen desde el principio saben que he montado Apache en mi máquina y tengo ahí un CMS (gallery) para las fotos de mis amigos. Revisando los logs, me encontré con esto:

216.75.34.200 - - [26/Mar/2008:08:44:30 +0100] "GET http://www.adsoft-development.com/ HTTP/1.1" 200 711 "-" "-"
216.75.34.200 - - [26/Mar/2008:08:51:20 +0100] "GET http://www.adsoft-development.com/ HTTP/1.1" 200 711 "-" "-"
216.75.34.200 - - [26/Mar/2008:08:57:22 +0100] "GET http://www.adsoft-development.com/ HTTP/1.1" 200 711 "-" "-"
216.75.34.200 - - [26/Mar/2008:09:03:43 +0100] "GET http://www.adsoft-development.com/ HTTP/1.1" 200 711 "-" "-"
216.75.34.200 - - [26/Mar/2008:09:09:30 +0100] "GET http://www.adsoft-development.com/ HTTP/1.1" 200 711 "-" "-"

Es algo sumamente extraño, en mi ignorancia, no sé decir a que vienen este tipo de peticiones. Se hace una cada 6 minutos sin ningún indicio que vayan a terminar nunca.

El caso es que a mi me molesta tener eso, así que actualicé el firewall de linux para que denegara esa conexión.

iptables -A INPUT -s 216.75.34.200 -p tcp --dport 80 -j DROP

Esta regla se lee de la siguiente manera: Todo lo que entre desde la IP 216.75.34.200 con el protocolo tcp por el puerto 80 lo paras. Así Apache no atenderá ninguna petición desde esa IP ya que ni siquiera se enterará que le han hecho una.

Esta regla se meterá en el script junto a las demás reglas que gobiernan las conexiones de mi máquina y pondremos el script para que arranque junto al sistema. Para ello ponemos el script en /etc/init.d/ (al mio, en un alarde de originalidad, le he llamado firewall) e invocamos al creador de guiones de inicio:

update-rc.d firewall defaults

Y ya lo tendremos listo para la próxima vez que iniciemos la máquina con nivel de ejecución por defecto. Si somos más exigentes, debemos pasarle al comando los números del nivel de ejecución, pero eso es ya otra historia. 

Enviar Emails Desde La Línea de Comandos

¿A quién no le ha pasado que estando en el despacho la habla un amigo por el aMSN pidiendole que le pases el estudio para una práctica de la escuela que tienes en el PC de casa? Bien, creo que a mi sólo, así que aquí explicaré como hice frente a tal reto…

La solución es tan sencilla que incluso un usuario de Windows podría llevarla a cabo. Todo consiste en llegar a casa, en este caso lo hacemos por SSH.

ssh Email protegido.

Ahora pongo mi contraseña para poder acceder (lógico no?) una vez logeado en mi casa me muevo hasta el directorio donde está el estudio

cd /home/nordri/Cosas/etsii/segundo/2c/dce/

Aquí se haya el PDF con el estudio teórico que debe ser entregado al compañero. Si bien es cierto que aquí nacen dos posibles caminos de solución. En primer lugar puedo copiar ese archivo a mi máquina del despacho:

scp practica1.pdf Email protegido.:/home/nordri/

Y una vez aquí utilizar la transferiencia de ficheros que tiene aMSN para enviar el archivo al compañero.

Pero esta forma es mala, es mala porque es lenta, porque tengo que mover el fichero dos veces y me aparece una copia local que no necesito. Así que mejor lo mandamos por correo. Es aquí cuando la misión se pone interesante.

Para enviar correos en línea de comandos dispones de varios programas, inclusive, te puedes configurar todo un servidor SMTP para tal fin. La solución software que yo uso es email.

El paquete email, desgraciadamente, no se encuantra en los repositorios oficiales de Gutsy, así que toca compilarlo a mano, sin miedo, es un programa con pocas dependencias y alta probabilidad de que compile bien a la primera.

Vamos a ello.

1. Descomprimimos el paquete.

tar {z,j}xvf email...tar.{gz,bz2}

Se usa j para bz2 y z para gz.

2. Se configura el paquete

./configure

Si lo anterior no devolvió ningún error procedemos con la compilación. Si devolvió algún error, es más que posible que se trate de algún problema de dependencias. Localizadla e instalarla.

3. Se compila

make && make install

make se puede usar como usuario normal, make install es siempre con permisos de root (su o sudo según el caso). 

Una vez instalado, pasamos a configurarlo, a no ser que le hayas pasado parámetros al configure en el argumento –prefix, los archivos de configuración están en /usr/local/etc/email. La configuración es sencilla, es como cualquier otro cliente de correo. Vamos a ello

El servidor smtp a usar

SMTP_SERVER = 'smtp.servidor.com'
SMTP_PORT = ‘25′

Ponemos nuestro nombre que aparecerá en el remitente.

MY_NAME  = 'nordri'

Nuestro correo.

MY_EMAIL = 'nordri@..'

Esta opción es por si queremos que se respondan los emails a otra cuenta de correo.

REPLY_TO = ''

Podemos añadir una firma a cada correo, del tipo "este correo ha sido enviado desde la línea de comandos." o "este mensaje se envía de forma desatendida, por favor no responda" o cosas así, ahí la imaginación al poder.

SIGNATURE_FILE    = '&/email.sig'
SIGNATURE_DIVIDER = ‘– ‘

Aquí la libreta de direcciones, también es posible añadir direcciones en tiempo de escribir el comando en el prompt.

ADDRESS_BOOK = '&/email.address.template'

El directorio temporal donde email colocará los archivos necesarios durante su ejecución, cuando termine, los eliminará.

TEMP_DIR = '/tmp'

Si queremos conservar una copia de los emails enviados activamos esta opción indicandole dónde guardarla.

SAVE_SENT_MAIL = '~'

El soporte PGP queda aparcado para otro post que quiero escribir.

Hay que indicar el tipo de autentificación que requiere tu servidor de SMTP, normalmente es LOGIN o PLAIN (Nota: en la web oficial anuncian que soporta TLS desde noviembre, sin embargo, tanto en la página del manual como en la documentación del archivo de configuración se indica que sólo soporta esos dos tipos).

SMTP_AUTH = 'elegir'

Nombre de usuario, aquí lo normal es poner todo lo que está delante de la arroba, en otro sitios es necesario poner la dirección completa.

SMTP_AUTH_USER = 'usuario'

La contraseña del correo, esto es un fallo de seguridad, la contraseña queda en en texto plano, accesible a cualquiera que use el sistema.

SMTP_AUTH_PASS = ''

Pues listo, ya tenemos un programita que nos envía correos por la línea de comandos, usémoslo:

email -s "La práctica de dce" -a practica1.pdf compañEmail protegido.

Al apretar intro se abrirá el editor predeterminado del sistema (vim en mi caso) y podremos escribirles unas líneas del cuerpo del mensaje. Aunque si vamos con prisa otra forma de invocarlo es

echo "esto sera el cuerpo del mensaje" | email -s "Práctica DCE" -a practica1.pdf compañEmail protegido.

Los parámetros son varios y están bien comentados en el manual, los más frecuentes (los que yo uso) son:

  • -s: Asunto.
  • -a: Adjunto.
  • -q: Modo silencioso (útil para los scripts)
  • -html: Para enviarlos en modo html. (Tú tienes que escribir el html)

Y ya está. Ahora que puedes mandar correos desde la consola que sólo tu imaginación ponga límites a todo lo que puedes hacer con esto.