El extraño caso del e-mail de las 500 millas

Repasando correos viejos (si, guardo todos los recibidos desde 1995) he encontrado un mensaje que recibí en la lista de Sage en el 2002, donde se relata uno de los casos más curiosos que he visto en todos estos años. Paso a traducirlo, según el relato del “sufridor” de esta pintoresca historia.

Espero que os guste 😉


From: trey@sage.org Fri Nov 29 18:00:49 2002
Date: Sun, 24 Nov 2002 21:03:02 -0500 (EST)
For: sage-members@sage.org
Subject: El caso del email de las 500 millas

He aqui un problema que parecía imposible… Casi me arrepiento de postear esta historia a una audiencia tan amplia, porque es una historia genial para contarla tomando unas copas en una conferencia 🙂

La historia está alterada ligeramente con el fin de proteger al culpable, evitar detalles irrelevantes y aburridos, y en general para hacerla más entretenida.

Estaba trabajando administrando el sistema de correo del campus hace algunos años, cuando recibí una llamada del Director del Departamento de Estadística.

– “Tenemos problemas para enviar correo fuera del Departamento”
– “¿Cual es el problema?” Pregunté
– “No podemos enviar un correo a más de 500 millas”, explicó el director. Casi me ahogo con el café.
– “¿Puede repetirme eso?”
– “No podemos enviar correo a más de 500 millas de donde estamos”, repitió. “Para ser más concreto, digamos que a 520, pero no más allá”.
– “Uhm… el correo electrónico no funciona así” respondí, tratando de evitar la tensión al hablar. Uno no puede demostrar tensión cuando se habla con el Director de un departamento, y menos cuando se trata de uno como es Estadística.
“¿Que le hace pensar que no puede enviar un email a más de 500 millas?”
– “No es algo que piense” contestó el Director. “Verá, hace un par de días que nos dimos cuenta de esto”
– “¿Que esperaron un par de DIAS?” le interrumpí. “¿Y no han podido enviar correo todo este tiempo?”
– “Podíamos mandar correos, pero no a más de…”
– “…500 millas, si”. Terminé la frase por él. “Me hago a la idea. Pero ¿porqué no llamó antes?”
– “Verá, es que no habíamos podido recopilar información suficiente para estar seguros de lo que pasa hasta ahora”

Perfecto, se notaba que era el Director del Departamento de Estadística.

– “En cualquier caso, le pedí a uno de los geoestadísticos que le diera un vistazo”
“Geoestadísticos…”
-”Si, y nos hizo un mapa que mostraba el radio dentro del cual podemos enviar correo, al ser ligeramente inferior a las 500 millas. De todos modos, hay algunos destinos dentro de ese radio que no se alcanzan o que lo hacen esporádicamente, pero en ningún caso podemos hacerlo más allá del radio”.

500millas

-” Ya veo…” y en ese momento me eché las manos a la cabeza.
“¿Cuando empezó a suceder esto? Antes me dijo que un par de días antes, pero… ¿ha cambiado algo es sus sistemas en ese tiempo?”
– “Bueno, el técnico vino, parcheó nuestro servidor y luego lo reinició. Pero le llamé y me dijo que no había tocado el servicio de correo”.
– “Bien, déjeme darle un vistazo y le llamaré”, le dije pensando que me estaba gastando una broma.

Pero no era el Día de los Inocentes. Intenté recordar si alguien me estaba devolviendo una broma.

Así que entré en el servidor departamental y envié unos correos de prueba. Probé dentro del triágulo de Carolina del Norte; incluso envié alguno a mi cuenta sin mayores problemas. Lo mismo ocurrió con los que envié a Richmond, Atlanta y Washington.

Envié otro a Princeton (a 400 millas) y funcionó.

Pero cuando intenté enviar un correo a Memphis, a 600 millas, falló.
Boston, falló.
Detroit, falló.

Abrí la libreta de direcciones y comencé a concentrarme en el asunto.
Nueva York, a 420 millas, funcionó.
Providence, a 580 millas, falló.

Estaba empezando a pensar que había perdido la cabeza.

Intenté enviar un correo a un amigo que vivía en Carolina del Norte, pero que tenía su ISP en Seattle. Afortunadamente, falló.

Si el problema hubiese tenido que ver con la localización geográfica del receptor, y no con su servidor de correo, seguramente me habría puesto a llorar desconsoladamente. Habiendo establecido que, increíblemente, el problema era cierto y reproducible, le di un vistazo al archivo de configuración del servidor de correo Sendmail.

Parecía completamente normal, y hasta me resultaba familiar. Así que hice un diff con el archivo sendmail.cf que tenia en mi directorio personal para encontrar diferencias: no había ninguna. Era la configuración que yo había escrito, y estaba bastante seguro de no haber activado la opción “ERROR_DE_CORREO_A_MAS_DE_500_MILLAS”.

Entonces me decidí a hacer un telnet al puerto SMTP (25) del servidor. Este me respondió con el banner de Sendmail para SunOS.

Un segundo… ¿un banner de sendmail SunOS? En esa fecha Sun todavía instalaba Sendmail 5 en su sistema operativo, cuando Sendmail 8 ya era bastante veterano.

Personalmente, como buen administrador de sistemas, había estandarizado todos los servidores a Sendmail 8. Incluso había escrito un archivo de configuración utilizando las opciones de auto-documentación y las variables que ya estaban disponibles en Sendmail 8 en lugar de las complejas opciones que se usaban en Sendmail 5. El puzzle empezaba a encajar, y de nuevo casi me atraganto con los restos de mi café, ya frío.

Cuando el técnico “parcheó el servidor”, aparentemente actualizó la versión de SunOS a una superior y al hacerlo bajó la versión de Sendmail.

La actualización, por suerte, había dejado el archivo de configuración. Lo que sucedía era que Sendmail 5, o al menos en la versión distribuida por Sun, tenía algunas modificaciones y mejoras y podía interpretar la configuración de la versión 8 excepto por las nuevas opciones, que se interpretaban como basura y por tanto se ponian a cero.

Una de esas opciones que estaban a cero, era el tiempo de espera para conectarse a un servidor SMTP remoto. Después de algunos experimentos, pude establecer que un timeout=0 abortaría una conexión en 3 milisegundos. En aquella época, el campus de la universidad donde trabajaba era de los primeros que trabajaba con switches, así que un paquete saliente no comenzaría a contabilizar el tiempo de espera hasta que llegase al router del destinatario.

De esa forma, para conectarse con un servidor remoto sin carga, en una red cercana estaría más afectado por la velocidad de la luz que por algún retraso ocasional del router.

En resumen: en esos 3 milisegundos, el correo alcanzaría 500 millas, más o menos.

Trey Harris