2011-12-30 5 views
5

Sto tentando di connettermi al nostro server di scambio usando Mail :: IMAPClient ma uno script che stava funzionando sta avendo problemi quando lo ho spostato da un desktop di sviluppo temporaneo che esegue ubuntu a un nuovo centro di sviluppo. Durante quel periodo ho scoperto che il server di scambio è stato aggiornato credo nel 2010. Esiste un'impostazione in cambio che consentirebbe l'elaborazione di comandi con linefeed anziché richiedere crlf o potrebbe essere un sistema locale (eseguendo il problema degli script)?Problema di caricamento riga di ritorno della connessione IMAP da Linux?

Questo appena fuori dopo un po '.

$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 

I comandi funzionavano correttamente.

$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 

[Soluzione:]
provato a fare una connessione SSL manuale al server utilizzando OpenSSL.
Ho dovuto includere l'opzione -crlf in modo che lo scambio potesse riconoscere i comandi IMAP che terminano.

risposta

2

Il protocollo IMAP richiede il client e server da utilizzare \ r \ n. Lo scambio si comporta correttamente (che non è quello comune).

+0

Interessante Non ho letto l'RFC se IMAP lo richiedesse o meno. Grazie per le informazioni. – LF4

7

È in section 2.2 di RFC3501, ma fa parte della panoramica.

Tutte le interazioni trasmesse dal client e dal server sono sotto forma di righe, cioè stringhe che terminano con un CRLF.

Si noti che non c'è "DEVE" nella clausola.

Dovecot e altri server IMAP sono più liberali su ciò che accettano, in termini di ciò che costituisce un EOL.

"Correctness" è relativo. Se non c'è alcuna clausola MUST o SHOULD, è generalmente accettato che "essere liberale in ciò che si accetta e rigoroso in ciò che si invia" è il modo migliore per implementare le RFC.