IMAP соединение каретки возврата строки из linux? - PullRequest
5 голосов
/ 30 декабря 2011

Я пытаюсь подключиться к нашему серверу обмена с помощью 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-команд.

Ответы [ 2 ]

7 голосов
/ 20 февраля 2013

Это в разделе 2.2 RFC3501, но это часть обзора.

Все взаимодействия, передаваемые клиентом и сервером, имеют форму строк, то есть строкчто заканчивается CRLF.

Обратите внимание, что в предложении нет слова "MUST".

Dovecot и другие серверы IMAP более либеральны в отношении того, что они принимают, с точки зрения того, чтосоставляет EOL.

«Правильность» относительна.Если нет условий ОБЯЗАТЕЛЬНО или СЛЕДУЕТ, общепризнанно, что «быть либеральным в том, что вы принимаете, и строго в том, что вы отправляете» - это лучший способ продвижения вперед при реализации RFC.

3 голосов
/ 14 апреля 2012

Протокол IMAP требует клиента и сервера для использования \ r \ n.Exchange ведет себя правильно (что не так часто).

...