Я пытаюсь подключиться к нашему серверу обмена с помощью Mail :: IMAPClient, но у работающего скрипта возникли проблемы, когда я переместил его с рабочего стола временного разработчика, работающего под управлением Ubuntu, на новый dev env, работающий с Centos. В течение этого времени я обнаружил, что сервер обмена был обновлен, я думаю, до 2010 года. Есть ли в обмене параметр, позволяющий обрабатывать команды только с помощью перевода строки, а не требовать crlf, или это может быть локальная система (с проблемой сценария)?
Это просто через некоторое время.
$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
Команды будут работать правильно.
$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
[Решение]
Попытался установить ssl-соединение вручную с сервером, используя openssl.
Мне пришлось включить опцию -crlf, чтобы exchange мог распознать завершение IMAP-команд.