2011-12-30 19 views
5

Estoy intentando conectarme a nuestro servidor de intercambio usando Mail :: IMAPClient, pero una secuencia de comandos que funcionaba estaba teniendo problemas cuando la moví de un escritorio de desarrollo de software que ejecutaba ubuntu a un nuevo dev env ejecutando centos. Durante ese tiempo descubrí que el servidor de intercambio se actualizó, creo que en 2010. ¿Hay una configuración a cambio que permita que los comandos se procesen solo con avances de línea en lugar de requerir crlf o podría ser un sistema local (ejecutando el script)?IMAP connection carriage return line issue issue from linux?

Esto simplemente agota después de un tiempo.

$openssl s_client -connect myhost.mydomain.net:993 
... 
* OK The Microsoft Exchange IMAP4 service is ready - 'myhost' 
? login username password 
* BYE Connection is closed. 13 
read:errno=0 

Los comandos funcionarían correctamente.

$openssl s_client -crlf -connect myhost.mydomain.net:993 
... 
* OK The Microsoft Exchange IMAP4 service is ready - 'myhost' 
? login username password 
? OK LOGIN completed. 
? select inbox 
* 4 EXISTS 
* 0 RECENT 
* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) 
* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent  flags 
* OK [UNSEEN 3] Is the first unseen message 
* OK [UIDVALIDITY 169533] UIDVALIDITY value 
* OK [UIDNEXT 132] The next unique identifier value 
? OK [READ-WRITE] SELECT completed. 
1 logout 
* BYE Microsoft Exchange Server 2010 IMAP4 server signing off. 
1 OK LOGOUT completed. 
read:errno=0 

[Solución:]
tratado de hacer una conexión SSL manual al servidor utilizando OpenSSL.
Tuve que incluir la opción -crlf para que el intercambio pudiera reconocer el final de los comandos IMAP.

Respuesta

2

El protocolo IMAP requiere el cliente y servidor para usar \ r \ n. Exchange se comporta correctamente (que no es tan común).

+0

Interesante No leí el RFC si IMAP lo requería o no. Gracias por la info. – LF4

7

Está en section 2.2 de RFC3501, pero eso es parte de la descripción.

Todas las interacciones transmitidas por el cliente y el servidor son en forma de líneas, es decir, cadenas que terminan con un CRLF.

Tenga en cuenta que no hay "DEBE" en la cláusula.

Dovecot y otros servidores IMAP son más liberales sobre lo que aceptan, en términos de lo que constituye una EOL.

"Corrección" es relativo. Si no hay una cláusula que DEBE o DEBERÍA tener, generalmente se acepta que "ser liberal en lo que acepta y estricto en lo que envía" es la mejor manera de avanzar cuando se implementan los RFC.