Instalar un servidor de correo con docker

Hace tiempo que vengo mirando la tecnología de contenedores con interés, la verdad es que desde hace mucho tiempo el trabajo más ingrato, después de haber terminado un desarrollo, era configurar el servidor donde se iba a ejecutar finalmente. No basta con saber el sistema operativo, necesitas instalar una miriada de dependecias y de versiones de software que no siempre se encuentra en la versión que usaste para el desarrollo. Docker promete poder replicar entornos completos mediante una virtualización parcial y eso me parece muy, muy interesante.

Aunque no entraré al análisis profundo de cómo funciona docker, por el momento, si que veremos un ejemplo práctico de una tarea muy habitual como administrador de sistemas, configurar un servidor de correo con todos los servicios habituales. Para ello vamos a utilizar una máquina virtual (no sirve cualquiera, hay sistemas de virtualización que no se llevan bien con docker, en mi caso usé un VPS de OVH después de desechar otros dos de strato y webserver4you). Nuestra máquina virtual tiene un ubuntu 14.04… Al lío.

Lo primero que hay que hacer es instalar docker. Por suerte esto es bastante sencillo:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install docker-engine

Con esto ya tendremos docker en la máquina. Podemos probarlo:

sudo service docker start
sudo docker run hello-world

Si no queremos andar usando sudo para cada comando, añadiremos nuestro usuario al grupo de docker:

sudo groupadd docker
sudo usermod -aG docker $USER

Ahora usaremos Poste.io como contenedor de nuestro servidor de correo. Es una solución simplemente completa y muy sencilla de instalar y configurar. En nuestro caso lo único que hay que hacer para ponerlo a funcionar es crear un directorio (en mi caso /home/mail/data) y ejecutar lo siguiente:

docker run \
-p 25:25 \
-p 81:80 \
-p 110:110 \
-p 143:143 \
-p 8443:443 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-v /etc/localtime:/etc/localtime:ro \
-v /home/mail/data:/data \
-e "HTTPS=OFF" \
--name "mailserver" \
--restart=always \
-t analogic/poste.io

Lo más relevante en este caso es que NO queremos las redirecciones https porque vamos a configurar el servidor apache que ya tenemos para que actúe de proxy y será él quien tenga el https y los certificados y que el puerto que exponemos para la administración es el puerto 81 (redirigido al puerto 80 del contenedor).

Para que sea accesible desde el exterior por https lo que hicimos fue configurar un virtualhost en apache de esta manera:

<VirtualHost *:80>
        ServerName mail.midominio.es
        AssignUserId mailuser mailuser

        ServerAdmin info@midominio.es
        DocumentRoot /home/mailuser/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /home/mailuser/www>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

ProxyPass / http://localhost:81/

RewriteEngine on
RewriteCond %{SERVER_NAME} =mail.midominio.es
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

La configuración del https es similar, aunque yo dejé que el certbot de let’s encrypt me lo configurase automáticamente al generar los certificados, quedó una cosa como esta:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName mail.midominio.es
        AssignUserId mailuser mailuser

        ServerAdmin info@midominio.es
        DocumentRoot /home/mailuser/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /home/mailuser/www>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

ProxyPass / http://localhost:81/

SSLCertificateFile /etc/letsencrypt/live/mail.midominio.es/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.midominio.es/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/mail.midominio.es/chain.pem
</VirtualHost>
</IfModule>

Si todo ha ido bien (seguro que algún detalle se nos pasa), tendremos el contenedor funcionando y podremos acceder al administrador de esta manera:

https://mail.midominio.es/admin/

Y, después de verificar la identidad y hacer los primeros ajustes de dominio, cuentas y demás podremos disfrutar de nuestro servidor de correo…

 

Retroinformática… La nostalgia del viejo informático

Hoy estreno una nueva sección, bueno, no una sección, porque no tengo de eso, pero si una nueva etiqueta que añadir a las que ya tiene este blog: “retroinformática”. Para todos aquellos de vosotros que no sepáis de qué va la cosa, os lo resumo muy fácil: “deleitarse con la historia y los viejos cacharros informáticos”.

En una entrada anterior (la de la pantalla de cartón) ya describía como construir una pantalla para un ordenador completamente obsoleto y en la entrada de la máquina arcade os mostraba cómo montarte una máquina de videojuegos “retro” en casa. Así que algunas pistas ya teníais.

Hoy os voy a contar algo un poco más prosaico, cómo conseguir ejecutar cualquier programa en un CPC 6128 sin tener necesidad de tenerlo grabado en un disco de 3″ a la vieja usanza… Eso si, nada te impide seguir coleccionando los discos si quieres.

El cacharro que hay que comprar (si, hay que comprarlo, se podría construir con los esquemas, pero es demasiada complicación por el momento y tenemos un amable polaco que nos lo hace por una cantidad de dinero muy razonable):

img_0569Lo conseguí aquí: http://www.sellmyretro.com/offer/details/Amstrad-CPC-6128-USB-floppy-emulator-11507?lang=es_ES

El proceso, tal como indica en su página, es bastante sencillo.

Para alimentar el aparato se necesitan 5V, con un conector similar al que tiene de entrada el CPC6128 (y el 464), inicialmente utilicé un cargador que tenía por ahí y posteriormente simplemente me construí otro conector que salía de la fuente de alimentación del monitor y así tenía menos cables por el medio. Una vez todo montado luce así:

img_0571Solo quedaba un problema, y es convertir los dsk a hfe (el formato que utiliza este firmware). Para la gente que tiene windows o mac no hay problema, hay una versión compilada para ellos aquí…. Para los que no (yo uso ubuntu) te tienes que descargar las fuentes de aqui: http://sourceforge.net/p/hxcfloppyemu/code/HEAD/tree/ y compilarlo, lo que te dejará tres archivos:

hxcfe, libusbhxcfe.so y libhxcfe.so

Dado que no lo explican en ningún sitio, yo he creado un script para convertir dsk a hfe y es este:


#!/bin/bash
HFE=`echo $1 | sed s/dsk/hfe/g`
echo "Convirtiendo $1 en $HFE"
hxcfe -finput:$1 -foutput:$HFE -conv

Una vez convertidos y puestos en su sitio los .hfe podemos usarlo de la siguiente manera:

img_0572

Y podemos ver la lista de todos los directorios hasta que lleguemos al que queremos que sea nuestro disco virtual para luego ejecutarlo:

img_0573

Y con esto y un bizcocho…. Me voy a jugar con mis viejos juegos…

El final del verano

Pues si, aunque este verano nos ha dejado temperaturas record y parece que se alarga más de lo debido, todo llega a su fin. Es lo normal, y aunque el calorcito y la falta de gente en la gran ciudad nos han brindado unos meses en los que poder relajarnos, eso se acabó… Hay muchas cosas en las que trabajar y muchas otras que disfrutar.

Atrás quedó la playa, el pueblo incomunicado, las (con suerte) barbacoas y el tener tiempo para estar con tus hijos, que, ahora si, vuelven a los estudios. Atrás quedaron los gastos excesivos, pero necesarios, para disfrutar un poquito con lo ahorrado el resto del año y ahora solo nos queda volver a mirar hacia adelante. Empezar, como cualquier septiembre que se precie, con nuevos propósitos, con esas colecciones por fascículos que nunca pasaban de la segunda entrega, con una sensación vacía de que lo que nos espera es ya el otoño y “winter is comming”, ir cuesta abajo hasta chocar con la navidad y el año nuevo en el que, otra vez, recapitular sobre lo que hemos hecho.

Es un ciclo, perverso o virtuoso según como queramos verlo, pero lo único importante es saber que, hayamos hecho lo que hayamos hecho, no nos arrepentimos. Que intentaremos trabajar un poco más agusto, incluso con esas personas imposibles que nos rodean, que aprenderemos un poco más cada día y que, invariablemente, apreciaremos más a quienes nos quieren y a todos los que son amables con nosotros y con el resto.

Quizá me ha quedado una entrada un poco off-topic, pero es que todavía queda mucha carrera que correr, tenemos que elegir un gobierno nuevo, tenemos que buscar clientes, montar nuevas arquitecturas, leer nuevos libros, demostrarnos una vez más que no tenemos límites en lo que hacemos y, todo ello, sabiendo que cada vez hará más frío y nos lloverán chuzos de punta… Pero, siendo optimistas, nos quedan tres estaciones completas para prepararnos para el verano que viene.

¡A por ello!

Porqué no hay que tener miedo de la palabra Pucherazo

campana_1881Estos días estamos viviendo una oleada de suspicacia por parte de los simpatizantes de Podemos, entre los cuales, en este momento, me encuentro. Además de Fraude, la palabra más oída ha sido Pucherazo. Parece que esta palabra da mucho miedo, solo de pensarlo a algunos se les estremecen las canillas y se les aflojan los esfínteres.

No, a nosotros no, eso son los países tercermundistas los que sufren este tipo de cosas, nuestro sistema es perfecto.

Bueno, no quiero quitarles la ilusión, que hasta hace poco era mía, pero si que me voy a permitir deciros por qué no hay que tener miedo de expresar las dudas y porqué nuestro sistema puede ser perfecto, pero puede ser igualmente vulnerado.

Primero, ¿quién dijo miedo? Las garantías que hay en nuestro ordenamiento administrativo y jurídico para asegurar que las elecciones sean limpias e imparciales me parecen, simplemente, impecables. Sin embargo, seríamos cómplices por dejadez si no estuviésemos vigilantes de que todas las medidas orientadas a evitar el fraude se han tomado adecuadamente. Si nadie pone en duda el sistema, ¿quién avisará cuando este sea vulnerado? Ni siquiera sitios tan “democráticos” como EEUU ha quedado libre de los “pucherazos” electorales, y no lo digo yo, lo dicen aquí, por ejemplo. Lo bueno de todo esto es que con una ciudadanía vigilante y unos garantes aleccionados a seguir alerta todo puede funcionar correctamente. ¿Miedo a mostrar dudas? Ninguno. Lo peor que puede pasar es que estemos equivocados y, en ese caso, seremos los primeros beneficiados… Así que, ¿quién dijo miedo?

Segundo, ¿el sistema perfecto? Desde que algunos mostrasen sus dudas, e incluso que algunos intentaran aprovecharlas para colar HOAX falsos o portadas de periódicos trucadas, salieron muchos artículos defendiendo lo “perfecto” de nuestro sistema electoral, donde destaco este de David Fernandez: No, el 26J No hubo pucherazo (ni puede haberlo), artículo donde explica muy bien el funcionamiento de las mesas electorales y desmonta los hoax (o similares) que pretendían demostrar pucherazo en las mesas electorales. No obstante, en el artículo y en los comentarios posteriores, queda demostrado que no hay auditoría sobre la transmisión de datos ni el tratamiento inmediato de los datos provisionales. Es decir, el programa que recoge los datos desde las apps de los delegados de la administración que hay en cada mesa puede hacer con esos datos lo que quiera sin que nadie lo sepa en ese momento. Imaginemos, por un momento, que, por error informático, se produce una mezcla de los datos de algunos partidos con otros en esa recogida de datos, los resultados provisionales serán completamente distintos de los reales, habiendo sido las mesas completamente decentes y habiendo cumplido al 100% con su cometido.

Evidentemente la ley prevé que haya un recálculo global en las juntas electorales provinciales a la vez que se añade el voto de los Españoles residentes fuera del país, pero tal como se vió en Sevilla en el 22-M (no lo digo yo, de nuevo, lo dicen aquí y fue una realidad) es costumbre dar por válido el recuento provisional y solo añadir el voto de los residentes en el extranjero. ¿Qué problema tiene esto? Que realmente se confía al 100% en un sistema que no ha sido auditado debidamente y no se puede corregir los errores humanos en este segundo recuento. Esto, y nuestra maravillosa ley D’Hont puede hacer bailar escaños a los distintos partidos (incluso solo por errores). Así que, si no se exige un completo escrutinio general “de verdad” hay muchas posibilidades de que la realidad no coincida con las cifras.

Tercero, ¿porqué dudo?, visto que el sistema no es perfecto, que tenemos un intermediario que no es fedatario público y que no ha sido auditado y en vista de las variaciones tan poco comunes entre las encuestas a pie de urna (estaríamos hablando de las mayores variaciones desde que se hacen) y las encuestas previas (incluida la del CIS) no puedo sino tener una duda “razonable”.Además, siempre he creído que el pueblo español podía ser engañado durante un tiempo, pero ver un repunte de votos de un partido corrupto y de demostrada toxicidad para la sociedad Española me parece más increible si cabe.

En cualquier otro momento de nuestra corta historia democrática ni me hubiese planteado que hubiese podido haber algo raro, pero vivimos unos momentos donde el gobierno ha cobrado en dinero negro de oscuros contribuyentes, que ha repartido beneficios con turbios amiguetes, que han utilizado el poder en su beneficio como partido y que alimentado una caverna mediática y un estado de opinión más de hooligan que de discusión política… Por eso dudo, y espero fervientemente que el escrutinio general termine por aclararme y borrarme de una vez las dudas. Cualquier otra cosa sería un pucherazo en toda regla y la mayor estafa perpetrada contra los españoles.

ACTUALIZACIÓN 1: En sitios no tan lejanos ni tercermundistas hay quien ha impugnado elecciones y no se les ha caído la democracia. Como en Austria (ver noticia).

ACTUALIZACIÓN 2: Qué se está haciendo en podemos para verificar los datos.

La épica del informático

programmingHoy toca una entrada para alabar la tarea de nuestros trabajadores del conocimiento (eufemismo clase Dios) que son, como no, ninguneados e ignorados silenciosamente por el público en general y por sus jefes en particular. Pero esperad, antes de eso, un “mea culpa”… ¿Porqué los profesionales de la informática son tan despreciados en esta, una sociedad construida en base a su esfuerzo? Os diré mi opinión… Porque acostumbramos mal a nuestros clientes. Nos piden lo imposible y se lo damos, nos quejamos, nos revolvemos contra la ignoracia atrevida del que nos pide la luna pero finalmente cedemos y eso es lo que nos conduce inexorablemente a las mazmorras de nuestro propio talento.

Si alguien pide un presupuesto a un fontanero para que le ponga un grifo debajo de la cama (por estúpido que eso sea) y consigue un profesional que no se descojone de su ocurrencia y le de el presupuesto lo más normal es que consiga su grifo y nada más. Imaginemos la conversación:

  • Cliente: ¿Qué es esto que me has puesto aquí?
  • Fontanero: un grifo
  • Cliente: pero está debajo de la cama, ¿cómo voy a poder usarlo así?
  • Fontanero: es lo que pidió
  • Cliente: si, claro, pero es de sentido común que un grifo debajo de la cama debe tener algo que permita que se use desde encima de la cama
  • Fontanero: eso no es mi problema
  • Cliente: venga, no me vengas con esas, un grifo que no se puede usar no te lo voy a pagar.
  • Fontanero: es lo que has pedido y es lo que tienes que pagar
  • Cliente: ya, pero al menos harás que se pueda usar desde la cama
  • Fontanero: solo tienes que bajar de la cama y amorrate al caño
  • Cliente: eso no es práctico
  • Fontanero: ya ¿y?
  • Cliente: venga, me haces un apaño para que pueda usarlo desde la cama y luego te contrato la pila del baño
  • Fontanero: ni de coña, aquí tiene la factura.
  • Cliente: bueno, vuelve dentro de un mes y te pago junto con el resto de..
  • Fontanero: ahora
  • Cliente: esto…
  • Fontanero: ¿Pagas o me llevo el grifo y se te inunda la casa?

Bueno, algo así… Los clientes suelen ser más razonables con los fontaneros que con los informáticos, porque, total, seguro que a los informáticos les gusta hacer mal su trabajo y no ponen todas las cosas que tienen que poner porque son vagos.

¡Pues no!

Los informáticos, y los programadores principalmente, son héroes. Gente que consigue lo imposible, que cumple con requisitos inverosímiles, que estira el tiempo disponible hasta lo absurdo para conseguir terminar algo que, probablemente, luego sea mal juzgado por algún ignorante en la materia. Los programadores más experimentados crean obras de arte en unas líneas de código que, aunque podrían ser admiradas en museos donde otros programadores no puedan más que deshacerse en halagos, al final son ejecutados una vez por alguien que no está preparado ni para programar una lavadora y obtienen un comentario estúpido sobre el número de clicks que hay que hacer… Estos héroes anónimos mueven nuestro mundo, allí donde mires hay un programa que escribió alguien, que hace más sencilla tu vida, o que te permite hacer cosas impensables hace solo unos años. Estos héroes sin nombre que, por lo menos en España, están mal pagados, mal vistos (como si picar código al azar en un editor fuese programar), mal dirigidos por gente sin criterio y sin empatía. Formando parte de hojas excel que los mide en kilos de carne y los vende y los compra a otros patanes con ínfulas que creen que hacer informática es un simple problema de coste.

Por todo ello, amigo gerente, si alguna vez un programador te intenta explicar lo difícil que es conseguir algo, entiéndelo como un cumplido que te hace intentando dejar que veas una porción pequeña de su complejo mundo interior. Intenta comprender que no te está intentando dar una excusa, sino describiéndote el peligroso campo de batalla en el que va a meterse en tu nombre y dar hasta su última gota de sudor y sangre para acabar con el enemigo y conseguir esa funcionalidad que tu describes en una frase pero que eres completamente incapaz de explicar en sus detalles (o, simplemente, no quieres hacerlo por pereza).

Día a día, proeza a proeza, sin parar, sin esperar recompensa, sin aparecer en los libros de historia (ni siquiera viendo reconocida su propiedad intelectual muchas veces), el programador anónimo sigue siendo el motor de esta sociedad y, desde aquí mi más sincero agradecimiento a todos ellos. Y, por favor, dejad de tratar a los gerentes como niños, que ellos no quieran escuchar los problemas no significa que estos no estén ahí y que merezcan verlos con sus ojos… Igual así despiertan y os empiezan a tratar como lo que sois, los nuevos magos de la tecnología moderna.