Я использую OpenSSL для подключения к почтовому серверу.
POP3 работает нормально, но у меня проблемы с IMAP. На основе команд CAPABILITY сервер поддерживает методы аутентификации PLAIN, NTLM и GSS-API.
Я хочу использовать PLAIN, потому что это проще, чем другие. Я прочитал, что для этого нужно использовать <NUL>
.
Я пробовал следующие варианты, но безуспешно:
? login user pass
? login <nul>user<nul>pass
? <nul>login <nul>user<nul>pass
Что я делаю не так?
3 ответа
? войти в систему mymailbox@box.zone mypassword \ r \ n
Часто серверам не требуется часть "@ box.zone", вы можете просто ввести логин
Ни в одном из предыдущих ответов на самом деле не говорилось, как использовать обычную аутентификацию, поэтому я еще немного покопался. Оказывается, аутентификационная информация ожидается в 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
И вы сделали!
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.
Похожие вопросы
Новые вопросы
imap
Протокол приложения интернет-сообщений (обычно известный как IMAP) является одним из двух наиболее распространенных стандартных интернет-протоколов для поиска электронной почты, другим является протокол почтового отделения (POP).