25 de Enero, 2009

Pasarela de correo a Twitter/Identi.ca

Hasta hace poco utilizaba una aplicación Java bastante sencilla para enviar updates de foma esporádica desde mi móvil a mi cuenta de twitter. No era muy caro (el precio de un MMS), y tampoco lo usaba con mucha frecuencia, así que estaba bien.

Cuando empecé a usar en casa Gwibber y también le di algo de vida a mi cuenta en identi.ca (por cierto, han actualizado el sofware que mueve el sitio y tiene muchas novedades interesantes), pensé que quizás sería interesante enviar los updates también a esa cuenta.

Además, con la tarificación que tenía, lo ideal es que fuera en el mismo paso (para no pagar dos veces), así que me puse a buscar y no encontré clientes Java2ME que enviaran a los dos servicios (¡solo enviar!), con lo que le dediqué un rato a una solución DIY.

Total, tontería. Porque ahora resulta que Orange me ha cambiado la tarificación a lo que ellos llaman tarifa de datos básica, de la cual no hay información en su web (o no la he sabido encontrar), e incluso sus teleoperadores tienen dificultades para explicar.

Resumiendo: te cobran 1€ al día hasta consumir 10MB (luego aplica otra tarifa que no conozco), así que da igual que hagas un POST, mandes un correo electrónico, naveges con WAP, o lo que sea: te facturan 1€ en la primera conexión (aunque sean 16KB; que es la media de un update vía POST), y ya puedes hacer las conexiones que quieras ese día (con esa media salen unos 640 updates al día).

La verdad es que estoy decepcionado con este cambio, además sin avisar, pero mi solución para enviar ya está hecha, así que la comento por aquí por si a alguien le interesa.

Pasarela de correo a microblogging: mail2mb.pl

Para implementar esta pasarela es necesario:

  • Acceso a los aliases de un sistema tipo UNIX que pueda recibir correos. Yo trabajo con OpenBSD y este servidor.
  • Un usuario en el sistema, con acceso a su $HOME.
  • Una instalación sana de Perl y los módulos: Email::MIME, XML::Simple y Net::Twitter.

    El módulo XML::Simple se usa para la configuración y se puede prescindir de él, y se pueden añadir otros módulos fácilmente para soportar otros servicios de microblogging. Para identi.ca usaremos su API compatible con la de Twitter.

Una vez satisfechas las dependencias, añadimos un alias en /etc/mail/aliases con una dirección secreta a donde enviaremos los updates (no olvidemos ejecutar newaliases cuando acabemos):

# identi.ca / twitter post
post.7498260: "|/usr/local/bin/mail2mb.pl -u usuario -f 'remitente@midominio\.dom'"

En este alias indicamos que el correo lo va procesar nuestro script mail2mb.pl, que el usuario local del que leer la configuración es usuario y que solo aceptaremos updates que se ajusten a la expresión regular 'remitente@midominio\.dom'.

La verdad es que se podría haber simplificado mucho el programa, pero como no quiero que se envíen updates con el usuario que corre el servidor de correo, se llevan a cabo estos pasos:

  • El proceso hace un setuid al usuario local (si nuestro servidor de correo no corre como root; necesitaremos instalar el problama con el bit suid puesto en sus permisos). De esta forma evitamos posibles problemas de seguridad limitando el riesgo al usuario local (sin privilegios, no será root :P).
  • Se toma la configuración de /home/usuario/.mail2mbrc, donde indicamos usuarios y contraseñas de los servicios a donde enviar el update.

Creamos entonces en nuestro usuario local un fichero XML con los siguientes elementos (no olvidar hacer un chmod 0600 si hay más usuarios con cuenta en el sistema):

<mail2mb>
        <twitter>
                <user>twitt_user</user>
                <password>secret1</password>
        </twitter>
        <identica>
                <user>identi_user</user>
                <password>secret2</password>
        </identica>
</mail2mb>

Si no queremos usar uno de los dos servicios soportados, pues no ponemos esa parte de la configuración (aunque me parecería una tontería, ya que el objetivo de la pasarela es enviar a ambos servicios a la vez).

Ahora solo nos queda mandar un correo al alias indicado, usando como remitente la cuenta autorizada, y el cuerpo del mensaje se enviará a los dos servicios (ojo que se limita a 140 caracteres por envío :D). Funciona desde cualquier dispositivo capaz de enviar correos electrónicos (incluído mi móvil, aunque Orange garantiza que no lo usaré si no es para eventos en los que quiera retrasmitir durante todo el día, en cuyo caso el euro estaría bien invertido :D).

Al final a resultado un poco decepción, porque usando módulos de CPAN la diversión queda muy reducida :P. ¡He tardado más en escribir esta anotación que en desarrollar la pasarela!

Anotación por Juan J. Martínez, clasificada en: identi.ca, perl, twitter.

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.

Algunas anotaciones relacionadas: