Я использую OpenSSL для подключения к почтовому серверу.

POP3 работает нормально, но у меня проблемы с IMAP. На основе команд CAPABILITY сервер поддерживает методы аутентификации PLAIN, NTLM и GSS-API.

Я хочу использовать PLAIN, потому что это проще, чем другие. Я прочитал, что для этого нужно использовать <NUL>.

Я пробовал следующие варианты, но безуспешно:

? login user pass
? login <nul>user<nul>pass
? <nul>login <nul>user<nul>pass

Что я делаю не так?

5
Secret 25 Авг 2011 в 18:28

3 ответа

Лучший ответ

? войти в систему mymailbox@box.zone mypassword \ r \ n

Часто серверам не требуется часть "@ box.zone", вы можете просто ввести логин

-6
user1131997user1131997 20 Янв 2012 в 14:53

Ни в одном из предыдущих ответов на самом деле не говорилось, как использовать обычную аутентификацию, поэтому я еще немного покопался. Оказывается, аутентификационная информация ожидается в base64. Это, наверное, проще всего объяснить на примере. Предположим, что имя пользователя «bob» и пароль «манчкин».

Сначала нам нужно закодировать в base64. В системе Linux это выглядит примерно так:

echo -en "\0bob\0munchkin" | base64

Это включает нулевые символы по мере необходимости, а также кодировку base64. Получаем такую ​​строку: AGJvYgBtdW5jaGtpbg==.

Теперь мы можем выполнить фактическую аутентификацию (S = Сервер, C = Клиент):

S: * OK The Microsoft Exchange IMAP4 service is ready.
C: D0 CAPABILITY
S: * CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN CHILDREN IDLE NAMESPACE LITERAL+
S: D0 OK CAPABILITY completed.
C: D1 AUTHENTICATE PLAIN
S: +
C: AGJvYgBtdW5jaGtpbg==
S: D1 OK AUTHENTICATE completed

И вы сделали!

33
lid 4 Янв 2013 в 13:59
May be this will help

/* RFC 4616.2. PLAIN SASL Mechanism.                
The mechanism consists of a single message, a string of [UTF-8]
encoded [Unicode] characters, from the client to the server.  The
client presents the authorization identity (identity to act as),
followed by a NUL (U+0000) character, followed by the authentication
identity (identity whose password will be used), followed by a NUL
(U+0000) character, followed by the clear-text password.  As with
other SASL mechanisms, the client does not provide an authorization
identity when it wishes the server to derive an identity from the
credentials and use that as the authorization identity.

message = [authzid] UTF8NUL authcid UTF8NUL passwd

Example:
C: a002 AUTHENTICATE "PLAIN"
S: + ""
C: {21}
C: <NUL>tim<NUL>tanstaaftanstaaf
S: a002 OK "Authenticated"
*/


IMAP not easy to code, literal string and xxx response formats ... .
It's easier to use some free IMAP client.
3
Ivar 26 Авг 2011 в 07:00