imap en tiempo real

20 de enero de 2009

Hoy me he visto en la necesidad de descubrir si el servidor IMAP de Zimbra tiene disponible una característica que se llama IMAP idle (o IMAP push o mail push). Las versiones más modernas de IMAP la tienen por defecto. Este es el caso de Cyrus en Zimbra. No he podido verificarlo en Courier o Dovecot.

El caso es que esta característica o mejor dicho, esta extensión del protocolo IMAP definido en la RFC2177 permite al servidor IMAP enviar una señal al cliente cuando este reciba un correo electronico en su buzón. Es decir, no hace falta configurar el cliente de correo para que revise el buzón cada X minutos. Si tenemos IMAP con idle esto no hace falta porque el servidor ya avisará al cliente. En el caso de Outlook 2003 esta opción se la pasaba por el forro y no hacia caso a la señal de idle que le llegaba del servidor. En Thunderbird esto no pasa. En el momento que el servidor le envía la señal, este lanza el popup con el aviso de nuevo correo.

Para averiguar si tu servidor de correo tiene IMAP idle basta con conectarse por telnet al 143 y preguntar por las capabilitys:



También tenéis un pantallazo del flujo de paquetes TCP/IP que manda el servidor al cliente para avisarle de la llegada de un nuevo mensaje. El primer paquete que llega es de 192.168.x.x que es el servidor IMAP. El que primero inicia la comunicación es el servidor y no el cliente.



Este tipo de comunicación es muy interesante por ejemplo para los mensajes a foros donde se contestan y responden preguntas constantemente, o por ejemplo para implementar un chat utilizando el protocolo IMAP.

Más información:
+ RFC2177
+ Cyrus & imap idle en zimbra