2011-08-25 15 views
3

J'utilise OpenSSL pour me connecter au serveur de messagerie. Si vous utilisez pop3 - tout fonctionne très bien.Comment connecter IMAP en utilisant AUTHENTICATE PLAIN correctement?

Mais, j'ai des problèmes avec le travail IMAP. Lorsque j'utilise la commande CAPABILITY - le serveur me renvoie, qu'il prend en charge: PLAIN, NTLM, méthodes GSS-API pour s'authentifier. Je veux utiliser PLAIN, parce que c'est plus facile, que d'autres ... J'ai lu, qu'il est nécessaire d'utiliser pour cela. J'ai exécuté les prochaines variations, mais sans succès: ? connexion utilisateur passe ? connexion userpass ? connexion userpass

Qu'est-ce que je fais de mal?

S'il vous plaît, donner un conseil,

Cordialement

Répondre

-1

? se connecter [email protected] mypassword \ r \ n

souvent des serveurs ne nécessitent pas partie « @ box.zone », vous pouvez simplement taper connexion

+3

Connaissez-vous ou êtes-vous la même personne que l'OP? Je veux dire, vous répondez à une question vieille de 6 mois, en utilisant des éléments de réponses qui ne sont même pas discutés dans la question, et cela est accepté dans les 2 minutes ... Ça ne me dérange pas du tout si c'est la bonne réponse semble juste sortir de nulle part. – Bruno

+0

Si le nom d'utilisateur doit être 'mymailbox' ou' mymailbox @ domain' est purement une décision administrative/d'implémentation côté serveur. Il est généralement utile pour les administrateurs de serveur que leurs noms d'utilisateur soient l'adresse de messagerie complète lorsque le même serveur est utilisé pour plusieurs domaines. – Bruno

2
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. 
21

Aucune des réponses précédentes réellement dit comment à utiliser Authentification PLAIN, donc j'ai creusé un peu plus. Il s'avère que les informations d'authentification sont attendues dans base64. Il est probablement plus facile d'expliquer par l'exemple. Supposons un nom d'utilisateur de "bob" et un mot de passe de "munchkin".

Nous devons d'abord encoder en base64. Sur un système Linux-ish, il va aime ça:

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

Ce intègre les caractères nuls au besoin, et fait également l'encodage base64. Nous obtenons cette chaîne: AGJvYgBtdW5jaGtpbg==.

Maintenant, nous pouvons faire l'authentification réelle (S = serveur, C = Client):

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 

Et vous avez terminé!

Questions connexes