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 [email protected]
        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 [email protected]
        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…

 

Experimentando con cordova

Llevo tiempo desarrollando aplicaciones para móviles, las más conocidas para BiblioEteca, otras propias que no he llegado a sacar al market y otras encargadas por terceros. He vivido todas las épocas, desde el más terrible de los SDK para Android hasta la penosa situación de tener que aprender objective c y limpiar la memoria cada vez que hacía cualquier cosa en ios… Como he comenzado desde los avernos (incluso programé en J2ME, tenéis que creerme), el uso de tecnologías que permiten la multiplataforma en móviles es algo que me atrajo desde el primer momento. Dicho y hecho, había que probar alguna estas «nuevas» tecnologías en algún proyecto… Y como no tenía ninguno a mano, pues me inventé un jueguecito para perder el tiempo. Hoy os presento el resultado y en próximas entradas os explicaré un poco los puntos principales de trabajar con «una capa más» encima de nuestros desarrollos…

imagen-promocionalPega al Rubius… Un juego para desahogarse dando de leches a mi youtuber de cabecera (mis hijos están suscritos a su canal).

Como veréis se puede jugar incluso en el navegador .. Y debería poderse jugar también en los teléfonos de Microsoft, pero no he conseguido hacer funcionar los simuladores en máquinas virtuales (ni reales), y no he conseguido que me lo prueben en un teléfono real, por lo que no he intentado siquiera subirlo a su tienda… Cualquier comentario es bienvenido.

Pega al Rubius

Buenas, criaturitas del señor…!

Si te suena esa frase ya sabes quien es El Rubius, un youtuber de moda, con millones de seguidores y una cohorte de fans envidiable. Cada video suyo, que inevitablemente suele ser entretenido, tiene millones de visualizaciones y el dinero de YouTube corre como un reguero por sus bolsillos.

En suma, un jovenzuelo que se ha hecho de oro sin tener oficio ni beneficio y que, a mi, particularmente, me está empezando a caer mal. Lo digo desde la envidia más absoluta y desde la perspectiva de alguien que trabaja 14 horas diarias para conseguir una cantidad mísera de dinero. Total, que me ha dado el calentón y me he puesto a programar un juego para poder desahogarme y, como no, el juego se llama: «Pega al Rubius«.

rubius-01Por ahora está en pruebas en la tienda de google: En este enlace. También tengo versión para IOS (mandadme un email si queréis probar la beta) y estoy probando también (esto es un alfa sin terminar) una versión para Windows Phone, que podéis descargaros en Este enlace.

En cuanto esté listo lo sacaremos a las distintas tiendas… A ver cuanto dura. No creo que Rubén (El Rubius) pueda quejarse de que se use su imagen, o su voz, porque él siempre ha utilizado materiales ajenos, música, voz, personajes, videojuegos, sin pedir permiso… Claro, que cualquiera sabe.

Eso si, estoy aprendiendo un montón de Apache Cordova… Eso os lo contaré un poco más adelante.

Entrando al mundo 3D a lo barato…

Hace tiempo que sigo la tecnología de impresión 3D y siempre he deseado tener una de esas maquinas que permiten «hacer sólidos los sueños», se han oído tantas cosas de gente que se creaba cosas utilísimas con sus impresoras 3D que un gusanillo voraz anidó en mi mente y me repetía «quiero una», «quiero una»… Pero el precio era demasiado caro para mi (y más en las circunstancias actuales). Pero, mira tu por donde, visitando una página de ecommerce china (aliexpress) me encuentro que ofrecen un kit para montarte una impresora 3D por menos de 300 Euros. ¿Será verdad?

Dicho y hecho, me envalentono y decido hacer el pedido, total, siempre he querido poder hacer prototipos para los aparatos que me invento… Y esta podría ser la oportunidad para ello. Hago el pedido un día 2 de Agosto y espero pacientemente… Dos semanas después una llamada desde la aduana me indica que ya está aquí el paquete y que ¡tengo que pagar 70 Euros de aranceles e impuestos!.. Umm, aún así queda mejor de precio que otros kits que venden aquí… Pago y recibo esto:

IMG_20150813_180211No parece demasiado, así que después de comer me voy a la oficina (es allí donde hice mandar el paquete) y me dispongo a hacer el montaje… Previamente me había informado en un par de vídeos de youtube (este y este) que me sirvieron bastante para hacerme una idea del montaje. Así que me pongo a desembalar y me encuentro esto:

IMG_20150813_183234Amén de la fuente de alimentación, la placa de control y el marco principal que no salen en la foto… Uff! me espera una larga tarde de trabajo.

Siete horas después (a eso de la una de la noche) ya he conseguido montarla completamente. La verdad es que es mucho más instructivo el vídeo que incluye el fabricante que los vídeos de youtube, salvo en la parte de conectar los cables que viene escondida en un archivo adicional (que encontré después de haber terminado el montaje). El caso es que queda así:

IMG_20150814_005029¡Vaya! parece que está cogida con pinzas… Pero bueno, lo importante es que funcione. Esa misma noche me atrevo a enchufarla y a probar a mover los ejes… ¡Y funciona! Vale ya tenemos impresora… ¿y ahora qué? Bueno, he perdido (si, perdido) como un mes intentando hacerla funcionar correctamente… En próximos post lo iré contando con más calma… Por ahora a disfrutar de la imagen de siete horas de trabajo.

Por cierto, el modelo exacto es una «Sunhokey Prusa i3 – modelo 2015» (os dejo el enlace a donde la compré yo).

El estress del cambio

En concreto del cambio de compañía de telecomunicaciones… Estos meses pasados he tenido la experiencia de cambiar de compañía de internet para mi casa y de compañía de móviles en la empresa… Y me ha dado mucho miedo.
transmissão-de-dados-através-de-fibra-ótica-500x260
En mi casa tenía ONO, anteriormente tuve Orange (cuando la contraté era wanadoo) y en cuanto me llegó la oportunidad de los 100Mb me tiré de cabeza y la contraté. Dado que seguía teniendo la línea con Telefónica (cosas históricas) al final tuve dos conexiones activas, la de ONO por cable y la de Orange por ADSL, las dejé así un par de meses por si acaso y cuando decidí darme de baja de Orange me pusieron muuuchas pegas. Que si tienes que mandar un FAX, que si tienes que poner chopocientos datos en el escrito, que si el plazo está fijo pero tu no vas a poder saber cuando te damos de baja… Pero bueno, terminé por darme de baja y solo me cobraron un poquito más. Y así, tan feliz estaba yo con ONO (con una conexión que mi hijo definía como «lagueada» y que, ciertamente, tenía sus más y sus menos) cuando me llamó Jazztel ofreciéndome 200Mb simétricos de fibra en casa por menos de lo que estaba pagando por ONO.

Sin pensármelo demasiado accedí a la oferta… No solo no perdía nada, sino que me ahorraba dinero en el cambio. Todo ventajas.

El operario vino más o menos a la hora en la que habíamos quedado, me preguntó si quería quitar la instalación de ONO (le dije que no, aunque si que me desconectó el teléfono) y consiguió llevar la fibra hasta mi mismo salón. Lo dejó todo montado, me enseñó en su portatil una prueba de velocidad que casi llegaba a los 200Mb (breve, porque se quedó sin batería) y no pude hacer yo más pruebas porque tenía prisa y tenía que hablar con alguien de Jazztel por teléfono.. Bueno, no pasa nada. En cuanto se fue me puse yo a hacer las pruebas y… Unos decepcionantes 60Mb en el mejor de los casos (y eso conectado directamente al router por gigabit)… Esto no me olía bien. Total, lo dejé pasar por si era cosas de sus redes.

Al día siguiente me llamó ONO al haber recibido la solicitud de portabilidad. Y, ¡oh sorpresa! me hace una oferta muchísimo mejor que la que tenía, 200Mb por la mitad de precio de lo que tenía antes… Eso si, tenía que decirle a Jazztel que desistía de la instalación. Me daba palo, pero bueno, vamos a intentarlo. A la primera me intentan pasar desde ONO con Jazztel y no lo consiguen. Vuelve a llamarme ONO y me dice que no han recibido la cancelación de Jazztel y que si había hablado con ellos. Les digo que no y entonces me sueltan una historia para no dormir sobre BOEs, leyes de consumo, que no pueden cobrarme nada por desistir y hasta me dictan un FAX para el desestimiento (lo tengo por ahí todavía), el caso es que estavez si que me pasan con Jazztel y ahí empieza la parte desagradable… La señorita de Jazztel me dice que nada, que la instalación está hecha y que tendría que pagarla si hago el desestimiento (y una pasta gansa), le explico que tampoco es que me estén dando los 200Mb y me cuenta no-se-que-milonga de que todavía no soy cliente del todo hasta que se haga la portabilidad y que luego ya sería una cuestión técnica… Todo muy desagradable, pero bueno, dado que no quería pagar de más y la instalación ya estaba hecha decidí seguir adelante con la portabilidad.

Me vuelve a llamar ONO, me dicen que denuncie a Jazztel por intentar cobrarme lo de la instalación, que la ley está conmigo y que blah, blah, blah… Ya estoy harto. He perdido toda la mañana y parte de la tarde discutiendo con operadores sobre la portabilidad. Empiezo a sentirme como un cliente-objeto. Pero bueno, espero a que me confirmen la portabilidad y vuelvo a casa a volver a hacer las pruebas de velocidad… Nada, esto no da 200Mb ni para atrás. Llamo al servicio técnico, les explico la situación y mientras hablamos me dice ¿Está llamando desde esa línea? Les digo Sí… La línea enmudece, tutututututut… Y el test de velocidad se dispara. ¿seguro que era un problema técnico?

Captura de pantalla de 2014-12-05 15:44:11

En resumen, y no me alargo más, las operadoras se han especializado en hacer sufrir a los clientes que se van y a intentar evitarlo a toda costa, la verdad, me ha parecido todo muy desagradable e innecesario… Menos mal que el cambio de operador móvil fue más sencillo (ya os contaré).