19 noviembre 2016

Errores de programación: no te fíes siempre de la documentación

Hoy vengo con algo que no es estrictamente un error de programación, sino, más bien de especificaciones.

Estoy trabajando en un código PhP que lea correos de una cuenta POP3 normal y corriente. Creo la cuenta siguiendo las instrucciones del proveedor, el cual indica que sus correos están protegidos por SSL y dice que hay que usar el puerto 993 para el protocolo IMAP y el 995 para el POP3.

Con toda inocencia, me quiero conectar al servidor de correo usando la función imap_open, utilizando como nombre del servidor:

{Servidor de correo del proveedor:993/imap/ssl}INBOX

Como ya soy programador viejo, me digo a mí mismo: "esto no va a funcionar". En efecto. Mi servidor se queda pensando y pensando y se queda la página en blanco. Después de varias ediciones del código, descubro que al poner la ruta en el navegador, en vez de, por ejemplo, email.php había puesto emaiil.php (dos "i") y el servidor en vez de tener el detalle de decirme "página no encontrada", intentaba ejecutarla y me daba una pantalla en blanco.

Cuando escribo correctamente el nombre del php, lo que me salta es "Error 500" porque el "script" estaba tardando mucho tiempo. Y yo sin saber qué pasaba, aunque sospeché que imap_open trataba de abrir el buzón y como algo lo bloqueaba, acababa excediendo el tiempo límite.

Después de muchas vueltas, decido intentar entrar por Telnet (que en los Windows nuevos ya no está instalado por omisión y hay que instalarlo). En Telnet, imap en el puerto 993 o pop3 en el 995 no entran; el servidor te echa. O es un problema con el ssl o con el certificado del servidor (o que este te rechaza si entras desde fuera, que de todo te encuentras en estas redes). Intento las opciones /notls y /novalidate-cert, lo que resulta inútil, y se me ocurre intentar la entrada por los puertos 143 y el 110, los estándar si no hay ssl.

Al final, funcionó el 110 con pop3...

Moraleja: diga lo que diga el dueño del servidor, si no puedes entrar a la primera, prueba las configuraciones por omisión, las de toda la vida y luego, si te interesa, rómpete la cabeza para que entren las que el proveedor de servicios te dice.

Moraleja 2: usar telnet te hace sentir poderoso... puedes leer un buzón de correo hablando directamente con el servidor (tú le das órdenes y el responde OK). Resulta gratificante, parece que eres un experto en ordenadores y todo.